我正在尝试使用意图在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://”+未编码的路径,没有太多帮助。
那么你如何处理这种情况呢?任何帮助表示赞赏
答案 0 :(得分:1)
您需要用"\ "
替换空格。请注意,如果您使用String.replace()
,则还需要转义斜杠("\\ "
)。
答案 1 :(得分:0)
对我而言,主要问题是我将文件存储在内部存储的应用程序目录中,并且必须明确地提供对文件的访问。我使用chmod 755命令授予权限。但是带有空格的文件没有正确设置权限,这阻止了这些文件被打开。
我已经转移到使用外部(Activity.getExternalFilesDir()),该文件夹允许访问所有其他应用程序,并解决了我的问题。