我的应用程序应该能够从其他应用程序打开任何文件
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="*/*"/>
</intent-filter>
在活动中,我尝试将文件从意图中删除
Intent i = getIntent();
String action = i.getAction();
if(Intent.ACTION_SEND.equals(action)){
Bundle bundle = i.getExtras();
Uri uri = (Uri)bundle.get(Intent.EXTRA_STREAM);
File file = new File(uri.getPath());
现在,如果文件已经在我的磁盘上,并且我与我的应用程序共享/打开它,它可以正常工作。但是,如果我尝试从Dropbox导出它或从其他应用程序打开它,稍后在我使用我的文件的代码中,我会收到此错误。
java.io.FileNotFoundException: /filecache/faf4b9ba-43c9-4292-807b-c18aae702b5a (No such file or directory)
过滤器是否存在问题(不够具体)或者我是否以错误的方式将文件从意图中删除?
答案 0 :(得分:1)
Uri
不是File
。事实上,在大多数情况下,您收到的Uri将是content://
Uri(特别是在Android 7.0+设备上you cannot share file:// Uris across apps),您不可以直接访问基础文件。
您应该使用getContentResolver().openInputStream(uri)
获取InputStream
收到的Uri
内容。