From http://www.jwz.org/xscreensaver/xscreensaver-5.40.tar.gz
[xscreensaver] / android / xscreensaver / src / org / jwz / xscreensaver / jwxyz.java
index 8ca6af40588b0fcbb8e8affa8d826f48aa0036d8..a22a26d40c9ed708f604c4a333a05405f1c39d79 100644 (file)
@@ -57,6 +57,11 @@ import android.media.ExifInterface;
 import org.jwz.xscreensaver.TTFAnalyzer;
 import android.util.Log;
 import android.view.Surface;
+import android.Manifest;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
+import android.os.Build;
+import android.content.pm.PackageManager;
 
 public class jwxyz
   implements GestureDetector.OnGestureListener,
@@ -100,6 +105,8 @@ public class jwxyz
   public final static int FONT_FACE   = 1;
   public final static int FONT_RANDOM = 2;
 
+  public final static int MY_REQ_READ_EXTERNAL_STORAGE = 271828;
+
   private long nativeRunningHackPtr;
 
   private String hack;
@@ -627,6 +634,38 @@ public class jwxyz
   }
 
 
+  boolean havePermission(String permission) {
+
+        if (Build.VERSION.SDK_INT < 16) {
+            return true;
+        }
+
+        if (permissionGranted(permission)) {
+            return true;
+        }
+
+        return false;
+  }
+
+
+  private boolean permissionGranted(String permission) {
+        boolean check = ContextCompat.checkSelfPermission(app, permission) ==
+                PackageManager.PERMISSION_GRANTED;
+        return check;
+  }
+
+  public Object[] checkThenLoadRandomImage (int target_width, int target_height,
+                                   boolean rotate_p) {
+      // RES introduced in API 16
+      String permission = Manifest.permission.READ_EXTERNAL_STORAGE;
+
+        if (havePermission(permission)) {
+            return loadRandomImage(target_width,target_height,rotate_p);
+        } else {
+            return null;
+        }
+  }
+
   public Object[] loadRandomImage (int target_width, int target_height,
                                    boolean rotate_p) {