3
試圖從數據庫中讀取值,即在WebView中使用JavaScript創建的,但無法獲得使用如何在Android 4.4(API等級:19)中查找數據庫路徑?
getDatabasePath()
這似乎是過時的數據庫路徑有任何解決方案或解決這一點。
在此先感謝
試圖從數據庫中讀取值,即在WebView中使用JavaScript創建的,但無法獲得使用如何在Android 4.4(API等級:19)中查找數據庫路徑?
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);
從奇巧,我們無法改變的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();
}
}
}
在文檔'getDatabasePath()'中沒有標記爲棄用。 – Henry
http://developer.android.com/reference/android/webkit/WebSettings.html#getDatabasePath() - @Henry檢查上面的鏈接 – N20084753
我查了一下'android.content.Context.getDatabasePath()'。看到http://developer.android.com/reference/android/content/Context.html#getDatabasePath%28java.lang.String%29 – Henry