1

Facebookでユーザー認証付きのアプリを作成しました。しかし、最小化して再開し、Facebookからログアウトすると、次のエラーがスローされます。

07-13 16:35:42.989: E/AndroidRuntime(23464): FATAL EXCEPTION: Thread-47
07-13 16:35:42.989: E/AndroidRuntime(23464): android.database.sqlite.SQLiteDiskIOException: error code 10: disk I/O error
07-13 16:35:42.989: E/AndroidRuntime(23464):    at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
07-13 16:35:42.989: E/AndroidRuntime(23464):    at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61)
07-13 16:35:42.989: E/AndroidRuntime(23464):    at android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1632)
07-13 16:35:42.989: E/AndroidRuntime(23464):    at android.webkit.WebViewDatabase.clearCookies(WebViewDatabase.java:543)
07-13 16:35:42.989: E/AndroidRuntime(23464):    at android.webkit.CookieSyncManager.clearAllCookies(CookieSyncManager.java:128)
07-13 16:35:42.989: E/AndroidRuntime(23464):    at android.webkit.CookieManager$2.run(CookieManager.java:532)
07-13 16:35:42.989: E/AndroidRuntime(23464):    at java.lang.Thread.run(Thread.java:1019)

そして、エラーを生成するコードは

       private void fbLogout() {
    dialog.setMessage("Disconnecting from Facebook");
    dialog.show();

    new Thread() {
        @Override
        public void run() {
            Log.v("fbLogout() Clear", "fbLogout() Clear");
            SessionStore.clear(getParent());

            int what = 1;                   
            try {
                Log.v("fbLogout() Clear", "fbLogout() before logout()");
                mFacebook.logout(getParent());
                Log.v("fbLogout() Clear", "fbLogout()after logout()");

                what = 0;
            } catch (Exception ex) {                
                ex.printStackTrace();                   
            }                   
            mHandler.sendMessage(mHandler.obtainMessage(what));
        }
    }.start();
   }

    private Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        dialog.dismiss();           
        if (msg.what == 1) {
            Toast.makeText(getParent(), "Facebook logout failed", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getParent(), "Disconnected from Facebook", Toast.LENGTH_SHORT).show();
        }
    }
};




    public String logout(Context context)
        throws MalformedURLException, IOException {
    Util.clearCookies(context);
    Bundle b = new Bundle();//Generates Error
    b.putString("method", "auth.expireSession");//Generates Error
    String response = request(b);
    setAccessToken(null);
    setAccessExpires(0);
    return response;
4

2 に答える 2

0

アプリケーションに初めてログインしたときに、Facebook の Web ビューがデータベース上に作成されました。独自のデータベース ファイルをアプリケーションのキャッシュに保存して、セッションを保存します。

アプリケーションのキャッシュを削除していると思うので、webview のデータベースは自動的に削除されます。次に Facebook からログアウトしようとすると、DVM は SQlite データベース例外をスローします。

エミュレーターのファイル エクスプローラーを調べるだけです。何か解決策があるかもしれません。:-)

于 2012-07-14T06:22:13.240 に答える
0
android.database.sqlite.SQLiteDiskIOException: error code 10: disk I/O error

それはそれをすべて言います。デバイスの内部ストレージに物理的な問題があります。デバイスがまだ保証期間内である場合は、携帯通信会社がデバイスを交換する必要があります。

将来的には、デバイスのフラッシュ メモリにあまり負荷をかけないように、エミュレータでさらに開発を行うことを検討してください。:)

于 2012-07-13T18:29:08.650 に答える