我正在从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。我不知道我错过了什么。
清单文件
<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:
更新2: 我甚至尝试了以下,路径返回null
答案 0 :(得分:1)
答案 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