Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android DocumentsContract.getDocumentId(URI)中的URI异常无效_Android - Fatal编程技术网

Android DocumentsContract.getDocumentId(URI)中的URI异常无效

Android DocumentsContract.getDocumentId(URI)中的URI异常无效,android,Android,我正在尝试获取我保存的图像的文档id,我正在将图像文件保存到设备中的以下外部存储器中 file:///storage/emulated/0/Pictures/BeautifulFaces/kvh_20160420T225141.jpg 查询后 public String checkIfImageIsRotated(Uri image_uri){ Log.i(LOG_TAG, ">>>>> START "); int rotation =0;

我正在尝试获取我保存的图像的文档id,我正在将图像文件保存到设备中的以下外部存储器中

file:///storage/emulated/0/Pictures/BeautifulFaces/kvh_20160420T225141.jpg
查询后

public String checkIfImageIsRotated(Uri image_uri){

    Log.i(LOG_TAG, ">>>>> START ");
    int rotation =0;
    String[] selection = new String[] { MediaStore.Images.Media._ID,
                                        MediaStore.Images.Media.BUCKET_DISPLAY_NAME,
                                        MediaStore.Images.Media.DATA,
                                        MediaStore.Images.Media.DATE_TAKEN,
                                        MediaStore.Images.Media.ORIENTATION};

    String selectionArgs = MediaStore.Images.Media.BUCKET_DISPLAY_NAME +  " = ?";
    String[] args = new String[]{FOLDER_NAME};
    String sortOrder = MediaStore.Images.Media.DATE_TAKEN + " DESC";

    ContentResolver content = mContext.getContentResolver();
    Cursor mediaCursor = content.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                                        selection ,
                                        selectionArgs,
                                        args,
                                sortOrder);

    //select of columns
    //MediaStore.Images.ImageColumns.ORIENTATION
    //MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME
    if (mediaCursor != null && mediaCursor.getCount() !=0 ) {
        if(mediaCursor.moveToNext()){
            Log.i(LOG_TAG, ">>>>> media cursor not null ");
            String orientation = mediaCursor.getString(4);
            String bucket_display_name = mediaCursor.getString(1);
            image_data_path = mediaCursor.getString(2);
            Log.i(LOG_TAG, ">>>>> rotation -  " + orientation + ", bucket display name - " + bucket_display_name + ", data - " + image_data_path);
        }

        mediaCursor.close();
    }

    Log.i(LOG_TAG, ">>>>> END ");
    return image_data_path;
}
图像\数据\路径为

/storage/emulated/0/Pictures/BeautifulFaces/kvh_20160420T225141.jpg
现在,当我尝试执行DocumentsContract.getDocumentId(uri)时,其中uri是顶部提到的文件uri或从游标返回的图像\数据\路径,在这两种情况下,我都会遇到以下错误

Caused by: java.lang.IllegalArgumentException: Invalid URI: file:///storage/emulated/0/Pictures/BeautifulFaces/kvh_20160420T225141.jpg

无法理解Document.getDocumentId无法解析Uri的原因


谢谢

好吧,它们不是由a生成的文档URI-它们至少应该以
内容开始://
。你为什么期望它们是文档URI?你找到答案了吗?我使用DocumentFileclass和从SAF UI获取的Uri保存图像(返回content/:com.android.externalstorage…),但我需要Uri来获取保存的图像,并使用文件类在其中写入EXIF数据。
Caused by: java.lang.IllegalArgumentException: Invalid URI: /storage/emulated/0/Pictures/BeautifulFaces/kvh_20160420T225141.jpg