ファイル名を使用して画像を開く画像ビューアを作成しました。また、URI を使用してファイル マネージャーで画像をクリックしたときにも機能し、私はそれをデフォルトのビューアーとして設定しました。
ただし、画像が添付された電子メールを受信し (K9 メール クライアントを使用)、画像のサムネイルをクリックすると、ビューアーはファイル名として "VIEW" を取得します。システムにファイルがありません。もちろん、添付ファイルを保存して見ることはできますが、これはしたくありません。
だから、私の質問は、ビューアに添付ファイルを直接取得させるにはどうすればよいですか? おそらく、これは正しい質問です: 電子メールの添付ファイル「リンク」をクリックすると、電子メール クライアントは何を返しますか?
編集
これは、コードで URI を開こうとする方法です。
uri = getIntent().getData();
if (uri != null)
String file = getRealPathFromURI(uri);
関数getRealPathFromURI
は次のとおりです。
private String getRealPathFromURI(Uri contentURI) {
Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
if (cursor == null || cursor.getCount() == 0) {
return contentURI.getPath();
} else if (cursor.getCount() == 0) {
return null;
} else {
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
String path = cursor.getString(idx);
cursor.close();
return path;
}
}
このコードでcontent://com.fsck.k9.attachmentprovider/34fc2cc9-aa46-45e9-9e3f-2f27f0457249/1/VIEW
は、もちろん間違っています。正しいものは です/mnt/sdcard/Android/data/com.fsck.k9/files/34fc2cc9-aa46-45e9-9e3f-2f27f0457249.db_att/1
。
したがって、正しい質問は、上記のgetRealPathFromURI()
関数が正しいファイルパスを返さないのはなぜですか?