2013-02-19 74 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