安卓:使用ACTION View打开图片的URI

3

以下是代码

protected static final String DIR_IMAGE = "/data/data/it.android.myprogram/images/";
Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 
Uri u = Uri.fromFile(destinationFile);
intent.setDataAndType(u, "image/*");
startActivity(intent); 

需要打开的文件位于/data/data/it.android.myprogram/images。如果我执行以下操作:

File dir = new File(DIR_IMAGE);
String[] files = dir.list();

变量文件包含所有文件,但当我启动时...
intent.setDataAndType(u, "image/*");
startActivity(intent); 

它显示了“无法找到 /data/data/it.android.myprogram/images/img1.jpg”这个信息。

为什么会出现这种情况?

1个回答

6

/data/data/it.android.myprogram下的文件只能被您的应用程序访问。如果您希望通过Intent将它们发送给其他应用程序,您需要使用您活动中的openFileOutput方法复制内容。

protected static final String DIR_IMAGE = "/data/data/it.android.myprogram/images/";
String filePath = DIR_IMAGE + "fileName";
FileInputStream fileInputStream = new FileInputStream(new File(filePath));
FileOutputStream fileOutputStream = openFileOutput("fileName", Activity.MODE_WORLD_READABLE);
ByteStreams.copy(fileInputStream, fileOutputStream);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("content://it.android.myprogram/fileName"), "image/*");

希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接