4

我正在尝试使用意图在 Android (4.0) 中打开本地文件。以下是执行该操作的代码。只要文件没有特殊空格,它就可以正常工作(例如:如果文件是 /data/data/com.xxxx.yyyy/files/Downloads/Documents/ProductFeature.pptx,则它可以正常打开,但如果文件名称是 /data/data/com.xxxx.yyyy/files/Downloads/Documents/Product Feature.pptx (注意名称中的空格),然后失败。Uri.fromFile 正确编码空间,但其他应用程序似乎无法解释它们,似乎无法打开。

        Intent intent = new Intent();
    intent.setAction(android.content.Intent.ACTION_VIEW);

    Uri uri =  Uri.fromFile(new File( selectedEntry.get(Defs.PATH_KEY)));
    System.out.println("openFileWith: File to open: " + uri);

    intent.setDataAndType(uri,type);
    startActivity(Intent.createChooser(intent, "Open With ...")); 

我还尝试在没有太多帮助的情况下使用“file://”+未编码路径。

那么你如何处理这种情况呢?任何帮助表示赞赏

4

2 回答 2

1

您需要将空格替换为"\ ". 请注意,如果您正在使用,String.replace()那么您还需要转义斜杠 ( "\\ ")。

于 2013-01-23T23:47:27.407 回答
1

对我来说,主要问题是我将文件存储在内部存储的应用程序目录中,并且必须明确给出对文件的访问权限。我正在使用 chmod 755 命令授予权限。但是带有空格的文件没有正确设置权限,从而阻止了这些文件被打开。

从那以后,我开始使用外部(Activity.getExternalFilesDir()),并且该文件夹允许对所有其他应用程序的访问权限,这为我解决了这个问题。

于 2013-01-31T16:45:28.910 回答