[Android] MediaStore スマホの画像や音楽ファイルを検索する

cat30 01 - [Android] MediaStore スマホの画像や音楽ファイルを検索する
スマホ内の画像はフォトやギャラリー等にあり、Intent.ACTION_OPEN_DOCUMENT を使ってピッカーからユーザーが画像を選んで取り込む事ができました。
 
ここでは画像や楽曲を検索してリストアップしてみます。

Android Studio 3.4.2
API 29
AndroidX



ContentResolver

 
Android アプリケーションの一部でデータの中央リポジトリへのアクセスを管理しているのがコンテンツ プロバイダです。コンテンツ プロバイダの基本
 
コンテンツ プロバイダのデータにアクセスするためにContentResolver.query() を呼び出してデータ情報を取得します。
 

 

 

Permissions

 
ContentResolverを使ってスマホ内のMediaStre内を検索しますのでPermissionが必要になります。

AndroidManifest.xmlに追加

READ_EXTERNAL_STORAGE は、Android 6.0 Runtime Permissionに該当するため、アプリ起動中に許可を得るように設定します。
許可しない場合でも例外で落ちないように実装しないといけません。
 
permission 1 300x254 - [Android] MediaStore スマホの画像や音楽ファイルを検索する

  • APIが23以上か否か
    • False: そのまま処理実行
  • 既に許可しているか否か、checkSelfPermission(…)
    • 既に許可していない場合や、初回起動のケースは次に行く
    • 許可しているケースは処理に移る
  • Permissionが何に使われるか説明して許可を訪ねる
    • 拒否された場合はこの機能については動作しないが他の処理をする
    • 許可されて処理の実行
 

サンプルコード

 
ManActivity.java は許可の処理を行い、実際のpathの検索は ReadContent.java で行っています。

MainActivity.java

 
ここからが本番
ReadContent.java

 
レイアウト
actiity_main.xml

 
package nameは適宜変更してください。
AndroidManifest.xml

 
EXTERNAL_CONTENT_URI

INTERNAL_CONTENT_URI
がありますが
ExternalがSDカードだけを指しているわけではありません
アプリの外で端末内の内部メモリ領域とSDカードを指しています
もちろんSDカードがないスマホは内部メモリのみです。

スマホメーカーの実装に依存しますがギャラリーの画像などは
EXTERNAL_CONTENT_URI
で見つかります
 
content provider 02 - [Android] MediaStore スマホの画像や音楽ファイルを検索する
 
音楽ファイルを探すときは、 MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
に変更すると検索できます。
 

 
実際にemulatorがどうなっているかはDevice File Explorerを使うと確認できます。

 
Reference:
コンテンツ プロバイダの基本

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加




アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう、時間の制約がないところが一番の魅力です。

以下の3つはAndroidが学習できるオンラインスクールです。


TECH ACADEMY
Androidアプリコース



侍エンジニア塾
侍エンジニア塾 無料体験レッスン



CodeCamp
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp





正直ネットや本では限界があります。直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。

尚、スクールがダメだと言う人がいますが、やる気があれば問題ありません。与えられるのを待っていてはいけないですね
欲しいものは取りに行くのです。


Google Pixel 3 XLグローバル版
SIMフリー 並行輸入品
6.3インチの大画面
背景をぼかすポートレートモード撮影


Anker PowerCore II Slim 10000
Power IQ 2.0搭載
iPhone & Android対応

シェアする

  • このエントリーをはてなブックマークに追加

フォローする