如何在Android 4.4(API级别:19)中查找数据库路径?
作者:互联网
尝试从数据库中读取值,该值是使用javascript在webview中创建的,但无法使用获取数据路径
getDatabasePath()
似乎不建议使用的解决方案或解决方法.
提前致谢
解决方法:
String webviewDBPath = getFilesDir().getParent() + "/"; // getFilesDir().getParent() returns base path of app private data
if (Build.VERSION.SDK_INT <= 18) { // Below kitkat
webviewDBPath += <ur old db folder>;
}
webview.getSettings().setDatabasePath(webviewDBPath);
从kitkat,我们无法更改Webview数据库路径.默认数据库路径为/ data / data / {包名称} / app_webview / databases /.对于以下kitkat,我们可以将数据库路径设置为任何位置.
如果要访问由websql创建的数据库,请从Databases.db查询数据库的路径.
public String getWebViewDBPath() {
if (Build.VERSION.SDK_INT > 18) {
return "app_webview/databases";
} else {
return "{any folder}";
}
}
public String getDBFileName(ZoomRxApp ctx, String dbName) {
String dbFilePath = getFilesDir().getParent() + "/" + getWebViewDBPath() + "/Databases.db";
SQLiteDatabase webSqlDb = SQLiteDatabase.openOrCreateDatabase(dbFilePath, null);
Cursor result = null;
String dbFileName = null;
try {
String query = "select * from Databases where name like '"+dbName+"'";
result = webSqlDb.rawQuery(query, null);
while (result != null && result.moveToNext()) {
String origin = result.getString(result.getColumnIndex("origin"));
if(Build.VERSION.SDK_INT <= 18) {
dbFileName = origin + "/" + result.getString(result.getColumnIndex("path"));
} else {
dbFileName = origin + "/" + result.getString(result.getColumnIndex("id"));
}
break;
}
} catch (RuntimeException e) {
throw e;
} catch (Exception ex) {
ex.printStackTrace();
}
finally {
if(result != null) {
result.close();
}
if(webSqlDb != null) {
webSqlDb.close();
}
}
}
标签:android-4-4-kitkat,android 来源: https://codeday.me/bug/20191122/2059912.html