Managing bookmarks using Android's default Browser, one can see that they are different kind of bookmarks.
- Local bookmarks,
- per (Google) account bookmarks.
Getting all bookmarks (local and per-account) is quite straightforward. Here is how I proceed:
public static List<Bookmark> getBookmarks(ContentResolver contentResolver)
{
String[] projection = new String[]
{ BookmarkColumns._ID, BookmarkColumns.TITLE, BookmarkColumns.URL, BookmarkColumns.VISITS, BookmarkColumns.DATE, BookmarkColumns.FAVICON};
ArrayList<Bookmark> bookmarks = new ArrayList<Bookmark>();
Cursor cursor = contentResolver.query(Browser.BOOKMARKS_URI, projection, BookmarkColumns.BOOKMARK, null, null);
if (cursor.moveToFirst())
{
do
{
Bookmark bookmark = new Bookmark();
bookmark.setId(cursor.getLong(cursor.getColumnIndex(Browser.BookmarkColumns._ID)));
bookmark.setTitle(cursor.getString(cursor.getColumnIndex(Browser.BookmarkColumns.TITLE)));
bookmark.setUrl(cursor.getString(cursor.getColumnIndex(Browser.BookmarkColumns.URL)));
bookmark.setNumberOfVisit(cursor.getInt(cursor.getColumnIndex(Browser.BookmarkColumns.VISITS)));
byte[] data = cursor.getBlob(cursor.getColumnIndex(Browser.BookmarkColumns.FAVICON));
if (data != null) {
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
if(bitmap!=null)
bookmark.setFavicon(bitmap);
}
bookmarks.add(bookmark);
} while (cursor.moveToNext());
}
return bookmarks;
}
But how do I know which bookmarks are local and which are 'per account'. Ultimately, I would like to be able to create bookmark for a given account.
How could I achieve that?
Default Android Browser allows to do that, so this should be feasible.
To illustrate that, here is Android's default Browser 'Add bookmark' UI:
It allows to add bookmark and select 'where' you want to Add it ('Ajouter à'). Either in local bookmarks (favoris locaux) or associate it to one of the existing google account defined on/known by the device