代码之家  ›  专栏  ›  技术社区  ›  brohan322

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

  •  0
  • brohan322  · 技术社区  · 8 年前

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

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

    我希望在我的应用程序中也出现同样的情况。我想让KiwiViewer打开用户选择的.vtk文件。我知道KiwiViewer的软件包(“com.kitware.KiwiViewe”),我能够有目的地打开应用程序。但是,我无法打开传递给应用程序的.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 回复  |  直到 8 年前
        1
  •  0
  •   brohan322    8 年前

    在查看了KiwiViewer的源代码后,发现它需要一个文件而不是内容的URI方案来打开数据。此外,我必须手动提取子目录(“ExperimentData/MHDImage.vtk”),并将其连接到“/sdcard/”,以使KiwiViewer打开数据。我知道这种硬编码是不受欢迎的,但当我使用“/sdcard/”(Environment.getExternalStorageDirectory())的替代项时。getPath()),则无法获取正确的目录。