この記事は Androidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Java での開発経験、XML構文規則、Android のアプリ開発経験がある方を対象としています。
Android のアプリ開発でお役にたててれば、嬉しいです。
(これから Android のアプリ開発や Java での開発を始めたい方への案内は、記事の最後で紹介します)
Android 12(API レベル 32)以前で開発したアプリは、SdkVersion を Android 13(API レベル 33)にするだけでは、メディアストアの画像・音声・動画ファイルにアクセスできません。
その理由は、Android 13 からきめ細かいメディア権限が導入されているからです。
Android 13 の機能と変更点はこちらです↓↓↓
Android 12 対応( Bluetooth権限 )はこちらです↓↓↓
画像/音声/動画ファイルにアクセスするアプリのAndroid13対応
◎ポイント
Android 12以前は、マニフェストファイル(AndroidManifest.xml)に、外部ストレージのアクセス(READ_EXTERNAL_STORAGE )の権限を、指定するだけで、画像・音声・動画ファイルにアクセスできました。
Android 13では、アプリがメディアを使用する場合、画像や写真(READ_MEDIA_IMAGES)、動画(READ_MEDIA_VIDEO)、音声ファイル(READ_MEDIA_AUDIO)の権限指定と、ユーザー承認をリクエストする必要があります。
ジャケット画像がついた音楽ファイルをダウンロードするならココ↓↓↓
マニフェストファイルに権限を指定する
マニフェストファイル(AndroidManifest.xml)に権限を指定します。
必要に応じて、画像や写真ファイル、動画ファイル、音声ファイルにアクセスする権限(uses-permission)を追加します。
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
:
外部ストレージのアクセス(READ_EXTERNAL_STORAGE)は、maxSdkVersion属性を指定して、Android 12(API レベル 32)以前の場合に指定するようにします。
権限チェックとユーザ承認リクエスト
Android 12(API レベル 32)より新しいバージョンの場合、アクセスが必要なメディアの権限が許可(PERMISSION_GRANTED)でない場合に、ユーザー承認をリクエストします。
private static final int REQUEST_MULTI_PERMISSIONS = 101;
:
private void checkPermissions() {
ArrayList<String> requestPermissions = new ArrayList<>();
:
// MediaStore
if (Build.VERSION.SDK_INT > 32) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_MEDIA_IMAGES) != PackageManager.PERMISSION_GRANTED) {
requestPermissions.add(Manifest.permission.READ_MEDIA_IMAGES);
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_MEDIA_AUDIO) != PackageManager.PERMISSION_GRANTED) {
requestPermissions.add(Manifest.permission.READ_MEDIA_AUDIO);
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_MEDIA_VIDEO) != PackageManager.PERMISSION_GRANTED) {
requestPermissions.add(Manifest.permission.READ_MEDIA_VIDEO);
}
} else {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
requestPermissions.add(Manifest.permission.READ_EXTERNAL_STORAGE);
}
}
if (!requestPermissions.isEmpty()) {
ActivityCompat.requestPermissions(this, requestPermissions.toArray(new String[0]), REQUEST_MULTI_PERMISSIONS);
}
:
}
◎ユーザ承認のリクエスト画面
ユーザー承認結果を確認する
ユーザー承認の結果を確認し、許可(PERMISSION_GRANTED)でない場合は、処理を継続できないよう制御します。
private boolean start = true;
:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_MULTI_PERMISSIONS) {
if (grantResults.length > 0) {
for (int i = 0; i < permissions.length; i++) {
switch (permissions[i]) {
case Manifest.permission.READ_EXTERNAL_STORAGE:
case Manifest.permission.READ_MEDIA_IMAGE:
case Manifest.permission.READ_MEDIA_AUDIO:
case Manifest.permission.READ_MEDIA_VIDEO:
if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
start = false;
:
}
break;
:
default:
}
}
}
}
if (start) {
:
} else {
button.setVisibility(View.VISIBLE);
}
}
ボタンを非表示にすることで、処理を継続できないようにしています。
データセーフティセクションの情報提供
アプリが使用するメディアの権限をマニフェストファイルに追加した場合、データセーフティセクションの情報提供が必要です。
データ セーフティを登録せず、メディアの権限がついたマニフェストファイルを含むアプリをリリースすると、Google 社より、「ご対応のお願い: Google Play のポリシーをアプリが遵守していません」といったタイトルのメールが届き、リリースが否認されます。
“ すべてのデベロッパーは、
Google Play で公開するアプリでユーザーデータをどのように収集、処理するかを申告し、
そのデータを暗号化などのセキュリティ保護対策によってどのように保護するか、
詳細を示す必要があります ”
データセーフティセクションについては、こちらです↓↓↓
データセーフティセクションは、Google PLAY Consoleで対象のアプリを選択、メニューのアプリのコンテンツにあります。
データ セーフティの登録
①Google PLAY Consoleの「アプリのコンテンツ」を選択し、「データセーフティ」をクリックします。
②「次」をクリックします。
③すべて、「はい」を選択します。
④アプリで使用するメディアに応じて、写真と動画の「写真」、「動画」、音声ファイルの「音楽ファイル」をチェックします。
⑤チェックしたメディアの「編集」をクリックします。
⑥「共有」と「アプリの機能」にチェックを入れます。
⑦「保存」をクリックします。
チェックを入れたすべてのメディアについて、⑤⑥⑦を実施します。
保存すれば、申告内容で審査されます。
今回は、ここまでです。
Android 13のきめ細かいメディア権限に対応しているAndroidアプリです。
誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にあるコメントか、
こちらから、お願いいたします♪
ポチッとして頂けると、
次のコンテンツを作成する励みになります♪
これからAndroidのアプリ開発やJavaでの開発を始めたい方へ
初めての Android のアプリ開発では、アプリケーション開発経験がない方や、
アプリケーション開発経験がある方でも、Java や C# などのオブジェクト指向言語が初めての方は、
書籍などによる独学ではアプリ開発できるようになるには、
かなりの時間がかかりますので、オンラインスクールでの習得をおススメします。
未経験者からシステムエンジニアを目指すのに最適です。まずは無料相談から♪
未経験者からプログラマーを目指すのに最適です。まずは無料カウンセリングから♪
カリキュラムとサポートがしっかりしています。お得なキャンペーンとかいろいろやっています♪
ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適です。まずは無料オンライン相談から♪
参考になったら、💛をポッチとしてね♪
コメント欄