【问题标题】:Opening a local Android File with spaces打开带有空格的本地 Android 文件
【发布时间】:2013-01-23 20:29:50
【问题描述】:

我正在尝试使用意图在 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://”+ 未编码路径。

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

【问题讨论】:

  • 尝试“\”而不是“”。不过我不确定,试试看吧
  • 尝试用 + 号或 %20 替换空格,或尝试在名称周围添加双引号。
  • @pvn 我试过了,但似乎没有帮助。谢谢你的建议。我以前什至没有尝试过。
  • @SylvainL %20 是在 Uri.fromFile (按照它的编码方式)时生成的,但它不起作用,我会尝试使用“+”号并报告谢谢!
  • 如果您尝试使用双引号,请尝试使用以下两个版本:“/data/data/com.xxxx.yyyy/files/Downloads/Documents/ProductFeature.pptx”或/data/data /com.xxxx.yyyy/files/Downloads/Documents/"ProductFeature.pptx"

标签: android


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    此后我开始使用外部 (Activity.getExternalFilesDir()),该文件夹允许访问其他所有应用程序,这为我解决了问题。

    【讨论】:

      猜你喜欢
      • 2012-04-03
      • 2014-08-02
      • 1970-01-01
      • 2015-10-14
      • 2011-08-22
      • 2018-10-23
      • 1970-01-01
      • 2023-04-02
      • 2018-10-30
      相关资源
      最近更新 更多