открыть базу данных sqlite с паролем в андроид студии - PullRequest
0 голосов
/ 15 марта 2019

Я создаю базу данных в браузере БД на Windows и устанавливаю пароль для этого.как открыть эту базу в андроид студии?раньше база данных не была паролем и работала правильно.Теперь это не работает.Я делаю это потому, что после декомпиляции приложения никто не может получить к нему доступ.

класс помощника базы данных:

public class DataBaseHelper extends SQLiteOpenHelper {
private static String DB_NAME = "database.sqlite";
private static String DB_PATH = "";
private SQLiteDatabase mydatabase;
private Context context;

public DataBaseHelper(Context context) {
    super(context, DB_NAME, null, 1);
    if (Build.VERSION.SDK_INT >= 15) {
        DB_PATH = context.getApplicationInfo().dataDir + "/databases/";
    } else {
        DB_PATH = Environment.getDataDirectory() + "/data/" + context.getPackageName() + "/databases/";
    }
    this.context = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void checkAndCopyDatabase() {
    boolean dbExist = checkDatabases();
    if (dbExist) {
        Log.d("TAG", "already exist"); }
        else { this.getReadableDatabase(); }
    try { copyDatabases(); }
    catch (IOException e) {
        e.printStackTrace();
        Log.d("TAG", "Error copy DataBase"); }
}
public boolean checkDatabases() {
    SQLiteDatabase checkdb = null;
    try {
        String myPath = DB_PATH + DB_NAME;
        checkdb = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
    } catch (SQLException e) {
    }
    if (checkdb != null) { checkdb.close(); }
    return checkdb != null ? true : false;
}
public void copyDatabases() throws IOException {
    InputStream myInput = context.getAssets().open(DB_NAME);
    String outFileName = DB_PATH + DB_NAME;
    OutputStream myOutput = new FileOutputStream(outFileName);
    byte[] buffer = new byte[2048];
    int lenght;
    while ((lenght = myInput.read(buffer)) > 0) {
        myOutput.write(buffer, 0, lenght); }
}
public void openDatabase() {
    String myPath = DB_PATH + DB_NAME;
    mydatabase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
}
public synchronized void close() {
    if (mydatabase != null) {
        mydatabase.close(); }
    super.close();
}
public Cursor QueryData(String query) {
    return mydatabase.rawQuery(query, null);
}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...