diff options
| author | Simon Dai <sdai@google.com> | 2020-04-22 13:57:27 -0700 |
|---|---|---|
| committer | Simon Dai <sdai@google.com> | 2020-04-23 10:59:43 -0700 |
| commit | e7cb020b5dcf64f84bb5b50aeb33cc51530e3a00 (patch) | |
| tree | 14c52d280ad337a3554e6fa0de4ae6327c59dd11 /src/com | |
| parent | e8cd868346f252f60bd52c4076365873681e0ffa (diff) | |
| download | platform_packages_apps_Car_LocalMediaPlayer-e7cb020b5dcf64f84bb5b50aeb33cc51530e3a00.tar.gz platform_packages_apps_Car_LocalMediaPlayer-e7cb020b5dcf64f84bb5b50aeb33cc51530e3a00.tar.bz2 platform_packages_apps_Car_LocalMediaPlayer-e7cb020b5dcf64f84bb5b50aeb33cc51530e3a00.zip | |
Add error resolution for missing permissionandroid11-dev
Prevents LMP from spam requesting permissions, will only request on user
action (via error resolution).
Bug: 153569299
Test: Manual
Change-Id: I327b8b9a0f30d3b8921bd61438bffcd319399cfe
Diffstat (limited to 'src/com')
3 files changed, 30 insertions, 13 deletions
diff --git a/src/com/android/car/media/localmediaplayer/LocalMediaBrowserService.java b/src/com/android/car/media/localmediaplayer/LocalMediaBrowserService.java index 6f3e5fd..26a440f 100644 --- a/src/com/android/car/media/localmediaplayer/LocalMediaBrowserService.java +++ b/src/com/android/car/media/localmediaplayer/LocalMediaBrowserService.java @@ -113,10 +113,6 @@ public class LocalMediaBrowserService extends MediaBrowserService { public void onCreate() { super.onCreate(); - if (!Utils.hasRequiredPermissions(this)) { - Utils.startPermissionRequest(this); - } - mDataModel = new DataModel(this); addRootItems(); mSession = new MediaSession(this, MEDIA_SESSION_TAG); diff --git a/src/com/android/car/media/localmediaplayer/Player.java b/src/com/android/car/media/localmediaplayer/Player.java index 2bb763b..e39b394 100644 --- a/src/com/android/car/media/localmediaplayer/Player.java +++ b/src/com/android/car/media/localmediaplayer/Player.java @@ -173,7 +173,7 @@ public class Player extends MediaSession.Callback { } // Check permissions every time we try to play if (!Utils.hasRequiredPermissions(mContext)) { - Utils.startPermissionRequest(mContext); + setMissingPermissionError(); } else { requestAudioFocus(() -> resumePlayback()); } @@ -231,6 +231,25 @@ public class Player extends MediaSession.Callback { editor.commit(); } + private void setMissingPermissionError() { + Intent prefsIntent = new Intent(); + prefsIntent.setClass(mContext, PermissionsActivity.class); + prefsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, prefsIntent, 0); + + Bundle extras = new Bundle(); + extras.putString(Utils.ERROR_RESOLUTION_ACTION_LABEL, + mContext.getString(R.string.permission_error_resolve)); + extras.putParcelable(Utils.ERROR_RESOLUTION_ACTION_INTENT, pendingIntent); + + PlaybackState state = new PlaybackState.Builder() + .setState(PlaybackState.STATE_ERROR, 0, 0) + .setErrorMessage(mContext.getString(R.string.permission_error)) + .setExtras(extras) + .build(); + mSession.setPlaybackState(state); + } + private boolean maybeRebuildQueue(Playlist playlist) { List<QueueItem> queue = new ArrayList<>(); int foundIdx = 0; @@ -269,6 +288,10 @@ public class Player extends MediaSession.Callback { } public boolean maybeRestoreState() { + if (!Utils.hasRequiredPermissions(mContext)) { + setMissingPermissionError(); + return false; + } String serialized = mSharedPrefs.getString(CURRENT_PLAYLIST_KEY, null); if (serialized == null) { return false; diff --git a/src/com/android/car/media/localmediaplayer/Utils.java b/src/com/android/car/media/localmediaplayer/Utils.java index d761794..5df3760 100644 --- a/src/com/android/car/media/localmediaplayer/Utils.java +++ b/src/com/android/car/media/localmediaplayer/Utils.java @@ -27,6 +27,12 @@ public class Utils { android.Manifest.permission.READ_EXTERNAL_STORAGE }; + static final String ERROR_RESOLUTION_ACTION_INTENT = + "android.media.extras.ERROR_RESOLUTION_ACTION_INTENT"; + + static final String ERROR_RESOLUTION_ACTION_LABEL = + "android.media.extras.ERROR_RESOLUTION_ACTION_LABEL"; + static Uri getUriForResource(Context context, int id) { Resources res = context.getResources(); return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE @@ -43,12 +49,4 @@ public class Utils { } return true; } - - static void startPermissionRequest(Context context) { - if (!Utils.hasRequiredPermissions(context)) { - Intent intent = new Intent(context, PermissionsActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - } - } } |
