Я создаю базу данных в браузере БД на 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);
}}