From 67fb59e9dc7ec9f98ad76f6809dbc98d240c451e Mon Sep 17 00:00:00 2001 From: Mike Hardy Date: Thu, 8 Nov 2018 04:24:38 -0500 Subject: [PATCH] build: fix all deprecation and lint in ShareFile(s) (#374) --- android/src/main/java/cl/json/ShareFile.java | 25 ++++++++----------- android/src/main/java/cl/json/ShareFiles.java | 25 +++++++++++-------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/android/src/main/java/cl/json/ShareFile.java b/android/src/main/java/cl/json/ShareFile.java index 61969b48..90467c5b 100644 --- a/android/src/main/java/cl/json/ShareFile.java +++ b/android/src/main/java/cl/json/ShareFile.java @@ -1,12 +1,10 @@ package cl.json; -import android.content.CursorLoader; -import android.content.Intent; import android.database.Cursor; -import android.media.MediaScannerConnection; import android.net.Uri; import android.os.Environment; import android.provider.MediaStore; +import android.support.v4.content.CursorLoader; import android.support.v4.content.FileProvider; import android.util.Base64; import android.webkit.MimeTypeMap; @@ -16,8 +14,6 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.io.StringReader; -import java.net.URI; /** * Created by disenodosbbcl on 22-07-16. @@ -28,7 +24,6 @@ public class ShareFile { private String url; private Uri uri; private String type; - private String extension = ""; public ShareFile(String url, String type, ReactApplicationContext reactContext){ this(url, reactContext); @@ -42,7 +37,7 @@ public ShareFile(String url, ReactApplicationContext reactContext){ } /** * Obtain mime type from URL - * @param {@link String} url + * @param url {@link String} * @return {@link String} mime type */ private String getMimeType(String url) { @@ -60,7 +55,7 @@ private String getMimeType(String url) { public boolean isFile() { return this.isBase64File() || this.isLocalFile(); } - public boolean isBase64File() { + private boolean isBase64File() { String scheme = uri.getScheme(); if((scheme != null) && uri.getScheme().equals("data")) { this.type = this.uri.getSchemeSpecificPart().substring(0, this.uri.getSchemeSpecificPart().indexOf(";")); @@ -68,7 +63,7 @@ public boolean isBase64File() { } return false; } - public boolean isLocalFile() { + private boolean isLocalFile() { String scheme = uri.getScheme(); if((scheme != null) && (uri.getScheme().equals("content") || uri.getScheme().equals("file"))) { // type is already set @@ -117,17 +112,17 @@ private String getRealPathFromURI(Uri contentUri) { public Uri getURI() { final MimeTypeMap mime = MimeTypeMap.getSingleton(); - this.extension = mime.getExtensionFromMimeType(getType()); + String extension = mime.getExtensionFromMimeType(getType()); final String authority = ((ShareApplication) reactContext.getApplicationContext()).getFileProviderAuthority(); if(this.isBase64File()) { String encodedImg = this.uri.getSchemeSpecificPart().substring(this.uri.getSchemeSpecificPart().indexOf(";base64,") + 8); try { File dir = new File(Environment.getExternalStorageDirectory(), Environment.DIRECTORY_DOWNLOADS ); - if (!dir.exists()) { - dir.mkdirs(); + if (!dir.exists() && !dir.mkdirs()) { + throw new IOException("mkdirs failed on " + dir.getAbsolutePath()); } - File file = new File(dir, System.nanoTime() + "." + this.extension); + File file = new File(dir, System.nanoTime() + "." + extension); final FileOutputStream fos = new FileOutputStream(file); fos.write(Base64.decode(encodedImg, Base64.DEFAULT)); fos.flush(); @@ -139,7 +134,9 @@ public Uri getURI() { } } else if(this.isLocalFile()) { Uri uri = Uri.parse(this.url); - + if (uri.getPath() == null) { + return null; + } return FileProvider.getUriForFile(reactContext, authority, new File(uri.getPath())); } diff --git a/android/src/main/java/cl/json/ShareFiles.java b/android/src/main/java/cl/json/ShareFiles.java index 060f6186..f8ccba09 100644 --- a/android/src/main/java/cl/json/ShareFiles.java +++ b/android/src/main/java/cl/json/ShareFiles.java @@ -1,10 +1,10 @@ package cl.json; -import android.content.CursorLoader; import android.database.Cursor; import android.net.Uri; import android.os.Environment; import android.provider.MediaStore; +import android.support.v4.content.CursorLoader; import android.support.v4.content.FileProvider; import android.util.Base64; import android.webkit.MimeTypeMap; @@ -24,7 +24,6 @@ public class ShareFiles { private final ReactApplicationContext reactContext; - private ReadableArray urls; private ArrayList uris; private String intentType; @@ -34,8 +33,7 @@ public ShareFiles(ReadableArray urls, String type, ReactApplicationContext react } public ShareFiles(ReadableArray urls, ReactApplicationContext reactContext){ - this.urls = urls; - this.uris = new ArrayList(); + this.uris = new ArrayList<>(); for (int i = 0; i < urls.size(); i++) { String url = urls.getString(i); if (url != null) { @@ -47,7 +45,7 @@ public ShareFiles(ReadableArray urls, ReactApplicationContext reactContext){ } /** * Obtain mime type from URL - * @param {@link String} url + * @param url {@link String} * @return {@link String} mime type */ private String getMimeType(String url) { @@ -79,7 +77,7 @@ private boolean isBase64File(Uri uri) { String type = uri.getSchemeSpecificPart().substring(0, uri.getSchemeSpecificPart().indexOf(";")); if (this.intentType == null) { this.intentType = type; - } else if (type != null && !this.intentType.equalsIgnoreCase(type) && this.intentType.split("/")[0].equalsIgnoreCase((type.split("/"))[0])) { + } else if (!this.intentType.equalsIgnoreCase(type) && this.intentType.split("/")[0].equalsIgnoreCase((type.split("/"))[0])) { this.intentType = (this.intentType.split("/")[0]).concat("/*"); } else if (!this.intentType.equalsIgnoreCase(type)) { this.intentType = "*/*"; @@ -90,7 +88,7 @@ private boolean isBase64File(Uri uri) { } private boolean isLocalFile(Uri uri) { String scheme = uri.getScheme(); - if((scheme != null) && uri.getScheme().equals("content") || uri.getScheme().equals("file")) { + if((scheme != null) && uri.getScheme().equals("content") || "file".equals(uri.getScheme())) { // // type is already set // if (this.type != null) { // return true; @@ -109,7 +107,7 @@ private boolean isLocalFile(Uri uri) { if (this.intentType == null) { this.intentType = type; - } else if (type != null && !this.intentType.equalsIgnoreCase(type) && this.intentType.split("/")[0].equalsIgnoreCase((type.split("/"))[0])) { + } else if (!this.intentType.equalsIgnoreCase(type) && this.intentType.split("/")[0].equalsIgnoreCase((type.split("/"))[0])) { this.intentType = (this.intentType.split("/")[0]).concat("/*"); } else if (!this.intentType.equalsIgnoreCase(type)) { this.intentType = "*/*"; @@ -131,6 +129,9 @@ private String getRealPathFromURI(Uri contentUri) { String[] proj = { MediaStore.Images.Media.DATA }; CursorLoader loader = new CursorLoader(this.reactContext, contentUri, proj, null, null, null); Cursor cursor = loader.loadInBackground(); + if (cursor == null) { + return ""; + } int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); String result = cursor.getString(column_index); @@ -150,8 +151,8 @@ public ArrayList getURI() { String encodedImg = uri.getSchemeSpecificPart().substring(uri.getSchemeSpecificPart().indexOf(";base64,") + 8); try { File dir = new File(Environment.getExternalStorageDirectory(), Environment.DIRECTORY_DOWNLOADS ); - if (!dir.exists()) { - dir.mkdirs(); + if (!dir.exists() && !dir.mkdirs()) { + throw new IOException("mkdirs failed on " + dir.getAbsolutePath()); } File file = new File(dir, System.currentTimeMillis() + "." + extension); final FileOutputStream fos = new FileOutputStream(file); @@ -163,7 +164,9 @@ public ArrayList getURI() { e.printStackTrace(); } } else if(this.isLocalFile(uri)) { - finalUris.add(FileProvider.getUriForFile(reactContext, authority, new File(uri.getPath()))); + if (uri.getPath() != null) { + finalUris.add(FileProvider.getUriForFile(reactContext, authority, new File(uri.getPath()))); + } } }