Android 是否打算查看jpeg电子邮件附件?

Android 是否打算查看jpeg电子邮件附件?,android,android-intent,attachment,Android,Android Intent,Attachment,我制作了一个图像查看器,可以使用文件名打开图像。当您使用URI在文件管理器中单击一个图像,并且我将其设置为默认查看器时,它也可以工作 然而,如果我收到一封带有图片作为附件的电子邮件(我使用K9邮件客户端),并且我点击了图片拇指,我的查看器只会得到文件名“VIEW”。有道理,系统中没有文件。当然,我可以保存附件并查看它,但我不想这样做 所以,我的问题是:如何让我的查看器直接获取附件?也许这是正确的问题:当您单击电子邮件中的附件“链接”时,电子邮件客户端会返回什么 编辑 以下是我如何尝试在代码中打开

我制作了一个图像查看器,可以使用文件名打开图像。当您使用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‌​/查看
,这当然是错误的。正确的应该是
/mnt/sdcard/Android/data/com.fsck.k9/files/34fc2cc9-aa46-45e9-9e3f-2f27f0457249‌​.db_att/1


因此正确的问题是:为什么上面的
getRealPathFromURI()
函数不返回正确的文件路径

如果文件不在设备中,那么我们如何显示它。。??你必须在放映之前下载。@Dhawal Sodha:事实上,数据在设备中,在电子邮件正文中,作为mime类型的附件。我的问题是:当你点击“链接”(缩略图)时,电子邮件客户端会做什么?它向系统发送了什么?谢谢K9也是downlod图像。。从附件中,然后打开并保存。。。所以,当你们点击thunbnail链接时,他们是先下载图片的…@Dhawal Sodha:我知道。我想问的是,当我点击“打开”时,K9(或任何其他电子邮件应用程序)会做什么?当然,它会保存附件(可能在RAM中),但是它会发送什么作为意图呢?我想点击“打开”并看到一张图片,但我看到的只是黑色,因为我的应用程序没有正确捕捉到K9发送的内容。如果我点击“保存”,我确实会看到图像,但它是以文件的形式保存在本地的,我不想这样做,因为我很烦恼(例如,愚蠢的Gallery应用程序在保存图像时会索引图像,尽管使用了.nomedia)。请看我在编辑的问题中尝试了什么。好的,这是K9返回的:
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