LA.UM.7.6.2/LINUX/android/packages/screensavers/PhotoTable/src/com/android/dreams/phototable/FlipperDreamSettings.java
old mode 100644
new mode 100755
index cd24721..72eb1e0
@@ -28,5 +28,9 @@ import android.view.View;
import java.util.LinkedList;
-
+import android.util.Log;
+import android.Manifest;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import java.util.ArrayList;
/**
* Settings panel for photo flipping dream.
@@ -43,12 +47,82 @@ public class FlipperDreamSettings extends ListActivity {
private MenuItem mSelectAll;
private AsyncTask<Void, Void, Void> mLoadingTask;
+ public static final int PERMISSION_REQUEST_STORAGE = 1;
+ private boolean permissionGranted = false;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
+ requestStoragePermission();
mSettings = getSharedPreferences(PREFS_NAME, 0);
init();
}
+ private void requestStoragePermission() {
+ String[] permissions = {
+ Manifest.permission.WRITE_EXTERNAL_STORAGE,
+ Manifest.permission.READ_EXTERNAL_STORAGE
+ };
+ requestPermission(permissions, PERMISSION_REQUEST_STORAGE);
+ }
+
+ protected void requestPermission(String[] permissions, int requestCode) {
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+ permissionGranted = true;
+ return;
+ }
+
+ boolean needRequest = false;
+ ArrayList<String> permissionList = new ArrayList<String>();
+ for (String permission : permissions) {
+ if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
+ permissionList.add(permission);
+ needRequest = true;
+ }
+ }
+
+ if (needRequest) {
+ int count = permissionList.size();
+ if (count > 0) {
+ String[] permissionArray = new String[count];
+ for (int i = 0; i < count; i++) {
+ permissionArray[i] = permissionList.get(i);
+ }
+ Log.d("FlipperDreamSettings", "requestPermission requestPermissions");
+ requestPermissions(permissionArray, requestCode);
+ }
+ }
+ permissionGranted = !needRequest;
+ }
+
+ private boolean checkPermissionGrantResults(int[] grantResults) {
+ for (int result : grantResults) {
+ if (result != PackageManager.PERMISSION_GRANTED) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String[] permissions,
+ int[] grantResults) {
+ permissionGranted = checkPermissionGrantResults(grantResults);
+
+ Log.d("FlipperDreamSettings", "onRequestPermissionsResult permissionGranted = "+permissionGranted);
+ switch (requestCode) {
+ case PERMISSION_REQUEST_STORAGE: {
+ if (permissionGranted) {
+ Log.d("FlipperDreamSettings","onGetPermissionsSuccess");
+ } else {
+ Log.d("FlipperDreamSettings","onGetPermissionsFailure");
+ }
+ }
+ }
+ }
+
+ protected boolean isPermissionGranted() {
+ return permissionGranted;
+ }
+
@Override
protected void onResume(){