【问题标题】:Delete Android Browser Boookmark删除安卓浏览器书签
【发布时间】:2013-07-04 05:55:59
【问题描述】:

我正在尝试开发一个可以删除 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();
}

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

【问题讨论】:

  • “当它附带书签时”是什么意思?
  • 请看编辑后的版本@dors

标签: android android-browser


【解决方案1】:

我的猜测是通过调用

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

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

包含书签和历史项目的表格

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

【讨论】:

  • 我没听懂你@dors 你能解释一下you should be more specific regarding what you want to delete (add bookmark == 1 to the cr.delete(...) call or something) 是什么意思吗?
  • cr.delete(Uri url, String where, String[] selectionArgs) 有 3 个参数。在第一个参数中,您传递了“Browser.BOOKMARKS_URI”,这意味着“我想从 Browser.BOOKMARKS_URI 表中删除内容”。正如我在回答中提到的,Browser.BOOKMARKS_URI 是一个包含书签和历史项目的数据库表。在第二个和第三个参数中,您传递了“null”,这意味着“对于我要删除的内容没有限制,从 Browser.BOOKMARKS_URI 中删除所有内容”。所以尝试在第二个参数中传递“bookmark == 1”( “where”参数)来指定你只想删除书签。
  • @ChethanShetty 用于删除我需要传入 where 参数的历史记录
【解决方案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();
}

【讨论】:

    猜你喜欢
    • 2014-07-09
    • 1970-01-01
    • 2011-02-08
    • 2012-01-05
    • 2013-10-25
    • 2012-08-31
    • 1970-01-01
    • 2011-08-28
    相关资源
    最近更新 更多