summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLikai Ding <likaid@codeaurora.org>2016-02-25 15:01:30 +0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-03-17 23:34:24 -0700
commit80eaa18ac94163ff3abf49b64caa90d43da4fc4c (patch)
treede7a974a082b017f0430f4e67053cd6739265b07
parent2c07233db1d15bc5cae3dc899cd1982693b7377b (diff)
downloadandroid_packages_apps_Gallery2-80eaa18ac94163ff3abf49b64caa90d43da4fc4c.tar.gz
android_packages_apps_Gallery2-80eaa18ac94163ff3abf49b64caa90d43da4fc4c.tar.bz2
android_packages_apps_Gallery2-80eaa18ac94163ff3abf49b64caa90d43da4fc4c.zip
Gallery: runtime permission check
Some permissions are not used anymore so they are removed from manifest. Storage permission is required on startup. Change-Id: I46bd46b4f59667cd5818e53a37621ded8727b60e CRs-Fixed: 977136
-rw-r--r--AndroidManifest.xml7
-rw-r--r--src/com/android/gallery3d/app/GalleryActivity.java40
2 files changed, 38 insertions, 9 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d9d9b4eb5..91a243c20 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -24,23 +24,18 @@
<original-package android:name="com.android.gallery3d" />
- <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="18"/>
+ <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="23"/>
<permission android:name="com.android.gallery3d.permission.GALLERY_PROVIDER"
android:protectionLevel="signatureOrSystem" />
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission android:name="android.permission.CAMERA" />
- <uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
- <uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.VIBRATE" />
diff --git a/src/com/android/gallery3d/app/GalleryActivity.java b/src/com/android/gallery3d/app/GalleryActivity.java
index 88de5bdff..9d9f92cff 100644
--- a/src/com/android/gallery3d/app/GalleryActivity.java
+++ b/src/com/android/gallery3d/app/GalleryActivity.java
@@ -28,9 +28,11 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
+import android.Manifest;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
@@ -103,6 +105,10 @@ public final class GalleryActivity extends AbstractGalleryActivity implements On
* such as Intent.ACTION_VIEW, Intent.ACTION_GET_CONTENT, Intent.PICK. */
private boolean mDrawerLayoutSupported = true;
+ private static final int PERMISSION_REQUEST_STORAGE = 1;
+ private Bundle mSavedInstanceState;
+
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -116,8 +122,20 @@ public final class GalleryActivity extends AbstractGalleryActivity implements On
setContentView(R.layout.gallery_main);
initView();
- if (savedInstanceState != null) {
- getStateManager().restoreFromState(savedInstanceState);
+ mSavedInstanceState = savedInstanceState;
+ if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
+ != PackageManager.PERMISSION_GRANTED) {
+ requestPermissions(new String[] {
+ Manifest.permission.WRITE_EXTERNAL_STORAGE
+ }, PERMISSION_REQUEST_STORAGE);
+ } else {
+ init();
+ }
+ }
+
+ private void init() {
+ if (mSavedInstanceState != null) {
+ getStateManager().restoreFromState(mSavedInstanceState);
} else {
initializeByIntent();
}
@@ -125,6 +143,23 @@ public final class GalleryActivity extends AbstractGalleryActivity implements On
boolean ddmBulk = SystemProperties.getBoolean("persist.gallery.dualcam.ddmbulk", false);
if(ddmBulk)
startBulkMpoProcess();
+
+ mSavedInstanceState = null;
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String permissions[],
+ int[] grantResults) {
+ switch (requestCode) {
+ case PERMISSION_REQUEST_STORAGE: {
+ if (grantResults.length > 0
+ && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ init();
+ } else {
+ finish();
+ }
+ }
+ }
}
private static class ActionItem {
@@ -539,7 +574,6 @@ public final class GalleryActivity extends AbstractGalleryActivity implements On
@Override
protected void onResume() {
- Utils.assertTrue(getStateManager().getStateCount() > 0);
super.onResume();
if (mVersionCheckDialog != null) {
mVersionCheckDialog.show();