diff options
| author | Xin Li <delphij@google.com> | 2020-09-08 16:55:45 -0700 |
|---|---|---|
| committer | Xin Li <delphij@google.com> | 2020-09-08 16:55:45 -0700 |
| commit | 1bd4a99739f855ede7d1ad035c725d3d187e2db0 (patch) | |
| tree | 14c52d280ad337a3554e6fa0de4ae6327c59dd11 /src/com/android | |
| parent | 7ec358cab4e626301e2a9366a713f480c9f76bb0 (diff) | |
| parent | 0441a5bd3238c1b9731e00c3fad8ca29b3b690f9 (diff) | |
| download | platform_packages_apps_Car_LocalMediaPlayer-master.tar.gz platform_packages_apps_Car_LocalMediaPlayer-master.tar.bz2 platform_packages_apps_Car_LocalMediaPlayer-master.zip | |
Bug: 168057903
Merged-In: I798a1915e669f8ef63b1cd29d4aa408f9ae5bac3
Change-Id: Icaf87efda9f9e49d770619b663aa8c437cc73412
Diffstat (limited to 'src/com/android')
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); - } - } } |
