活动定义为:
<activity android:name="com.tralev.android.UploadFromCameraAppActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>
UploadFromCameraAppActivity正在尝试获取URI:
Uri uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM);
String filename = uri.getPath();
但是在尝试打开该文件名时,我得到了异常:
03-12 23:10:30.787:W / System.err(9840):java.io.FileNotFoundException:/ external / images / media / 2437:open failed:ENOENT(没有这样的文件或目录)
注意:这是在我用来测试的Nexus 7上发生的。
已解决:使用
解决此问题public String getRealPathFromURI(Uri contentUri) {
String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
答案 0 :(得分:3)
使用
解决了这个问题 public String getRealPathFromURI(Uri contentUri) {
String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
答案 1 :(得分:0)
您是否添加了android.permission.READ_EXTERNAL_STORAGE权限?