使用Intents启动另一个应用程序以打开.vtk文件

时间:2016-06-01 19:40:33

标签: android android-intent intentfilter android-package-managers

我目前正在开发Android应用,在我的应用中,用户可以浏览并选择.vtk文件。

我还安装了一个名为“KiwiViewer”的应用程序,它会打开这些.vtk文件。当我手动浏览平板电脑,并使用文件管理应用程序点击.vtk文件时,KiwiViewer打开这些.vtk文件没有问题。

我想在我的应用中发生同样的事情。我希望用户选择的.vtk文件由KiwiViewer打开。我知道KiwiViewer的软件包(“com.kitware.KiwiViewer”),我能够有意图打开应用程序。但是,我无法打开传递给应用程序的.vtk文件。

Intent i = new Intent(this.getPackageManager().getLaunchIntentForPackage("com.kitware.KiwiViewer"));
i.setData(Uri.parse(getIntent().getExtras().getString("ImageURI")));
startActivity(i);

我检查过,发送的数据有效(它不是空的,绝对是正确的文件。

我也尝试了以下方法,但它也不起作用:

Intent i = new Intent();
i.setData(Uri.parse(getIntent().getExtras().getString("ImageURI")));
i.setPackage("com.kitware.KiwiViewer");
startActivity(i);

然而,我得到了“未找到活动的例外”。

如何启动KiwiViewer以打开我提供的数据?

编辑:当我查看提供给KiwiViewer的URI路径时,它似乎是/document/primary:ExperimentData/MHDImage.vtk。 KiwiViewer说这不存在。实际上,路径是/sdcard/ExperimentData/MHDImage.vtk。这两者会有什么不同的原因吗?

1 个答案:

答案 0 :(得分:0)

在查看KiwiViewer的源代码之后,它需要一个文件URI方案而不是内容来打开数据。另外,我不得不手动提取子目录(“ExperimentData / MHDImage.vtk”)并将其连接到“/ sdcard /”以使KiwiViewer打开数据。我知道这个硬编码是不受欢迎的,但是当我使用备用“/ sdcard /”(Environment.getExternalStorageDirectory()。getPath())时,我没有得到正确的目录。