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.