Androidアプリ開発メモ064:コンテツプロバイダ その2:コンテンツURI
関連する以前の記事:Androidアプリ開発メモ022:コンテンツプロバイダ
定義済みコンテンツプロバイダ用URI
端末内の様々なデータ、たとえば電話帳のデータなどをコンテツプロバイダから取得できる。そのURIは定数として定義されている。
URI | コンテンツ | 必要なパーミッション |
---|---|---|
CallLog.Calls.CONTENT_URI |
通話ログ(発着信履歴) | android.permission.READ_CONTACTS |
ContactsContract.Contacts.CONTENT_URI |
電話帳(1アカウント1レコード) | android.permission.READ_CONTACTS |
ContactsContract.Data.CONTENT_URI |
電話帳(1データ1レコード:1人の人に自宅電話、携帯電話、勤務先電話が登録されていれば3レコードになる) | android.permission.READ_CONTACTS |
ContactsContract.CommonDataKinds.Phone.CONTENT_URI |
電話帳に登録してある電話番号 | android.permission.READ_CONTACTS |
ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI |
電話帳に登録してある住所 | android.permission.READ_CONTACTS |
ContactsContract.CommonDataKinds.Email.CONTENT_URI |
電話帳に登録してあるメールアドレス | android.permission.READ_CONTACTS |
Settings.System.CONTENT_URI |
端末の各種設定 | |
Settings.Secure.CONTENT_URI |
端末のセキュリティに関する設定 | |
UserDictionary.Words.CONTENT_URI |
ユーザー辞書 | |
MediaStore.Images.Media.INTERNAL_CONTENT_URI |
端末内のストレージにある画像データ | |
MediaStore.Images.Media.EXTERNAL_CONTENT_URI |
外部メディアにある画像データ | |
MediaStore.Audio.Media.INTERNAL_CONTENT_URI |
端末内のストレージにあるオーディオデータ | |
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI |
外部メディアにあるオーディオデータ | |
MediaStore.Video.Media.INTERNAL_CONTENT_URI |
端末内のストレージにあるビデオデータ | |
MediaStore.Video.Media.EXTERNAL_CONTENT_URI |
外部メディアにあるビデオデータ | |
Browser.BOOKMARKS_URI |
ブラウザのブックマーク | com.android.browser.permission.READ_HISTORY_BOOKMARKS com.android.browser.permission.WRITE_HISTORY_BOOKMARKS |
APIDemosの Views>Lists>7.Cursor(Phones) が電話帳から電話番号を取ってきている。ソースコードは List7.java。
以下は電話番号を電話帳から取ってくる自分で作った超適当なサンプルコード。
package com.example.contactssample; import android.app.Activity; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.ContactsContract; import android.util.Log; import android.widget.TextView; public class ContactsSample extends Activity { private static final String[] PROJECTION = new String[] { // ContactsContract.Contacts._ID, // ContactsContract.Contacts.DISPLAY_NAME, // ContactsContract.Contacts.HAS_PHONE_NUMBER, // ContactsContract.Contacts.LOOKUP_KEY ContactsContract.CommonDataKinds.Phone._ID, // _id ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, // display_name ContactsContract.CommonDataKinds.Phone.NUMBER, // data1 電話番号 ContactsContract.CommonDataKinds.Phone.TYPE, // data2 電話番号のタイプ(自宅、携帯、etc...) ContactsContract.CommonDataKinds.Phone.LABEL, // data3 ? }; Uri uri // = ContactsContract.Contacts.CONTENT_URI; = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView textView1 = (TextView)findViewById(R.id.textView1); TextView textView2 = (TextView)findViewById(R.id.textView2); // Get a cursor with all people Cursor cursor = managedQuery(uri, // null, // 何も指定しないと全カラムを取ってくるようだ PROJECTION, null, null, null); // 行数、列数をログに出力 int count = cursor.getCount(); int columnCount = cursor.getColumnCount(); Log.v("CP", "count=" + count + ",columnCount=" + columnCount); // 列名をテキストビュー1に出力 String[] columnNames = cursor.getColumnNames(); StringBuffer sb = new StringBuffer(); for (String s : columnNames) { sb.append(s); sb.append("/"); } textView1.setText(sb.toString()); // データをテキストビュー2に出力 sb.delete(0, sb.length()); while (cursor.moveToNext()) { for (int i = 0; i < columnCount; i++) { sb.append(cursor.getString(i)); sb.append("/"); } sb.append("\n"); } textView2.setText(sb.toString()); } }
Activity#managedQuery() はdeprecatedになっていた。Android 3.0(API Level 11)以降は CursorLoader ってのを使うのが推奨らしい。
以下のコードはSDカードにあるファイルを取得している。 ContentResolver を使っているがURIが "file://" で始まっている。これはコンテンツプロバイダーを使っているといえるのだろうか?
InputStream is = getContentResolver() .openInputStream(Uri.parse("file:///sdcard/test.txt"));
参考ページ:
Androidのコンテントプロバイダで使えるURI一覧(1) | mucchinのAndroid戦記
ContactsContractを使った電話帳データの取得 | GE Android Blog
ContentProvider | Tech Booster
メモメモ - [Android]端末の電話帳を読み込む
« 2012夏アニメ視聴予定 | Main | 日本の財政破綻は近いのか »
「Androidアプリ開発」カテゴリの記事
- Androidアプリ開発メモ068:Tweenアニメーション(2012.11.18)
- Android SDK tools, Revision 21 に更新(2012.11.18)
- Androidアプリ開発メモ067:NDKのサンプルを動かしてみた(2012.09.10)
- Androidアプリ開発メモ066:Android SDK tools Rev.20 で変わった事(2012.07.12)
- Androidアプリ開発メモ065:ライブフォルダ(2012.07.11)
TrackBack
TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/54945750
Listed below are links to weblogs that reference Androidアプリ開発メモ064:コンテツプロバイダ その2:コンテンツURI:
Comments