diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-03-23 02:21:58 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-03-23 02:21:58 -0700 |
| commit | 20a40e098cf5bcacb15ac6fd5502fa2105d52dcb (patch) | |
| tree | 95b9273db561f600c179eb15061e1ac29b118a41 | |
| parent | 35db5a396ebb907028c518b1df81ddee99109b11 (diff) | |
| parent | 80eaa18ac94163ff3abf49b64caa90d43da4fc4c (diff) | |
| download | android_packages_apps_Gallery2-20a40e098cf5bcacb15ac6fd5502fa2105d52dcb.tar.gz android_packages_apps_Gallery2-20a40e098cf5bcacb15ac6fd5502fa2105d52dcb.tar.bz2 android_packages_apps_Gallery2-20a40e098cf5bcacb15ac6fd5502fa2105d52dcb.zip | |
Merge "Gallery: runtime permission check" into android_ui.lnx.1.2-dev
| -rw-r--r-- | AndroidManifest.xml | 7 | ||||
| -rw-r--r-- | src/com/android/gallery3d/app/GalleryActivity.java | 40 |
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(); |
