<< Android-Note
ブックマークの読み込み
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メソッドで取得したバイト配列を渡せば生成できます。
© Kaz