Android意图打开图片库,但不是图片。为什么?

Android意图打开图片库,但不是图片。为什么?

问题描述:

我在我的应用程序中有几张图片,当用户点击它们时,我想在默认查看器中打开它们。这里是我的代码:Android意图打开图片库,但不是图片。为什么?

Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri uri = Uri.parse("file://" + Environment.getExternalStorageDirectory().toString() + "/Pictures/mypic.jpg"); 
intent.setData(uri); 
intent.setType("image/jpeg"); 

startActivity(intent); 

默认浏览器确实是打开的,但它显示了它的“丝网之乡”,显示所有文件夹和画廊。它不显示选定的图片。

我在做什么错?

+0

'我在我的应用程序中有几张照片。在你的应用程序?哪里?请首先解释您的图片的确切位置。 – greenapps

+0

'默认查看器'???什么是默认查看器? – greenapps

+0

@greenapps图像完全位于'/ storage/emulated/0 /图片/'我确信我使用的路径是正确的,并且图像存在。 _default viewer_是用户配置的任何一个。它可以是图库,QuickPic或其他。系统应该知道哪一个可以使用。 – ilvidel

将下面的代码放置在try块中,您可以打开任何文件: 添加catch块自己。

   String FileName = ...full path of file... 

      MimeTypeMap map = MimeTypeMap.getSingleton(); 
      String extension = map.getFileExtensionFromUrl(FileName.toLowerCase().replace(" ", "")); // does not work with spaces in filename 

      String mimetype = map.getMimeTypeFromExtension(extension); 

      Toast.makeText(context, FileName + "\nMimeType: " + mimetype + "\nExtension: " + extension , Toast.LENGTH_SHORT).show(); 

      if (mimetype == null) 
       { 
       mimetype = "text/plain"; 
       Toast.makeText(context, "MimeType: " + mimetype, Toast.LENGTH_SHORT).show(); 
       } 



      String Url = "file://" + FileName; 

      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setDataAndType(Uri.parse(Url), mimetype);  
      context.startActivity(intent);    
+1

嗯,我没有看过你的代码太多,突然间我看到你有相同的。你的代码唯一的问题是你同时使用setData()和setType()。 setTyp()会撤消setData()设置的数据。所以这就是为什么它不起作用。 – greenapps

+0

这正是问题所在,先生。 'setType()'和'setData()'的顺序以及它们的单独使用而不是'setDataAndType()'以很好的方式影响结果。 – ilvidel