0

我正在尝试开发一个可以删除 android 内置浏览器书签的 android 应用程序。这是我的代码

ContentResolver cr = getContentResolver();
try 
{
    Cursor c = cr.query(
                        Browser.BOOKMARKS_URI,
                        new String [] { Browser.BookmarkColumns._ID,
                                        Browser.BookmarkColumns.BOOKMARK,
                                        Browser.BookmarkColumns.VISITS },
                        "bookmark != 0",
                        null,
                        null);
    c.moveToFirst();
    cr.delete(Browser.BOOKMARKS_URI, null, null);

} 
catch (IllegalStateException e) 
{
    e.printStackTrace();
}

上面代码的问题是它能够完美地删除书签。它会删除书签,但也会删除不应该删除的浏览器历史记录。请帮我解开这个谜语,在此先感谢。

4

2 回答 2

2

我的猜测是通过调用

cr.delete(Browser.BOOKMARKS_URI, null, null);

您请求从书签表中删除所有内容(因为您在“where”参数中传递了 null)根据 Android 文档,BOOKMARKS_URI是:

包含书签和历史项目的表

所以...您应该更具体地了解要删除的内容(将书签 == 1 添加到 cr.delete(...) 调用或其他内容)

于 2013-07-04T07:01:31.567 回答
2

这是工作代码,归功于@dors

ContentResolver cr = getContentResolver();
try 
{
Cursor c = cr.query(
                    Browser.BOOKMARKS_URI,
                    new String [] { Browser.BookmarkColumns._ID,
                                    Browser.BookmarkColumns.BOOKMARK,
                                    Browser.BookmarkColumns.VISITS },
                    "bookmark != 0",
                    null,
                    null);
c.moveToFirst();
cr.delete(Browser.BOOKMARKS_URI, "bookmark == 1", null);

} 
catch (IllegalStateException e) 
{
    e.printStackTrace();
}
于 2013-07-04T09:14:10.737 回答