1

アクティビティは次のように定義されます。

    <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:3​​0.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);
}
4

2 に答える 2

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);
 }
于 2013-04-04T21:38:38.000 に答える
0

許可 android.permission.READ_EXTERNAL_STORAGE を追加しましたか?

于 2013-03-12T22:29:51.867 に答える