From 56f6069ad97401dded614e1c2551c4317e0bc7dd Mon Sep 17 00:00:00 2001 From: Chaitanya Anand Date: Fri, 7 Aug 2020 23:20:15 +0530 Subject: [PATCH 1/3] Added support for Android API 29 --- android/build.gradle | 8 +++---- .../gradle/wrapper/gradle-wrapper.properties | 4 ++-- .../java/com/RNFetchBlob/RNFetchBlob.java | 16 +++++-------- .../java/com/RNFetchBlob/RNFetchBlobFS.java | 24 +++++++++---------- .../com/RNFetchBlob/Utils/PathResolver.java | 3 +-- 5 files changed, 25 insertions(+), 30 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index a4ca7a421..9b44e0c5d 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -16,16 +16,16 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:4.0.1' } } android { - compileSdkVersion safeExtGet('compileSdkVersion', 28) + compileSdkVersion safeExtGet('compileSdkVersion', 30) buildToolsVersion safeExtGet('buildToolsVersion', '28.0.3') defaultConfig { minSdkVersion safeExtGet('minSdkVersion', 16) - targetSdkVersion safeExtGet('targetSdkVersion', 28) + targetSdkVersion safeExtGet('targetSdkVersion', 30) versionCode 1 versionName "1.0" } @@ -41,6 +41,6 @@ android { dependencies { implementation "com.facebook.react:react-native:${safeExtGet('reactNativeVersion', '+')}" - //compile 'com.squareup.okhttp3:okhttp:+' + //implementation 'com.squareup.okhttp3:okhttp:+' //{RNFetchBlob_PRE_0.28_DEPDENDENCY} } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index c75df059d..ecceb2dea 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Jun 01 10:33:07 BRT 2018 +#Fri Aug 07 22:58:34 IST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip diff --git a/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java b/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java index 602d51d33..a972228ea 100644 --- a/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java +++ b/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java @@ -24,7 +24,8 @@ import com.facebook.react.modules.network.ForwardingCookieHandler; import com.facebook.react.modules.network.CookieJarContainer; import com.facebook.react.modules.network.OkHttpClientProvider; -import okhttp3.OkHttpClient; +import com.squareup.okhttp.OkHttpClient; + import okhttp3.JavaNetCookieJar; import java.io.File; @@ -60,18 +61,13 @@ public RNFetchBlob(ReactApplicationContext reactContext) { RCTContext = reactContext; reactContext.addActivityEventListener(new ActivityEventListener() { @Override - public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) { + public void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == GET_CONTENT_INTENT && resultCode == RESULT_OK) { Uri d = data.getData(); promiseTable.get(GET_CONTENT_INTENT).resolve(d.toString()); promiseTable.remove(GET_CONTENT_INTENT); } } - - @Override - public void onNewIntent(Intent intent) { - - } }); } @@ -108,7 +104,7 @@ public void run() { @ReactMethod public void actionViewIntent(String path, String mime, final Promise promise) { try { - Uri uriForFile = FileProvider.getUriForFile(getCurrentActivity(), + Uri uriForFile = FileProvider.getUriForFile(this.getReactApplicationContext(), this.getReactApplicationContext().getPackageName() + ".provider", new File(path)); if (Build.VERSION.SDK_INT >= 24) { @@ -336,7 +332,7 @@ public void df(final Callback callback) { fsThreadPool.execute(new Runnable() { @Override public void run() { - RNFetchBlobFS.df(callback); + RNFetchBlobFS.df(callback, getReactApplicationContext()); } }); } @@ -404,7 +400,7 @@ public void addCompleteDownload (ReadableMap config, Promise promise) { @ReactMethod public void getSDCardDir(Promise promise) { - RNFetchBlobFS.getSDCardDir(promise); + RNFetchBlobFS.getSDCardDir(this.getReactApplicationContext(), promise); } @ReactMethod diff --git a/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java b/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java index a4d70153f..124bb81d7 100644 --- a/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java +++ b/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java @@ -252,16 +252,16 @@ static Map getSystemfolders(ReactApplicationContext ctx) { res.put("DocumentDir", ctx.getFilesDir().getAbsolutePath()); res.put("CacheDir", ctx.getCacheDir().getAbsolutePath()); - res.put("DCIMDir", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath()); - res.put("PictureDir", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath()); - res.put("MusicDir", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getAbsolutePath()); - res.put("DownloadDir", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()); - res.put("MovieDir", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).getAbsolutePath()); - res.put("RingtoneDir", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES).getAbsolutePath()); + res.put("DCIMDir", ctx.getExternalFilesDir(Environment.DIRECTORY_DCIM).getAbsolutePath()); + res.put("PictureDir", ctx.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath()); + res.put("MusicDir", ctx.getExternalFilesDir(Environment.DIRECTORY_MUSIC).getAbsolutePath()); + res.put("DownloadDir", ctx.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()); + res.put("MovieDir", ctx.getExternalFilesDir(Environment.DIRECTORY_MOVIES).getAbsolutePath()); + res.put("RingtoneDir", ctx.getExternalFilesDir(Environment.DIRECTORY_RINGTONES).getAbsolutePath()); String state; state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED)) { - res.put("SDCardDir", Environment.getExternalStorageDirectory().getAbsolutePath()); + res.put("SDCardDir", ctx.getExternalFilesDir(null).getAbsolutePath()); File externalDirectory = ctx.getExternalFilesDir(null); @@ -276,9 +276,9 @@ static Map getSystemfolders(ReactApplicationContext ctx) { return res; } - static public void getSDCardDir(Promise promise) { + static public void getSDCardDir(ReactApplicationContext ctx, Promise promise) { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { - promise.resolve(Environment.getExternalStorageDirectory().getAbsolutePath()); + promise.resolve(ctx.getExternalFilesDir(null).getAbsolutePath()); } else { promise.reject("RNFetchBlob.getSDCardDir", "External storage not mounted"); } @@ -986,13 +986,13 @@ static void createFileASCII(String path, ReadableArray data, Promise promise) { } } - static void df(Callback callback) { - StatFs stat = new StatFs(Environment.getDataDirectory().getPath()); + static void df(Callback callback, ReactApplicationContext ctx) { + StatFs stat = new StatFs(ctx.getFilesDir().getPath()); WritableMap args = Arguments.createMap(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { args.putString("internal_free", String.valueOf(stat.getFreeBytes())); args.putString("internal_total", String.valueOf(stat.getTotalBytes())); - StatFs statEx = new StatFs(Environment.getExternalStorageDirectory().getPath()); + StatFs statEx = new StatFs(ctx.getExternalFilesDir(null).getPath()); args.putString("external_free", String.valueOf(statEx.getFreeBytes())); args.putString("external_total", String.valueOf(statEx.getTotalBytes())); diff --git a/android/src/main/java/com/RNFetchBlob/Utils/PathResolver.java b/android/src/main/java/com/RNFetchBlob/Utils/PathResolver.java index c83fdbaf6..c20c1943b 100644 --- a/android/src/main/java/com/RNFetchBlob/Utils/PathResolver.java +++ b/android/src/main/java/com/RNFetchBlob/Utils/PathResolver.java @@ -8,7 +8,6 @@ import android.provider.DocumentsContract; import android.provider.MediaStore; import android.content.ContentUris; -import android.os.Environment; import android.content.ContentResolver; import com.RNFetchBlob.RNFetchBlobUtils; import java.io.File; @@ -30,7 +29,7 @@ public static String getRealPathFromURI(final Context context, final Uri uri) { final String type = split[0]; if ("primary".equalsIgnoreCase(type)) { - return Environment.getExternalStorageDirectory() + "/" + split[1]; + return context.getExternalFilesDir(null) + "/" + split[1]; } // TODO handle non-primary volumes From e221b0afa07aa059d2013e713e6e68dc299aea68 Mon Sep 17 00:00:00 2001 From: Chaitanya Anand Date: Sat, 8 Aug 2020 00:02:19 +0530 Subject: [PATCH 2/3] Added support for Android API 29 --- android/build.gradle | 6 ++++-- android/src/main/java/com/RNFetchBlob/RNFetchBlob.java | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 9b44e0c5d..7c0392bc4 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -41,6 +41,8 @@ android { dependencies { implementation "com.facebook.react:react-native:${safeExtGet('reactNativeVersion', '+')}" - //implementation 'com.squareup.okhttp3:okhttp:+' - //{RNFetchBlob_PRE_0.28_DEPDENDENCY} + implementation 'com.squareup.okhttp3:okhttp:+' + implementation 'com.squareup.okhttp3:logging-interceptor:+' + implementation 'com.squareup.okhttp3:okhttp-urlconnection:+' +// {RNFetchBlob_PRE_0.28_DEPDENDENCY} } diff --git a/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java b/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java index a972228ea..02ba0eca7 100644 --- a/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java +++ b/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java @@ -24,9 +24,9 @@ import com.facebook.react.modules.network.ForwardingCookieHandler; import com.facebook.react.modules.network.CookieJarContainer; import com.facebook.react.modules.network.OkHttpClientProvider; -import com.squareup.okhttp.OkHttpClient; import okhttp3.JavaNetCookieJar; +import okhttp3.OkHttpClient; import java.io.File; import java.util.Map; From dccab7e9667d3a7c5287c8840c1291e1ade8fb0a Mon Sep 17 00:00:00 2001 From: Chaitanya Anand Date: Sat, 8 Aug 2020 00:05:23 +0530 Subject: [PATCH 3/3] Added support for Android API 29 --- android/src/main/java/com/RNFetchBlob/RNFetchBlob.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java b/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java index 02ba0eca7..b53c68453 100644 --- a/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java +++ b/android/src/main/java/com/RNFetchBlob/RNFetchBlob.java @@ -61,13 +61,18 @@ public RNFetchBlob(ReactApplicationContext reactContext) { RCTContext = reactContext; reactContext.addActivityEventListener(new ActivityEventListener() { @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { + public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) { if(requestCode == GET_CONTENT_INTENT && resultCode == RESULT_OK) { Uri d = data.getData(); promiseTable.get(GET_CONTENT_INTENT).resolve(d.toString()); promiseTable.remove(GET_CONTENT_INTENT); } } + + @Override + public void onNewIntent(Intent intent) { + + } }); }