Для смены ключа шифрования базы данных создайте приложение «RekeyBase», в котором используются методы фреймворка:
Имя метода | Краткое описание |
openBase(path: String, key: String) | Метод выполняет открытие или создание базы данных. |
reKeyBase(path: String, new_key: String) | Метод выполняет смену ключа шифрования у открытой базы данных. |
Приложение состоит из одного экрана, текстового поля ввода ключа шифрования и кнопок:
«Open Database». Открытие базы данных;
«Rekey Database». Смена ключа шифрования базы данных.
Для выполнения примера:
Введите в текстовое поле первичный ключ шифрования базы данных и нажмите кнопку «Open Database».
При нажатии на кнопку происходит открытие соединения или создание базы данных с указанным первичным ключом. В текстовом представлении описывается результат выполнения метода.
Введите в текстовое поле новый ключ шифрования базы данных и нажмите кнопку «Rekey Database».
При нажатии на кнопку происходит смена ключа шифрования базы данных. В текстовом представлении описывается результат выполнения метода.
Введите в текстовое поле первичный ключ шифрования базы данных и нажмите кнопку «Open Database».
При нажатии на кнопку происходит закрытие предыдущего соединения с базой данных и попытка открытия нового соединения с первичным ключом. В текстовом представлении описывается результат выполнения метода.
Введите в текстовое поле новый ключ шифрования базы данных, который был указан в пункте 2, и нажмите кнопку «Open Database».
При нажатии на кнопку происходит закрытие предыдущего соединения с базой данных и попытка открытия нового соединения с новым ключом. В текстовом представлении описывается результат выполнения метода.
Код приложения:
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;
import com.mobrun.plugin.api.HyperHive;
public class ReKeyActivityJava extends Activity
{
private static final String TAG = ReKeyActivityJava.class.getSimpleName();
private HyperHive hyperHive;
@Override
protected void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
hyperHive = Util.INSTANCE.getHyperHive(this);
initView();
}
/**
* Инициализируем представления
*/
private void initView()
{
setContentView(R.layout.activity_rekey);
final EditText key = (EditText) findViewById(R.id.key); // поле с ключом
final TextView result = (TextView) findViewById(R.id.result); // текст с результатом
final String db_path = Util.INSTANCE.getDbPath(this) + "_rekeytest.sqlite"; // путь к базе данных
// Откроем базу данных
findViewById(R.id.btnOpen).setOnClickListener(v ->
{
final String response = "open : " + hyperHive.databaseAPI.openBase(db_path, key.getText().toString());
Log.d(TAG, "onClick() : open : " + db_path + " : " + response + " : " + key.getText());
result.setText(response);
});
// Установим новый ключ шифрования
findViewById(R.id.btnReKey).setOnClickListener(v ->
{
final String response = "rekey : " + hyperHive.databaseAPI.reKeyBase(db_path, key.getText().toString());
Log.d(TAG, "onClick() : rekey : " + db_path + " : " + response + " : " + key.getText());
result.setText(response);
hyperHive.databaseAPI.closeBase(db_path);
});
}
}
import android.app.Activity
import android.os.Bundle
import android.util.Log
import kotlinx.android.synthetic.main.activity_rekey.*
import kotlinx.android.synthetic.main.activity_rekey.view.*
class ReKeyActivity : Activity()
{
private lateinit var hyperHive: HyperHive
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
hyperHive = Util.getHyperHive(this)
initView()
}
/**
* Инициализируем представления
*/
private fun initView()
{
setContentView(R.layout.activity_rekey)
val db_path = Util.getDbPath(this) // путь к базе данных
// Откроем базу данных
root.btnOpen.setOnClickListener(
{
val response = "open : ${hyperHive.databaseAPI.openBase(db_path, root.key.text.toString())}"
Log.d(TAG, "onClick() : open : $db_path : $response : ${root.key.text}")
root.result.text = response
})
// Установим новый ключ шифрования
root.btnReKey.setOnClickListener(
{
val response = "rekey : ${hyperHive.databaseAPI.reKeyBase(db_path, root.key.text.toString())}"
Log.d(TAG, "onClick() : rekey : $db_path : $response : ${root.key.text}")
root.result.text = response
hyperHive.databaseAPI.closeBase(db_path)
})
}
companion object
{
private val TAG = ReKeyActivity::class.java.simpleName
}
}
См. также:
Примеры использования Android-фреймворка | Примеры работы с ресурсами