You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by GitBox <gi...@apache.org> on 2019/11/20 14:13:14 UTC

[GitHub] [cordova-plugin-camera] giuseeFG commented on issue #322: CB-14097: (android) Fix crash when selecting some files with getPicture

giuseeFG commented on issue #322: CB-14097: (android) Fix crash when selecting some files with getPicture
URL: https://github.com/apache/cordova-plugin-camera/pull/322#issuecomment-556020213
 
 
   I solved it by editing the method "getRealPathFromURI_API11_And_Above" in this way:
   
   @SuppressLint("NewApi")
       public static String getRealPathFromURI_API11_And_Above(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);
                   if (id != null && id.length() > 0) {
                       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 (NumberFormatException e) {
                           return null;
                       }
                   } else {
                       return null;
                   }
               }*/
               // MediaProvider
               else if (isMediaDocument(uri) || isDownloadsDocument(uri)) {
                   String docId = DocumentsContract.getDocumentId(uri);
                   docId = docId.replace("msf:", "video:");
                   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;
       }

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org