To access external sdcard .
First call uri.getEncodedPath() to get the encoded path
"
/external_files/3161-3330/WhatsApp/Media/WhatsApp%20Documents/All%20Currency.pdf
"
Then use below logic to get file path of external storage
public String getFilePath(){
if (isKitKat && DocumentsContract.isDocumentUri(mContext, uri)) {
// ExternalStorageProvider
if (com.android.externalstorage.documents".equals(uri.getAuthority())) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
final String type = split[0];
if ("primary".equalsIgnoreCase(type)) {
return Environment.getExternalStorageDirectory() + "/" + split[1];
} else {
return "/storage" + "/" + split[0] + "/" + split[1];
}
}
}
}
getFilePath() will give :
/storage/emulated/0/3161-3330/WhatsApp/Media/WhatsApp Documents/All
Currency.pdf
where uri path starts with
/external_files/
and file path starts with
/storage/
Hence , we have to add below line
in
@xml/provider_paths.xml