I have come across an awkward issue, and I would very much appreciate
your help to find out what I am doing wrong.

I have an app which among other things allows users to edit bookmarks
in the Android Browser's bookmark store. It uses the
ContentResolver.query, .insert, .delete, and .update methods, with the
URI Browser.BOOKMARKS_URI.

It all works well under Android 2, but on Androids 3 and 4 the .update
command does not appear to work. I have tried everything I can think
of, and just cannot make it work.

To repeat this issue yourself in under one minute, create a new app
with an Activity named "BookmarkTestingActivity" and paste in the
source at the bottom of this post. Also add these two permissions to
the Manifest:
    <uses-permission
android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
    <uses-permission
android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/
>

This source simply inserts a new bookmark with title "Test" and url
"http://test.com";, attempts to update the url to "http://
updated.test.com", then Logs the url after that attempted change.

In Android 2, the url correctly changes to "http://updated.test.com";
but in Androids 3 and 4 it remains at "http://test.com";. The same
thing happens when I try updating other fields or using different
select variables etc.

I'm testing with the latest SDK in Eclipse, on Android 2.3.3, Android
3.1, and Android 4.0.3.

I can work around the problem of course by doing a delete then another
insert, but that's not the point :)

Thanks in advance!

James.

Source to repeat this issue:
=======================
public class BookmarkTestingActivity extends Activity {
        private static String LOGTAG = "BookmarkTesting";

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Insert a new bookmark, with title "Test", and url "http://
test.com".
                ContentValues cv=new ContentValues();
                cv.put(Browser.BookmarkColumns.TITLE, "Test");
                cv.put(Browser.BookmarkColumns.URL, "http://test.com";);
                cv.put(Browser.BookmarkColumns.BOOKMARK, "1");
                getContentResolver().insert(Browser.BOOKMARKS_URI, cv);

                // Update the url of all bookmarks with title "Test", to 
"http://
updated.test.com".
                cv.clear();
                cv.put(Browser.BookmarkColumns.URL, "http://updated.test.com";);
                getContentResolver().update(Browser.BOOKMARKS_URI, cv,
BookmarkColumns.TITLE+"=?", new String[]{"Test"});

                // Log out what the url is now.
        Cursor cur =
this.getContentResolver().query(Browser.BOOKMARKS_URI, null,
BookmarkColumns.TITLE+"=?", new String[]{"Test"}, null);
        if (cur == null) {
                Log.e(LOGTAG, "Cursor null");
        }
        else if (cur.getCount() == 0){
                Log.e(LOGTAG, "Cursor empty");
        }
        else {
                cur.moveToFirst();
                Log.e(LOGTAG, "URL is now
"+cur.getString(cur.getColumnIndex(BookmarkColumns.URL)));
        }

        this.finish();
    }
}

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to