アクティビティは次のように定義されます。
<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:開くことができませんでした:ENOENT(そのようなファイルまたはディレクトリはありません)
注:これは、テストに使用しているNexus7で発生します。
解決済み:この問題は、
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);
}