summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java39
1 files changed, 26 insertions, 13 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
index fbbdf087b0..cb9260b3cd 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
@@ -15,6 +15,7 @@ import com.mapbox.mapboxsdk.geometry.LatLngBounds;
import com.mapbox.mapboxsdk.log.Logger;
import com.mapbox.mapboxsdk.net.ConnectivityReceiver;
import com.mapbox.mapboxsdk.storage.FileSource;
+import com.mapbox.mapboxsdk.utils.FileUtils;
import java.io.File;
import java.io.FileInputStream;
@@ -235,20 +236,32 @@ public class OfflineManager {
*/
public void mergeOfflineRegions(@NonNull String path, @NonNull final MergeOfflineRegionsCallback callback) {
File src = new File(path);
- if (!src.canRead()) {
- // path not readable, abort
- callback.onError("Secondary database needs to be located in a readable path.");
- return;
- }
+ new FileUtils.CheckFileReadPermissionTask(new FileUtils.OnCheckFileReadPermissionListener() {
+ @Override
+ public void onReadPermissionGranted() {
+ new FileUtils.CheckFileWritePermissionTask(new FileUtils.OnCheckFileWritePermissionListener() {
+ @Override
+ public void onWritePermissionGranted() {
+ // path writable, merge and update schema in place if necessary
+ mergeOfflineDatabaseFiles(src, callback, false);
+ }
- if (src.canWrite()) {
- // path writable, merge and update schema in place if necessary
- mergeOfflineDatabaseFiles(src, callback, false);
- } else {
- // path not writable, copy the the file to temp directory, then merge and update schema on a copy if necessary
- File dst = new File(FileSource.getInternalCachePath(context), src.getName());
- new CopyTempDatabaseFileTask(this, callback).execute(src, dst);
- }
+ @Override
+ public void onError() {
+ // path not writable, copy the the file to temp directory, then merge and update schema on a copy if
+ // necessary
+ File dst = new File(FileSource.getInternalCachePath(context), src.getName());
+ new CopyTempDatabaseFileTask(OfflineManager.this, callback).execute(src, dst);
+ }
+ }).execute(src);
+ }
+
+ @Override
+ public void onError() {
+ // path not readable, abort
+ callback.onError("Secondary database needs to be located in a readable path.");
+ }
+ }).execute(src);
}
private static final class CopyTempDatabaseFileTask extends AsyncTask<Object, Void, Object> {