読者です 読者をやめる 読者になる 読者になる

【Android】コンテンツプロバイダ

Android

 

コンテンツプロバイダ・・・

複数のアプリでデータ共有するための仕組み

(音楽、画像、連絡先、ブックマーク、カレンダーetc)

 

------------------------------------------------------------------------------------------------------

<データ格納先>※端末によって異なります

■端末内部

/system/media/audio/

■SDカード

/storage/emulated/0/Music/

------------------------------------------------------------------------------------------------------

<取得方法>

AndroidManifest.xml ※SDカードの読み込みの場合
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

 

//SDカードから音楽ファイルを取得します

Context context = getApplicationContext();

ContentResolver cr = context.getContentResolver();

String projection = new String{
  MediaStore.Audio.Media.TITLE,
  MediaStore.Audio.Media.DATA};

//SDカードの音楽ファイル

Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

Cursor cur = cr.query(

      uri, ①データの種類
      projection, ②項目(null全項目)
      null, ③フィルタ条件(nullフィルタなし)
      null, ④フィルタ用パラメータ
      null); ⑤ソート

if (cur == null) {
  Toast.makeText(this, "該当データがありません", Toast.LENGTH_SHORT).show();
   return v;
}

ArrayList<String> list = new ArrayList<String>();

if (cur.moveToFirst()) {
  do {
    String title=cur.getString(cur.getColumnIndex(MediaStore.Audio.Media.TITLE));

              String data=cur.getString(cur.getColumnIndex(MediaStore.Audio.Media.DATA));
              String info = title + ":" + data;

    list.add(info);
} while (cur.moveToNext());
}
cur.close();

ListView lv = (ListView)findViewById(R.id.listview01);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.layout.textview, list);
lv.setAdapter(adapter);

 

※補足(Cursor)

cur.getColumnNames(); ※項目名一覧
cur.getCount();     ※取得件数

Arrays.toString(cur.getColumnNames())とすると、

一覧がみやすくなります。

 

 

以上です。