0

ファイル名を使用して画像を開く画像ビューアを作成しました。また、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()関数が正しいファイルパスを返さないのはなぜですか?

4

0 に答える 0