summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/FileUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/FileUtils.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/FileUtils.java121
1 files changed, 121 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/FileUtils.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/FileUtils.java
new file mode 100644
index 0000000000..b7d09cda2a
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/FileUtils.java
@@ -0,0 +1,121 @@
+package com.mapbox.mapboxsdk.utils;
+
+import android.os.AsyncTask;
+
+import java.io.File;
+import java.lang.ref.WeakReference;
+
+public class FileUtils {
+
+ /**
+ * Task checking whether app's process can read a file.
+ */
+ public static class CheckFileReadPermissionTask extends AsyncTask<File, Void, Boolean> {
+ private final WeakReference<OnCheckFileReadPermissionListener> listenerWeakReference;
+
+ public CheckFileReadPermissionTask(OnCheckFileReadPermissionListener listener) {
+ this.listenerWeakReference = new WeakReference<>(listener);
+ }
+
+ @Override
+ protected Boolean doInBackground(File... files) {
+ try {
+ return files[0].canRead();
+ } catch (Exception ex) {
+ return false;
+ }
+ }
+
+ @Override
+ protected void onCancelled() {
+ OnCheckFileReadPermissionListener listener = listenerWeakReference.get();
+ if (listener != null) {
+ listener.onError();
+ }
+ }
+
+ @Override
+ protected void onPostExecute(Boolean result) {
+ OnCheckFileReadPermissionListener listener = listenerWeakReference.get();
+ if (listener != null) {
+ if (result) {
+ listener.onReadPermissionGranted();
+ } else {
+ listener.onError();
+ }
+ }
+ }
+ }
+
+ /**
+ * Interface definition for a callback invoked when checking file's read permissions.
+ */
+ public interface OnCheckFileReadPermissionListener {
+
+ /**
+ * Invoked when app's process has a permission to read a file.
+ */
+ void onReadPermissionGranted();
+
+ /**
+ * Invoked when app's process doesn't have a permission to read a file or an error occurs.
+ */
+ void onError();
+ }
+
+ /**
+ * Task checking whether app's process can write to a file.
+ */
+ public static class CheckFileWritePermissionTask extends AsyncTask<File, Void, Boolean> {
+ private final WeakReference<OnCheckFileWritePermissionListener> listenerWeakReference;
+
+ public CheckFileWritePermissionTask(OnCheckFileWritePermissionListener listener) {
+ this.listenerWeakReference = new WeakReference<>(listener);
+ }
+
+ @Override
+ protected Boolean doInBackground(File... files) {
+ try {
+ return files[0].canWrite();
+ } catch (Exception ex) {
+ return false;
+ }
+ }
+
+ @Override
+ protected void onCancelled() {
+ OnCheckFileWritePermissionListener listener = listenerWeakReference.get();
+ if (listener != null) {
+ listener.onError();
+ }
+ }
+
+ @Override
+ protected void onPostExecute(Boolean result) {
+ OnCheckFileWritePermissionListener listener = listenerWeakReference.get();
+ if (listener != null) {
+ if (result) {
+ listener.onWritePermissionGranted();
+ } else {
+ listener.onError();
+ }
+ }
+ }
+ }
+
+ /**
+ * Interface definition for a callback invoked when checking file's write permissions.
+ */
+ public interface OnCheckFileWritePermissionListener {
+
+ /**
+ * Invoked when app's process has a permission to write to a file.
+ */
+ void onWritePermissionGranted();
+
+ /**
+ * Invoked when app's process doesn't have a permission to write to a file or an error occurs.
+ */
+ void onError();
+ }
+}