Merge "Fix User Level READ_EXTERNAL_STORAGE Permission"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ca8497a..363dda7 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -24,6 +24,7 @@
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
@@ -32,14 +33,15 @@
android:taskAffinity="android.task.music"
android:allowTaskReparenting="true"
android:usesCleartextTraffic="true">
+
<meta-data
android:name="android.app.default_searchable"
- android:value="com.android.music.QueryBrowserActivity"
- />
+ android:value="com.android.music.QueryBrowserActivity"/>
+
+ <!-- The main activity -->
<activity android:name="com.android.music.MusicBrowserActivity"
android:theme="@android:style/Theme.NoTitleBar"
- android:exported="true"
- >
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.MUSIC_PLAYER" />
@@ -48,12 +50,14 @@
<category android:name="android.intent.category.APP_MUSIC" />
</intent-filter>
</activity>
+
<receiver android:name="com.android.music.MediaButtonIntentReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
<action android:name="android.media.AUDIO_BECOMING_NOISY" />
</intent-filter>
</receiver>
+
<!-- This is the "current music playing" panel, which has special
launch behavior. We clear its task affinity, so it will not
be associated with the main media task and if launched
diff --git a/src/com/android/music/MusicBrowserActivity.java b/src/com/android/music/MusicBrowserActivity.java
index 51660ca..426b91c 100644
--- a/src/com/android/music/MusicBrowserActivity.java
+++ b/src/com/android/music/MusicBrowserActivity.java
@@ -16,11 +16,12 @@
package com.android.music;
+import android.Manifest.permission;
+import android.content.pm.PackageManager;
import com.android.music.MusicUtils.ServiceToken;
import android.app.Activity;
import android.content.ComponentName;
-import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
@@ -28,6 +29,7 @@
public class MusicBrowserActivity extends Activity implements MusicUtils.Defs {
private ServiceToken mToken;
+ private static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 42;
public MusicBrowserActivity() {}
@@ -37,6 +39,16 @@
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
+ if (checkSelfPermission(permission.READ_EXTERNAL_STORAGE)
+ != PackageManager.PERMISSION_GRANTED) {
+ requestPermissions(new String[] {permission.READ_EXTERNAL_STORAGE},
+ MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
+ return;
+ }
+ initApp();
+ }
+
+ public void initApp() {
int activeTab = MusicUtils.getIntPref(this, "activetab", R.id.artisttab);
if (activeTab != R.id.artisttab && activeTab != R.id.albumtab && activeTab != R.id.songtab
&& activeTab != R.id.playlisttab) {
@@ -76,4 +88,19 @@
public void onServiceDisconnected(ComponentName classname) {}
};
+
+ @Override
+ public void onRequestPermissionsResult(
+ int requestCode, String permissions[], int[] grantResults) {
+ switch (requestCode) {
+ case MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE: {
+ if (grantResults.length == 0
+ || grantResults[0] != PackageManager.PERMISSION_GRANTED) {
+ finish();
+ return;
+ }
+ initApp();
+ }
+ }
+ }
}