質問

I am able to successfully get last accessed "url" using my function below.

Problem - I want to get the time entry when the last URL was last accessed. Trying to get dateTime like shown below crashes the program.

dateTime = mCur.getString(mCur.getColumnIndex(Browser.BookmarkColumns.DATE));

My failing stacktrace is below too. Thank you for any pointers on how I can resolve this?

public String returnLastChromeURL(int browserCode) {
    String[] proj = new String[] { Browser.BookmarkColumns.TITLE,
            Browser.BookmarkColumns.URL };

    String dateTime;

    Uri uriCustom = Uri
            .parse("content://com.android.chrome.browser/bookmarks");
    String sel = Browser.BookmarkColumns.BOOKMARK + " = 0"; // 0 = history,
                                                            // 1 = bookmark
    Cursor mCur = mContext.getContentResolver().query(uriCustom, proj, sel,
            null, BookmarkColumns.DATE + " ASC");
    mCur.moveToFirst();
    mCur.moveToLast();

    dateTime = mCur.getString(mCur.getColumnIndex(Browser.BookmarkColumns.DATE));
    title = mCur.getString(mCur.getColumnIndex(Browser.BookmarkColumns.TITLE));
    url = mCur.getString(mCur.getColumnIndex(Browser.BookmarkColumns.URL));

    Log.v("focus" + " url", "Chrome URL = " + url + ", dateTime = " + dateTime);
    return url;
}

Following is my Stack Trace at failure:

05-02 02:29:33.325: E/CursorWindow(10382): Failed to read row 1656, column -1 from a CursorWindow which   has 1657 rows, 2 columns.
05-02 02:29:33.336: E/AndroidRuntime(10382): FATAL EXCEPTION: main
05-02 02:29:33.336: E/AndroidRuntime(10382): java.lang.IllegalStateException: Couldn't read row 1656,  col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
05-02 02:29:33.336: E/AndroidRuntime(10382):    at     android.database.CursorWindow.nativeGetString(Native Method)
05-02 02:29:33.336: E/AndroidRuntime(10382):    at   android.database.CursorWindow.getString(CursorWindow.java:438)
05-02 02:29:33.336: E/AndroidRuntime(10382):    at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
05-02 02:29:33.336: E/AndroidRuntime(10382):    at android.database.CursorWrapper.getString(CursorWrapper.java:114)
05-02 02:29:33.336: E/AndroidRuntime(10382):    at   com.mavdev.focusoutfacebook.urls.MyURLObject.returnLastChromeURL(MyURLObject.java:71)
05-02 02:29:33.336: E/AndroidRuntime(10382):    at com.mavdev.focusoutfacebook.FBBlockerService$FBServicelockCountdownTimer.onTick(FBBlockerService.java:291)
05-02 02:29:33.336: E/AndroidRuntime(10382):    at android.os.CountDownTimer$1.handleMessage(CountDownTimer.java:124)
05-02 02:29:33.336: E/AndroidRuntime(10382):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-02 02:29:33.336: E/AndroidRuntime(10382):    at android.os.Looper.loop(Looper.java:137)
05-02 02:29:33.336: E/AndroidRuntime(10382):    at    android.app.ActivityThread.main(ActivityThread.java:5455)
05-02 02:29:33.336: E/AndroidRuntime(10382):    at java.lang.reflect.Method.invokeNative(Native Method)
05-02 02:29:33.336: E/AndroidRuntime(10382):    at java.lang.reflect.Method.invoke(Method.java:525)
05-02 02:29:33.336: E/AndroidRuntime(10382):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
05-02 02:29:33.336: E/AndroidRuntime(10382):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
05-02 02:29:33.336: E/AndroidRuntime(10382):    at dalvik.system.NativeStart.main(Native Method)
役に立ちましたか?

解決

Your projection should include the required column name as well. So change the code

String[] proj = new String[] { Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL };

to

String[] proj = new String[] { Browser.BookmarkColumns.DATE, Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL };

Hope this helps.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top