Unable to set image source when accessing image from gallery-Android

前端 未结 3 581
-上瘾入骨i
-上瘾入骨i 2021-01-07 06:42

Iam using cordova 3.4. When i capture an image and set it,its working fine but when I try to access on image from gallery I get the url

content://com.androi         


        
3条回答
  •  逝去的感伤
    2021-01-07 07:19

    Try this..

    In Camera Plugin there is one FileHelper.java File, Replace the plugin getRealPath with my this my method.

    For more details you can follow this -> https://issues.apache.org/jira/browse/CB-5398

    FileHelper.java

        @SuppressWarnings("deprecation")
        public static String getRealPath(String uriString, CordovaInterface cordova) {
            String realPath = null;
    
    
            final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
    
            // DocumentProvider
            if (isKitKat) {
            Cursor cursor =  cordova.getActivity().getContentResolver().query(Uri.parse(uriString), null, null, null, null);
            cursor.moveToFirst();
            String document_id = cursor.getString(0);
            document_id = document_id.substring(document_id.lastIndexOf(":")+1);
            cursor.close();
    
            cursor = cordova.getActivity().getContentResolver().query( 
            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
            cursor.moveToFirst();
            String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
            realPath = path;
            cursor.close();
            }else{
    
            if (uriString.startsWith("content://")) {
                String[] proj = { _DATA };
                Cursor cursor = cordova.getActivity().managedQuery(Uri.parse(uriString), proj, null, null, null);
                int column_index = cursor.getColumnIndexOrThrow(_DATA);
                cursor.moveToFirst();
                realPath = cursor.getString(column_index);
                if (realPath == null) {
                    LOG.e(LOG_TAG, "Could get real path for URI string %s", uriString);
                }
            } else if (uriString.startsWith("file://")) {
                realPath = uriString.substring(7);
                if (realPath.startsWith("/android_asset/")) {
                    LOG.e(LOG_TAG, "Cannot get real path for URI string %s because it is a file:///android_asset/ URI.", uriString);
                    realPath = null;
                }
            } else {
                realPath = uriString;
            }
    
            }
            return realPath;
        }
    

    In CameraLauncher.java Class therer is one method processResultFromGallery

    private void processResultFromGallery
    

    Find this code:

        if (this.targetHeight == -1 && this.targetWidth == -1 &&
                    (destType == FILE_URI || destType == NATIVE_URI) && !this.correctOrientation){
    
            this.callbackContext.success(uri.toString());
        }
    

    And replace with this:

        if (this.targetHeight == -1 && this.targetWidth == -1 &&
                    (destType == FILE_URI || destType == NATIVE_URI) && !this.correctOrientation) {
    
                String s    =FileHelper.getRealPath(uri.toString(), cordova);
                Log.i("test","<<<

提交回复
热议问题