ブックマークの読み込み

Android端末ではBrowser.BOOKMARKS_URIというURIにアクセスすることでブックマークのタイトルやURLやfavicon(ページのアイコン)などを取得できます。

パーミッションの設定

ブックマークにアプリからアクセスするにはAndroidManifest.xmlにREAD_HISTORY_BOOKMARKSというパーミッションを次のように追加します。

<?xml version="1.0" encoding="utf-8" ?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.MyApp.myapp" 
    android:versionCode="1" 
    android:versionName="1.0" >
    
    <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
        <!--上の1行を追加-->

コードからブックマークにアクセスする

次にContentResolverクラスを使ってブックマークのURIからブックマーク情報を読み込みます。

コードは次の通りです。

public class MainActivity extends FragmentActivity 
{

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        ContentResolver cr = activity.getContentResolver();
        Cursor cursor = cr.query(Browser.BOOKMARKS_URI, null, null, null, null);
        int titleIndex = cursor.getColumnIndexOrThrow(Browser.BookmarkColumns.TITLE);
            //ブックマークのタイトル
        int urlIndex = cursor.getColumnIndexOrThrow(Browser.BookmarkColumns.URL);
            //ブックマークのURL
        int faviconIndex = cursor.getColumnIndexOrThrow(Browser.BookmarkColumns.FAVICON);
            //ブックマークのfavicon画像

        if(cursor.moveToFirst()){
        
            //1つずつブックマークを読み込む。
            while(!cursor.isAfterLast()){
                String title = cursor.getString(titleIndex);
                String url = cursor.getString(urlIndex);
                byte[] favicon_bytes = cursor.getBlob(faviconIndex);
                
                Bitmap favicon = null;
                if(favicon_bytes != null){
                        favicon = BitmapFactory.decodeByteArray(favicon_bytes, 0, favicon_bytes.length);
                            //favicon画像を取得
                }
                
                cursor.moveToNext();
            }
        }
    }

}

CursorクラスのgetColumnIndexOrThrow(またはgetColumnIndex)メソッドでブックマークの様々な情報にアクセスすることが可能です。取得できる情報は次のように定義されています。

定数名意味
BOOKMARKブックマークかどうかのフラグ
CREATEDブックマークが作られてからの時間(ミリ秒)
DATE最後にブックマークを開いた時間(ミリ秒)
FAVICONブックマークのfavicon画像
TITLEブックマークのタイトル
URLブックマークのURL
VISITSブックマークを訪問した回数

この例ではCursorクラスから1つずつブックマークのタイトルやURLや画像のバイト配列の情報を取得しています。

ブックマークのアイコン画像はBitmapクラスのdecodeByteArrayメソッドにgetBlobメソッドで取得したバイト配列を渡せば生成できます。

関連項目
プライバシーポリシー