Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.41 KB | None | 0 0
  1. package com.android_examples.uploadpdf_android_examplescom;
  2.  
  3. /**
  4. * Created by Juned on 5/18/2017.
  5. */
  6.  
  7. import android.content.ContentUris;
  8. import android.content.Context;
  9. import android.database.Cursor;
  10. import android.net.Uri;
  11. import android.os.Build;
  12. import android.os.Environment;
  13. import android.provider.DocumentsContract;
  14. import android.provider.MediaStore;
  15.  
  16. public class FilePath
  17. {
  18. /**
  19. * Method for return file path of Gallery image
  20. *
  21. * @param context
  22. * @param uri
  23. * @return path of the selected image file from gallery
  24. */
  25.  
  26. public static String getPath(final Context context, final Uri uri)
  27. {
  28. //check here to KITKAT or new version
  29. final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
  30.  
  31. // DocumentProvider
  32. if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
  33.  
  34. // ExternalStorageProvider
  35. if (isExternalStorageDocument(uri)) {
  36. final String docId = DocumentsContract.getDocumentId(uri);
  37. final String[] split = docId.split(":");
  38. final String type = split[0];
  39.  
  40. if ("primary".equalsIgnoreCase(type)) {
  41. return Environment.getExternalStorageDirectory() + "/" + split[1];
  42. }
  43. }
  44.  
  45. //DownloadsProvider
  46. else if (isDownloadsDocument(uri)) {
  47.  
  48. final String id = DocumentsContract.getDocumentId(uri);
  49. final Uri contentUri = ContentUris.withAppendedId(
  50. Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
  51.  
  52. return getDataColumn(context, contentUri, null, null);
  53. }
  54.  
  55. // MediaProvider
  56. else if (isMediaDocument(uri)) {
  57. final String docId = DocumentsContract.getDocumentId(uri);
  58. final String[] split = docId.split(":");
  59. final String type = split[0];
  60.  
  61. Uri contentUri = null;
  62. if ("image".equals(type)) {
  63. contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
  64. } else if ("video".equals(type)) {
  65. contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
  66. } else if ("audio".equals(type)) {
  67. contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
  68. }
  69.  
  70. final String selection = "_id=?";
  71. final String[] selectionArgs = new String[] {
  72. split[1]
  73. };
  74.  
  75. return getDataColumn(context, contentUri, selection, selectionArgs);
  76. }
  77. }
  78. // MediaStore (and general)
  79. else if ("content".equalsIgnoreCase(uri.getScheme())) {
  80.  
  81. // Return the remote address
  82. if (isGooglePhotosUri(uri))
  83. return uri.getLastPathSegment();
  84.  
  85. return getDataColumn(context, uri, null, null);
  86. }
  87. // File
  88. else if ("file".equalsIgnoreCase(uri.getScheme())) {
  89. return uri.getPath();
  90. }
  91.  
  92. return null;
  93. }
  94.  
  95. /**
  96. * Get the value of the data column for this Uri. This is useful for
  97. * MediaStore Uris, and other file-based ContentProviders.
  98. *
  99. * @param context The context.
  100. * @param uri The Uri to query.
  101. * @param selection (Optional) Filter used in the query.
  102. * @param selectionArgs (Optional) Selection arguments used in the query.
  103. * @return The value of the _data column, which is typically a file path.
  104. */
  105. public static String getDataColumn(Context context, Uri uri, String selection,
  106. String[] selectionArgs) {
  107.  
  108. Cursor cursor = null;
  109. final String column = "_data";
  110. final String[] projection = {
  111. column
  112. };
  113.  
  114. try {
  115. cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,
  116. null);
  117. if (cursor != null && cursor.moveToFirst()) {
  118. final int index = cursor.getColumnIndexOrThrow(column);
  119. return cursor.getString(index);
  120. }
  121. } finally {
  122. if (cursor != null)
  123. cursor.close();
  124. }
  125. return null;
  126. }
  127.  
  128. /**
  129. * @param uri The Uri to check.
  130. * @return Whether the Uri authority is ExternalStorageProvider.
  131. */
  132. public static boolean isExternalStorageDocument(Uri uri) {
  133. return "com.android.externalstorage.documents".equals(uri.getAuthority());
  134. }
  135.  
  136. /**
  137. * @param uri The Uri to check.
  138. * @return Whether the Uri authority is DownloadsProvider.
  139. */
  140. public static boolean isDownloadsDocument(Uri uri) {
  141. return "com.android.providers.downloads.documents".equals(uri.getAuthority());
  142. }
  143.  
  144. /**
  145. * @param uri The Uri to check.
  146. * @return Whether the Uri authority is MediaProvider.
  147. */
  148. public static boolean isMediaDocument(Uri uri) {
  149. return "com.android.providers.media.documents".equals(uri.getAuthority());
  150. }
  151.  
  152. /**
  153. * @param uri The Uri to check.
  154. * @return Whether the Uri authority is Google Photos.
  155. */
  156. public static boolean isGooglePhotosUri(Uri uri) {
  157. return "com.google.android.apps.photos.content".equals(uri.getAuthority());
  158. }
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement