Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get Real Path For Uri Android

I am developing a VideoPlayer. I convert the URI of a launched intent to a string and it gives me content://media/external...... But I need to get the real path.

For example: /storage/extSdcard.....

How do I do this?

Here is my code if needed:

videoURI = getIntent().getData(); vv.setVideoURI(videoURI);  videoName = videoURI.toString();  tvTitle.setText(videoName); 
like image 403
Timmo Avatar asked Jul 09 '13 10:07

Timmo


People also ask

How to get real path from Uri in android studio?

Show activity on this post. Uri selectedImageURI = data. getData(); //where data is intent return by onActivityResult imageFile = new File(getRealPathFromURI(selectedImageURI));

How to get file path from image Uri in android?

Uri uri = data. getData(); File file = new File(uri. getPath());//create path from uri final String[] split = file. getPath().

How do I get real path from Fileprovider URI?

You can try this solution for get real path from file provider URI. First you need to define file provider path file as following. Declare file provider in AndroidMenifest. xml as following.


1 Answers

Use this code .This is working for all android version.This is tested code.This support all devices

public static String getPathFromUri(final Context context, final Uri uri) {          final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;          // DocumentProvider         if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {             // ExternalStorageProvider             if (isExternalStorageDocument(uri)) {                 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];                 }                  // TODO handle non-primary volumes             }             // DownloadsProvider             else if (isDownloadsDocument(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);             }             // MediaProvider             else if (isMediaDocument(uri)) {                 final String docId = DocumentsContract.getDocumentId(uri);                 final String[] split = docId.split(":");                 final String type = split[0];                  Uri contentUri = null;                 if ("image".equals(type)) {                     contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;                 } else if ("video".equals(type)) {                     contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;                 } else if ("audio".equals(type)) {                     contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;                 }                  final String selection = "_id=?";                 final String[] selectionArgs = new String[] {                         split[1]                 };                  return getDataColumn(context, contentUri, selection, selectionArgs);             }         }         // MediaStore (and general)         else if ("content".equalsIgnoreCase(uri.getScheme())) {              // Return the remote address             if (isGooglePhotosUri(uri))                 return uri.getLastPathSegment();              return getDataColumn(context, uri, null, null);         }         // File         else if ("file".equalsIgnoreCase(uri.getScheme())) {             return uri.getPath();         }          return null;     }      public static String getDataColumn(Context context, Uri uri, String selection,                                        String[] selectionArgs) {          Cursor cursor = null;         final String column = "_data";         final String[] projection = {                 column         };          try {             cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,                     null);             if (cursor != null && cursor.moveToFirst()) {                 final int index = cursor.getColumnIndexOrThrow(column);                 return cursor.getString(index);             }         } finally {             if (cursor != null)                 cursor.close();         }         return null;     }       /**      * @param uri The Uri to check.      * @return Whether the Uri authority is ExternalStorageProvider.      */     public static boolean isExternalStorageDocument(Uri uri) {         return "com.android.externalstorage.documents".equals(uri.getAuthority());     }      /**      * @param uri The Uri to check.      * @return Whether the Uri authority is DownloadsProvider.      */     public static boolean isDownloadsDocument(Uri uri) {         return "com.android.providers.downloads.documents".equals(uri.getAuthority());     }      /**      * @param uri The Uri to check.      * @return Whether the Uri authority is MediaProvider.      */     public static boolean isMediaDocument(Uri uri) {         return "com.android.providers.media.documents".equals(uri.getAuthority());     }      /**      * @param uri The Uri to check.      * @return Whether the Uri authority is Google Photos.      */     public static boolean isGooglePhotosUri(Uri uri) {         return "com.google.android.apps.photos.content".equals(uri.getAuthority()); } 
like image 116
SANJAY GUPTA Avatar answered Sep 21 '22 15:09

SANJAY GUPTA