fixes an issue where documents with some string path coudln't be loaded on the android 8.0

This commit is contained in:
Miguel Ruivo 2018-12-06 12:20:36 +00:00
parent 8d84ef874f
commit 2088729655
2 changed files with 16 additions and 9 deletions

View File

@ -48,7 +48,7 @@ public class FilePickerPlugin implements MethodCallHandler {
if (data != null) {
Uri uri = data.getData();
Log.i(TAG, "URI:" +data.getData().toString());
String fullPath = FilePath.getPath(uri, instance.context());
String fullPath = FileUtils.getPath(uri, instance.context());
String cloudFile = null;
if(fullPath == null)

View File

@ -8,12 +8,13 @@ import android.os.Build;
import android.os.Environment;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.util.Log;
/**
* Credits to NiRRaNjAN from package in.gauriinfotech.commons;.
**/
public class FilePath
public class FileUtils
{
private static final String tag = "FilePathPicker";
@ -56,16 +57,22 @@ public class FilePath
Log.e(tag, "+++ Primary External Document URI");
return Environment.getExternalStorageDirectory() + "/" + split[1];
}
} else if (isDownloadsDocument(uri))
{
} else if (isDownloadsDocument(uri)) {
Log.e(tag, "+++ Downloads External Document URI");
final String id = DocumentsContract.getDocumentId(uri);
final Uri contentUri = ContentUris.withAppendedId(
Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
return getDataColumn(context, contentUri, null, null);
} else if (isMediaDocument(uri))
{
if (!TextUtils.isEmpty(id)) {
if (id.startsWith("raw:")) {
return id.replaceFirst("raw:", "");
}
try {
final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
return getDataColumn(context, contentUri, null, null);
} catch (Exception e) {
Log.e(tag, "+++ Something went wrong while retrieving document path: " + e.toString());
}
}
} else if (isMediaDocument(uri)) {
Log.e(tag, "+++ Media Document URI");
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");