From 557b7dcc712243ff33cb8cc28b8fb4510d4ca12c Mon Sep 17 00:00:00 2001 From: huangdarwin Date: Fri, 3 Feb 2023 16:21:11 +0000 Subject: [PATCH] Demo: Request READ_MEDIA_VIDEO on API 33+ More info in: https://developer.android.com/about/versions/13/behavior-changes-13#granular-media-permissions PiperOrigin-RevId: 506908079 --- demos/transformer/src/main/AndroidManifest.xml | 1 + .../transformerdemo/ConfigurationActivity.java | 17 ++++++++--------- .../transformerdemo/TransformerActivity.java | 17 +++++++++-------- .../src/androidTest/AndroidManifest.xml | 1 + 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/demos/transformer/src/main/AndroidManifest.xml b/demos/transformer/src/main/AndroidManifest.xml index 60a336de27..b576d1543c 100644 --- a/demos/transformer/src/main/AndroidManifest.xml +++ b/demos/transformer/src/main/AndroidManifest.xml @@ -22,6 +22,7 @@ + = 24) { + if (SDK_INT >= 24) { videoMimeAdapter.add(MimeTypes.VIDEO_H265); } @@ -487,13 +488,11 @@ public final class ConfigurationActivity extends AppCompatActivity { } private void selectLocalFile(View view) { - int permissionStatus = - ActivityCompat.checkSelfPermission( - ConfigurationActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE); - if (permissionStatus != PackageManager.PERMISSION_GRANTED) { - String[] neededPermissions = {Manifest.permission.READ_EXTERNAL_STORAGE}; + String permission = SDK_INT >= 33 ? READ_MEDIA_VIDEO : READ_EXTERNAL_STORAGE; + if (ActivityCompat.checkSelfPermission(/* context= */ this, permission) + != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions( - ConfigurationActivity.this, neededPermissions, FILE_PERMISSION_REQUEST_CODE); + /* activity= */ this, new String[] {permission}, FILE_PERMISSION_REQUEST_CODE); } else { launchLocalFilePicker(); } diff --git a/demos/transformer/src/main/java/com/google/android/exoplayer2/transformerdemo/TransformerActivity.java b/demos/transformer/src/main/java/com/google/android/exoplayer2/transformerdemo/TransformerActivity.java index fcf7352c0d..8e4abd794d 100644 --- a/demos/transformer/src/main/java/com/google/android/exoplayer2/transformerdemo/TransformerActivity.java +++ b/demos/transformer/src/main/java/com/google/android/exoplayer2/transformerdemo/TransformerActivity.java @@ -16,10 +16,12 @@ package com.google.android.exoplayer2.transformerdemo; import static android.Manifest.permission.READ_EXTERNAL_STORAGE; +import static android.Manifest.permission.READ_MEDIA_VIDEO; import static com.google.android.exoplayer2.transformer.Transformer.PROGRESS_STATE_NOT_STARTED; import static com.google.android.exoplayer2.util.Assertions.checkNotNull; import static com.google.android.exoplayer2.util.Assertions.checkState; import static com.google.android.exoplayer2.util.Assertions.checkStateNotNull; +import static com.google.android.exoplayer2.util.Util.SDK_INT; import android.app.Activity; import android.content.Context; @@ -44,6 +46,7 @@ import android.widget.Toast; import androidx.annotation.Nullable; import androidx.annotation.StringRes; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.ActivityCompat; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.MediaItem; @@ -82,7 +85,6 @@ import com.google.android.exoplayer2.util.DebugViewProvider; import com.google.android.exoplayer2.util.Effect; import com.google.android.exoplayer2.util.GlUtil; import com.google.android.exoplayer2.util.Log; -import com.google.android.exoplayer2.util.Util; import com.google.android.material.card.MaterialCardView; import com.google.android.material.progressindicator.LinearProgressIndicator; import com.google.common.base.Stopwatch; @@ -195,7 +197,7 @@ public final class TransformerActivity extends AppCompatActivity { "debugFrame", }) private void startTransformation() { - requestTransformerPermission(); + requestReadVideoPermission(/* activity= */ this); Intent intent = getIntent(); Uri uri = checkNotNull(intent.getData()); @@ -684,12 +686,11 @@ public final class TransformerActivity extends AppCompatActivity { } } - private void requestTransformerPermission() { - if (Util.SDK_INT < 23) { - return; - } - if (checkSelfPermission(READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - requestPermissions(new String[] {READ_EXTERNAL_STORAGE}, /* requestCode= */ 0); + private static void requestReadVideoPermission(AppCompatActivity activity) { + String permission = SDK_INT >= 33 ? READ_MEDIA_VIDEO : READ_EXTERNAL_STORAGE; + if (ActivityCompat.checkSelfPermission(activity, permission) + != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(activity, new String[] {permission}, /* requestCode= */ 0); } } diff --git a/library/transformer/src/androidTest/AndroidManifest.xml b/library/transformer/src/androidTest/AndroidManifest.xml index 21c4bd48fe..98169d594c 100644 --- a/library/transformer/src/androidTest/AndroidManifest.xml +++ b/library/transformer/src/androidTest/AndroidManifest.xml @@ -21,6 +21,7 @@ +