diff options
| author | Likai Ding <likaid@codeaurora.org> | 2016-02-25 15:01:30 +0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-03-17 23:34:24 -0700 |
| commit | 80eaa18ac94163ff3abf49b64caa90d43da4fc4c (patch) | |
| tree | de7a974a082b017f0430f4e67053cd6739265b07 /src | |
| parent | 2c07233db1d15bc5cae3dc899cd1982693b7377b (diff) | |
| download | android_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
Diffstat (limited to 'src')
| -rw-r--r-- | src/com/android/gallery3d/app/GalleryActivity.java | 40 |
1 files changed, 37 insertions, 3 deletions
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(); |
