【发布时间】:2017-10-23 05:56:29
【问题描述】:
从活动 1 开始,我使用了一个意图
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.setType("*/*");
try{
startActivityForResult(Intent.createChooser(i, "Pick a file"), REQUEST_CODE_UPLOAD_FILE_FOR_IMPORT);
}catch (android.content.ActivityNotFoundException ex){
Log.e("Error","FileManager not found!");
}
并处理 URI 并从文档中提取数据。一旦这样做,我将提取的数据和 URI 传递给活动 2,用户可以在其中看到数据。用户还可以选择从活动 2 打开原始文件,我执行以下操作:
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW, getUri());
PackageManager packageManager = activity.getPackageManager();
List activities = packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
boolean isIntentSafe = activities.size() > 0;
if(isIntentSafe){
startActivity(intent);
}
}
但我选择的任何外部应用程序都会出现 io 异常。如何让他们打开我的文档?
【问题讨论】:
-
IOException 通常表示加载文件或资源时出现问题。由于某种原因,您的应用无法读取所选文件。要确定原因,需要更多信息。
-
我让用户选择文档,特别是电子表格。我已经检查该文件是否为电子表格,并且在我自己的应用程序中,它工作正常。当我将 Uri 传递给另一个应用程序时,该应用程序显示 IO 异常
-
看起来第二个应用程序没有读取文件的权限
-
文件在我的内部存储中,我可以在那个应用程序中单独打开它们。仅当我从我的应用程序传递 Uri 时才会发生这种情况
-
the files are in my internal storage, and I can open them separately in that app。你的意思是:我的应用获得了许可,我可以在同一个应用中打开它。
标签: android file android-intent uri ioexception