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;
    }
}

使用此代码,我得到 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