画像ファイルを処理するアクティビティがあります。
if (Intent.ACTION_VIEW.equals(action) && type != null && type.startsWith("image/")) {
Uri imageUri = i.getData();
try {
Bitmap image = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
} catch (Exception e) {
e.printStackTrace();
}
}
これにより、ビットマップ内の画像が取得されますが、そこから exif データも取得する必要があります。を使用して画像を保存すると、image.compress
このデータが削除されます。
たとえば、gmailをクリックView
すると、使用できる実際のパスがないため、exif データを取得しようとして行き詰まります。アクティビティに渡されたデータを取得する方法byte[]
、またはオブジェクトから exif データを取得する方法はありBitmap
ますか?
ノート:
これ:
ExifInterface exifData = new ExifInterface(imageUri.getPath());
例外は発生しませんが、すべてのタグに対して null を取得し、パスを出力しようとすると、次のようになります。
/my.email@gmail.com/messages/248/attachments/0.1/BEST/false
最初にヒットsave
してからview
gmail にアクセスすると、上記のメソッドを使用して exif データを正常に取得しimageUri.getPath()
、exif コンストラクターに渡すことができます。
動作させる方法がない場合view
、ユーザーがファイルをディスクに保存した後にのみアプリケーションを使用するように求められるようにするにはどうすればよいですか? これは、私のインテント フィルターが現在どのように見えるかです。
<activity android:name=".GameActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>