我有一个按钮,按下时会在 web 视图中打开 twitter 登录页面(作为活动)。我正在使用twitter4j 版本 2.2.6。问题是这样的——当我点击模拟器或我的三星 glaxy 2 时,它完全没有任何错误,但是当我点击我的三星 Galaxy 3 GT-I9300(和我朋友的同一部手机)上的按钮时,我得到以下异常:
android.database.sqlite.SQLiteException: no such table: password: , while compile: SELECT username, password FROM password WHERE (host == ?) at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) at android.database。 sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:68) 位于 android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143) 位于 android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361) 位于 android.database。 sqlite.SQLiteProgram.(SQLiteProgram.java:127) 在 android.database.sqliteProgram.(SQLiteProgram.java:94) 在 android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:53) 在 android.database.sqlite。 android.database 上的 SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)。sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1684) 在 android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1569) 在 android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1525) 在 android.database .sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1605) 在 android.webkit.WebViewDatabase.getUsernamePassword(WebViewDatabase.java:990) 在 android.webkit.BrowserFrame.handleMessage(BrowserFrame.java:589) 在 android.os.Handler。 dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:950) at java.lang.Thread.run(Thread .java:856)SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1569) 在 android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1525) 在 android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1605) 在 android.webkit.WebViewDatabase .getUsernamePassword(WebViewDatabase.java:990) at android.webkit.BrowserFrame.handleMessage(BrowserFrame.java:589) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper. java:137) 在 android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:950) 在 java.lang.Thread.run(Thread.java:856)SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1569) 在 android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1525) 在 android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1605) 在 android.webkit.WebViewDatabase .getUsernamePassword(WebViewDatabase.java:990) at android.webkit.BrowserFrame.handleMessage(BrowserFrame.java:589) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper. java:137) 在 android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:950) 在 java.lang.Thread.run(Thread.java:856)1605) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.webkit.BrowserFrame.handleMessage(BrowserFrame.java:589) 在 android.webkit.WebViewDatabase.getUsernamePassword(WebViewDatabase.java:990) 在 android. os.Looper.loop(Looper.java:137) 在 android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:950) 在 java.lang.Thread.run(Thread.java:856)1605) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.webkit.BrowserFrame.handleMessage(BrowserFrame.java:589) 在 android.webkit.WebViewDatabase.getUsernamePassword(WebViewDatabase.java:990) 在 android. os.Looper.loop(Looper.java:137) 在 android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:950) 在 java.lang.Thread.run(Thread.java:856)
webview 是一个活动(扩展活动)我在崩溃点有足够的可用空间:
总计- 12187213824 免费- 4315947008
我在崩溃时的配置:
FlipFont=0
compatScreenHeightDp=546
compatScreenWidthDp=320
compatSmallestScreenWidthDp=320
fontScale=0.93
hardKeyboardHidden=HARDKEYBOARDHIDDEN_YES
keyboard=KEYBOARD_NOKEYS
keyboardHidden=KEYBOARDHIDDEN_NO
locale=en_US
mcc=425
mnc=1
navigation=NAVIGATION_NONAV
navigationHidden=NAVIGATIONHIDDEN_YES
orientation=ORIENTATION_PORTRAIT
screenHeightDp=615
screenLayout=SCREENLAYOUT_SIZE_NORMAL+SCREENLAYOUT_LONG_YES
screenWidthDp=360
seq=46
smallestScreenWidthDp=360
textLayoutDirection=0
touchscreen=TOUCHSCREEN_FINGER
uiMode=UI_MODE_TYPE_NORMAL+UI_MODE_NIGHT_NO
userSetLocale=false
设备特点:
android.hardware.wifi
android.hardware.location.network
android.hardware.nfc
android.hardware.location
android.hardware.sensor.gyroscope
android.hardware.screen.landscape
android.hardware.screen.portrait
android.hardware.wifi.direct
android.hardware.usb.accessory
android.hardware.bluetooth
android.hardware.touchscreen.multitouch.distinct
android.hardware.microphone
android.hardware.sensor.light
android.hardware.camera.autofocus
android.software.live_wallpaper
android.hardware.camera.flash
android.hardware.telephony
android.software.sip
android.hardware.touchscreen.multitouch.jazzhand
android.hardware.sensor.barometer
android.hardware.usb.host
android.hardware.touchscreen.multitouch
android.hardware.sensor.compass
android.hardware.faketouch
android.hardware.camera
com.sec.feature.minimode
android.software.sip.voip
android.hardware.sensor.proximity
android.hardware.location.gps
android.hardware.telephony.gsm
android.hardware.camera.front
com.nxp.mifare
android.hardware.touchscreen
android.hardware.sensor.accelerometer
glEsVersion = 2.0
环境:
getAndroidSecureContainerDirectory=/mnt/asec
getCloudStorageDirectory=/mnt/sdcard/cloud
getCloudStorageDirectoryPath=/mnt/sdcard/cloud
getDataDirectory=/data
getDownloadCacheDirectory=/cache
getExternalStorageAndroidDataDir=/mnt/sdcard/Android/data
getExternalStorageDirectory=/mnt/sdcard
getExternalStorageDirectoryUsbHost=/mnt/sdcard/Storages/usb
getExternalStorageState=mounted
getRootDirectory=/system
getSecureDataDirectory=/data
getSystemSecureDirectory=/data/system
isEncryptedFilesystemEnabled=false
isExternalStorageEmulated=true
isExternalStorageRemovable=false
权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
在 webview 中,我没有进行任何 sqllite 事务或不涉及任何内容。
看我关于这条线的回答↑
我不是root用户(意味着我有写权限)
涉及 webview 的代码是:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
try{
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.twitter);
mIntent = getIntent();
String url = (String)mIntent.getExtras().get("URL");
WebView webView = (WebView) findViewById(R.id.webview);
WebSettings settings = webView.getSettings();
settings.setDatabaseEnabled(true);
settings.setDatabasePath("/data/data/"+getPackageName()+"/databases");
settings.setDomStorageEnabled(true);
settings.setJavaScriptEnabled(true);
settings.setAllowFileAccess(true);
settings.setSaveFormData(true);
settings.setSavePassword(true);
webView.setWebViewClient( new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
...
return false;
}
});
webView.loadUrl(url);
}catch(Exception e){
e.printStackTrace();
}
}
public void onExceededDatabaseQuota(String url, String
databaseIdentifier, long currentQuota, long estimatedSize, long
totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
quotaUpdater.updateQuota(204801);
}
我发现这个链接有一些相似之处:
- SQLiteException:仅在 Motorola Plus 上没有这样的表?
- Android WebView 抛出 SQLiteException
- SQLiteException - 仅在某些设备上发生
- http://www.anddev.org/networking-database-problems-f29/missing-table-in-sqlite-with-specific-version-of-desire-hd-t50364.html
一个星期以来,我查看了太多线程,对此我感到非常沮丧
有人有什么想法吗?谢谢