奇怪SQLiteException不是在所有的设备 [英] Strange SQLiteException not in all devices

查看:205
本文介绍了奇怪SQLiteException不是在所有的设备的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有当pressed打开的Twitter登录页面在网页视图(如一个活动)按钮。我使用的 twitter4j版本2.2.6 的。
问题是这个 - 当我在模拟器上点击或我的三星glaxy 2它完全不用其他任何错误,但是当我点击我的三星Galaxy 3 GT-I9300 的(和我的朋友同一部手机上的按钮)我得到了以下异常:

I have a button which when pressed opens twitter login page in a webview (as an activity). i'm using twitter4j version 2.2.6. the problem is this- when i click on the emulator or my samsung glaxy 2 it works perfectly witout any bugs, but when i click the button on my samsung galaxy 3 GT-I9300 (and my friends same phone) i get the following exception:

android.database.sqlite.SQLiteException:没有这样的表:密码:,
  在编译:选择用户名,密码从密码WHERE(主机
  ==?)
          在android.database.sqlite.SQLiteCompiledSql.native_compile(母语
  方法)
          在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.sqlite.SQLiteProgram(SQLiteProgram.java:94)
          在android.database.sqlite.SQLiteQuery(SQLiteQuery.java:53)
          在android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
          在android.database.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)
          在android.os.Looper.loop(Looper.java:137)
          在android.webkit.WebViewCore $ WebCoreThread.run(WebViewCore.java:950)
          在java.lang.Thread.run(Thread.java:856)

android.database.sqlite.SQLiteException: no such table: password: , while compiling: SELECT username, password FROM password WHERE (host == ?) at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) at android.database.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:68) at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143) at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361) at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:127) at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:94) at android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:53) at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47) at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1684) at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1569) at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1525) at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1605) at 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) at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:950) at java.lang.Thread.run(Thread.java:856)

web视图是一个活动(延伸活动)
我有足够的自由空间,在碰撞点:

the webview is an activity (extends Activity) i have plenty of free space at the point of crash:

total- 12187213824自由4315947008

total- 12187213824 free- 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

权限:
    

Permissions:

<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"/>

在网页视图我没有做任何涉及交易sqllite或没有。

查看有关此行我的答案&uarr;

我不是一个的的用户(这意味着我有写权限)

I'm not a root user (meaning i have the write rights)

在code涉及的WebView是:

the code involving the webview is:

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); 
    } 

我发现这个链接,有一定的相似性:

I've found this links that has some similarity:

  • SQLiteException: no such table only on Motorola Plus?
  • Android WebView throws SQLiteException
  • SQLiteException - only happens on some devices
  • http://www.anddev.org/networking-database-problems-f29/missing-table-in-sqlite-with-specific-version-of-desire-hd-t50364.html

我已经看了太多线程漫长的一周,我pretty沮丧吧

I've looked on too many threads for a long week and i'm pretty frustrated about it

没有任何人有什么想法?谢谢

does anyone have any ideas? thanks

推荐答案

事实证明我有在code这两条线在别处:

as it turns out i had this two lines somewhere else in the code:

context.deleteDatabase("webview.db");
context.deleteDatabase("webviewCache.db");

此行​​的结果应该以清除缓存为我的WebView,但开始也没有创造这又数据库时,该行仅工作于previous设备,在星系3,也许其他设备的事实证明,web视图所以sqlite的例外是因为它确实没有一个表...

this lines where supposed to clear the caching for my webview, but this lines only worked on previous devices, in the galaxy 3 and maybe other devices as it turns out, the webview when initiated is not creating this databases again so the sqlite exception was because it really didn't have a table...

需要小心但─我写的是误导性的行:

need to be careful with that- the line i wrote was misleading:

在网页视图我没有做出任何涉及交易sqllite有或全无

"In the webview i didn't made any sqllite transaction or nothing involved"

这篇关于奇怪SQLiteException不是在所有的设备的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆