我有一个应用程序向我显示所有书签。我可以列出书签然后我的按钮添加书签。我没有实现代码来立即更新列表,但是当我返回时,新书签显示在列表中。 它是我添加的默认书签,我添加了这些字段
map.put(Browser.BookmarkColumns.CREATED, creationTime);
map.put(Browser.BookmarkColumns.TITLE, addTitle);
map.put(Browser.BookmarkColumns.BOOKMARK, 1);
cr.update(Browser.BOOKMARKS_URI, map,"_id = " + cur.getInt(0), null);
新书签显示在列表中,但是当我打开浏览器并查看书签标签时,所有其他书签都存在但不是我创建的任何书签。
我已经在7和10版本的模拟器上进行了测试,它没有问题,但是当我在我的三星Galaxy s2上运行2.3.3版本时它会添加到列表中。我已经介入了设备并创建了书签,我知道这是因为我的代码设置为添加,如果它找不到或只是重写,如果它找到。
我安装了多个浏览器我的设备上有firefox和opera。 Firefox保留了自己的书签,我还没有使用过Opera
这里是所有添加书签代码
private void addBookmark(String addTitle, String addUrl) {
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(BOOKMARKS_URI, projection, android.provider.Browser.BookmarkColumns.BOOKMARK, null, null);
//first find out if this title has been used before
boolean found = false;
long creationTime = new Date().getTime();
if (cur.moveToFirst()) {
String title;
int count = 0;
int titleColumn;
do {
titleColumn = cur.getColumnIndex(BookmarkColumns.TITLE);
title = cur.getString(titleColumn);
if (title.equals(addTitle))
{
found = true;
ContentValues map = new ContentValues();
map.put(Browser.BookmarkColumns.CREATED, creationTime);
map.put(Browser.BookmarkColumns.TITLE, addTitle);
map.put(Browser.BookmarkColumns.BOOKMARK, 1);
map.put(Browser.BookmarkColumns.DATE, 0);
map.put(Browser.BookmarkColumns.VISITS, 0);
cr.update(Browser.BOOKMARKS_URI, map,"_id = " + cur.getInt(0), null);
Log.d(LOGTAG,"title found: "+ Integer.toString(count));
}
count++;
}while (cur.moveToNext());
}else {
Log.d(LOGTAG,"didn't move to first");
}
if (!found) {
cur = cr.query(BOOKMARKS_URI,
projection,
android.provider.Browser.BookmarkColumns.BOOKMARK,
null,
null);
// Adding a bookmark for a site the user has not been to.
ContentValues map = new ContentValues();
map.put(Browser.BookmarkColumns.TITLE, addTitle);
map.put(Browser.BookmarkColumns.URL, addUrl);
map.put(Browser.BookmarkColumns.CREATED, creationTime);
map.put(Browser.BookmarkColumns.BOOKMARK, 1);
map.put(Browser.BookmarkColumns.DATE, 0);
map.put(Browser.BookmarkColumns.VISITS, 0);
cr.insert(Browser.BOOKMARKS_URI, map);
}
}
这是我试过的最后一个代码 我将访问值设置为100,现在将其显示为历史记录项,但是将星号显示为收藏夹。这告诉我,我将其中一个值设置错误或错过了一个。历史记录选项卡知道它的最爱,但最喜欢的标签不
if (!found) {
cur = cr.query(BOOKMARKS_URI,
projection,
android.provider.Browser.BookmarkColumns.BOOKMARK,
null,
null);
//Adding a bookmark for a site the user has not been to.
ContentValues map = new ContentValues();
map.put(Browser.BookmarkColumns.TITLE, "Random title");
map.put(Browser.BookmarkColumns.URL, "http://www.bbc.co.uk");
map.put(Browser.BookmarkColumns.CREATED, System.currentTimeMillis());
map.put(Browser.BookmarkColumns.BOOKMARK, 1);
map.put(Browser.BookmarkColumns.DATE, 0L);
map.put(Browser.BookmarkColumns.VISITS, 100);
getContentResolver().insert(Browser.BOOKMARKS_URI, map);
}
答案 0 :(得分:0)
编辑:鉴于你的代码更新,请尝试这样的事情:
private static final String SELECTION = BookmarkColumns.TITLE + "=? AND " +
BookmarkColumns.URL + "=? AND " + BookmarkColumns.BOOKMARK + "=1";
private void addBookmark(String title, String url) {
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(Browser.BOOKMARKS_URI, new String[]{BaseColumns._ID}, SELECTION, new String[]{title, url}, null);
if (cursor != null) {
try {
if (!cursor.moveToNext()) {
// No such bookmark, create a new instance
ContentValues values = new ContentValues();
values.put(BookmarkColumns.BOOKMARK, 1);
values.put(BookmarkColumns.CREATED, System.currentTimeMillis());
values.put(BookmarkColumns.DATE, 0L);
values.put(BookmarkColumns.TITLE, title);
values.put(BookmarkColumns.URL, url);
values.put(BookmarkColumns.VISITS, 0);
cr.insert(Browser.BOOKMARKS_URI, values);
}
} finally {
cursor.close();
}
}
}