用空格打开本地Android文件

时间:2013-01-23 20:29:50

标签: android

我正在尝试使用意图在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://”+未编码的路径,没有太多帮助。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

我已经转移到使用外部(Activity.getExternalFilesDir()),该文件夹允许访问所有其他应用程序,并解决了我的问题。