【问题标题】:View image in android built-in viewer在 android 内置查看器中查看图像
【发布时间】:2013-02-19 09:23:58
【问题描述】:

当我执行以下代码时,我需要在 android 默认图像查看器中查看图像,它显示专辑列表而不是特定图像。请纠正我。

MediaScannerConnection.scanFile(this, new String[] {receiptPath}, new String[] {"image/*"}, new MediaScannerConnection.OnScanCompletedListener()
{

    @Override
    public void onScanCompleted(String path, Uri uri)
    {
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        intent.setType("image/*");
        startActivity(intent);
    }
});

【问题讨论】:

  • recepitPath 是文件夹还是文件?
  • 它是文件 ex。 /mnt/sdcard/com.example.folder/receipt.png
  • 如果是文件,这可能会有所帮助stackoverflow.com/questions/2954594/…
  • 抱歉还是无法查看图片

标签: android android-activity android-imageview


【解决方案1】:

我找到了我的问题的答案,请参阅下面的答案

@Override
        public void onScanCompleted(String path, Uri uri)
        {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(uri, "image/*");
            startActivity(intent);
        }

分析android Intent源代码后我的学习是,如果你在Intent构造函数中设置uri然后设置类型,数据uri自动设置为null,所以我无法在图像查看器中访问特定图像。

Refer the source

【讨论】:

  • 通常不需要设置类型。类型是从数据中推断出来的。如果没有数据,我只使用setType(即该类型仅用于解析目的或指定结果类型)。
  • @keyboardr 但在某些情况下,如果我尝试查看 pdf 文档,如果我没有给出类型,我会得到 ActivityNotFound 异常。如果我指定类型,我可以使用 Office 套件应用程序查看文档
  • 有时 Android 无法推断 mimetype,这就是 setDataAndType() 方法的用途。但是,对于图像,它通常不应该有问题。
猜你喜欢
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 2013-02-24
  • 1970-01-01
相关资源
最近更新 更多