来自相机库的PathURI崩溃

时间:2016-02-15 04:43:31

标签: android

我正在从Android设备库中选择一张图片,如下所示

public static void showFileChooser(Activity activity) {
 Intent intent = new Intent();
 intent.setType("image/*");
 intent.setAction(Intent.ACTION_GET_CONTENT);
 activity.startActivityForResult(Intent.createChooser(intent, "Select Picture"), 1);
}

并尝试按如下方式获取realPathFromURI,但idx始终返回-1。我不知道我错过了什么。

enter image description here

清单文件

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

更新1:

enter image description here

更新2: 我甚至尝试了以下,路径返回null

enter image description here

2 个答案:

答案 0 :(得分:1)

如果您从设备同步文件夹中选择图片,则必须是图片URI问题,请结帐question和此answer

希望这会对你有帮助!!!

答案 1 :(得分:0)

使用媒体投影

 public static String getPath(Uri uri, Activity mActivity) {        
            try {
                String[] projection = {MediaStore.MediaColumns.DATA};
                Cursor cursor = mActivity.managedQuery(uri, projection, null, null, null);
                int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
                cursor.moveToFirst();           
                return cursor.getString(column_index);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
                return "";
            } 
        }

只需使用getContentResolver()。openInputStream(uri)从URI获取InputStream。在路径

的情况下

如果输入流包含null,则需要集成驱动器api