我正在尝试开发一款可以删除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();
}上述代码的问题在于,它能够很好地删除书签。它会删除Bookmark,但也会删除浏览器历史记录,这是不应该的。请帮我解开这个谜语,提前谢谢。
发布于 2013-07-04 15:01:32
我的猜测是,通过调用
cr.delete(Browser.BOOKMARKS_URI, null, null);根据Android文档,您请求从书签的表中删除所有内容(因为您在"where“参数中传递了null ),BOOKMARKS_URI为:
包含书签和历史项目的表
所以..。您应该更具体地说明要删除的内容(将书签== 1添加到cr.delete(...)呼叫或其他什么)
发布于 2013-07-04 17:14:11
以下是工作代码,致谢@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();
}https://stackoverflow.com/questions/17462828
复制相似问题