diff options
-rw-r--r-- | WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java | 42 | ||||
-rw-r--r-- | WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java | 2 | ||||
-rw-r--r-- | res/values/cm_strings.xml | 2 |
3 files changed, 45 insertions, 1 deletions
diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java index 4aa51dbd9..1efe30104 100644 --- a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java +++ b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java @@ -16,6 +16,7 @@ package com.android.launcher3; +import android.Manifest; import android.annotation.TargetApi; import android.app.ActionBar; import android.app.Activity; @@ -23,6 +24,7 @@ import android.app.WallpaperManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageManager; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Bitmap; @@ -58,6 +60,8 @@ import java.util.WeakHashMap; public class WallpaperCropActivity extends BaseActivity implements Handler.Callback { private static final String LOGTAG = "Launcher3.CropActivity"; + private static final int REQUEST_CODE_STORAGE_PERMISSION_CHECK = 100; + protected static final String WALLPAPER_WIDTH_KEY = WallpaperUtils.WALLPAPER_WIDTH_KEY; protected static final String WALLPAPER_HEIGHT_KEY = WallpaperUtils.WALLPAPER_HEIGHT_KEY; @@ -90,6 +94,34 @@ public class WallpaperCropActivity extends BaseActivity implements Handler.Callb public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + if (!hasStoragePermissions()) { + requestStoragePermissions(); + } else { + load(); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, + int[] grantResults) { + if (requestCode == REQUEST_CODE_STORAGE_PERMISSION_CHECK) { + for (int i = 0; i < permissions.length; i++ ) { + final String permission = permissions[i]; + final int grantResult = grantResults[i]; + if (permission.equals(Manifest.permission.READ_EXTERNAL_STORAGE)) { + if (grantResult == PackageManager.PERMISSION_GRANTED) { + load(); + } else { + Toast.makeText(this, getString(R.string.storage_permission_denied), + Toast.LENGTH_SHORT).show(); + finish(); + } + } + } + } + } + + private void load() { mLoaderThread = new HandlerThread("wallpaper_loader"); mLoaderThread.start(); mLoaderHandler = new Handler(mLoaderThread.getLooper(), this); @@ -451,6 +483,16 @@ public class WallpaperCropActivity extends BaseActivity implements Handler.Callb sp, getWindowManager(), WallpaperManager.getInstance(getContext()), true); } + private boolean hasStoragePermissions() { + return checkCallingOrSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) == + PackageManager.PERMISSION_GRANTED; + } + + private void requestStoragePermissions() { + requestPermissions(new String[] {android.Manifest.permission.READ_EXTERNAL_STORAGE}, + REQUEST_CODE_STORAGE_PERMISSION_CHECK); + } + static class LoadRequest { BitmapSource src; boolean touchEnabled; diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java index 59858501a..abf202604 100644 --- a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java +++ b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java @@ -721,7 +721,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { public void onStop() { super.onStop(); mWallpaperStrip = findViewById(R.id.wallpaper_strip); - if (mWallpaperStrip.getAlpha() < 1f) { + if (mWallpaperStrip != null && mWallpaperStrip.getAlpha() < 1f) { mWallpaperStrip.setAlpha(1f); mWallpaperStrip.setVisibility(View.VISIBLE); } diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index 1c6aaf868..36a2f2517 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -77,4 +77,6 @@ <!-- App not available toast text --> <string name="app_not_available">App not available</string> + + <string name="storage_permission_denied">Can\'t access storage</string> </resources> |