2013-02-19 45 views
0

我需要在android默认图像查看器中查看图像,当我执行下面的代码时,它显示的是专辑列表而不是特定图像。请纠正我。在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); 
    } 
}); 
+0

是recepitPath文件夹或文件? – alex 2013-02-19 09:31:39

+0

它是文件ex。 /mnt/sdcard/com.example.folder/receipt.png – 2013-02-19 09:36:15

+0

如果它是一个文件,这可能是有帮助的 http://stackoverflow.com/questions/2954594/launching-intent-action-view-intent-not保存图片文件/ 3677598#3677598 – MikeIsrael 2013-02-19 09:41:02

回答

0

我已经找到了我的问题的答案见下文

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

答案后,分析了android意图的源代码,我的学习,如果你设置的URI意向构造然后设置类型,数据uri自动设置为空,因此我无法访问图像查看器中的特定图像。

Refer the source

+1

通常不需要设置类型。类型是从数据中推断出来的。如果没有数据,我只使用'setType'(即,类型仅用于解析目的或指定结果类型)。 – keyboardr 2013-02-21 07:07:42

+0

@keyboardr但在某些情况下,如果我尝试查看PDF文档,如果我没有给出类型,我得到了ActivityNotFound异常。如果我指定类型,我可以使用Office套件应用程序 – 2013-02-21 09:00:40

+0

查看文档。有时,Android不能推断mimetype,这就是setDataAndType()方法的用途。不过,对于图片来说,它通常不会有问题。 – keyboardr 2013-02-22 18:55:59