我的应用程序可以打开并处理某些文件。因此,您可以在文件管理器中点击此类文件,我的应用程序将提供打开它。清单文件中的intent过滤器设置如下。
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="text/plain" />
</intent-filter>
像这样读取和处理文件工作正常:
Context.getContentResolver().openInputStream(getIntent().getData());
问题是,我想在处理文件后删除它。 (如果用户选中了复选框)用户在使用我的应用程序打开文件后通常不再需要该文件。
目前我只能将文件作为文件uri(以file://开头)提供给我。在这种情况下,此代码可以正常工作:
new File(contentUri.getPath()).delete();
但是如果文件是作为内容uri提供的,我不知道如何删除该文件。 (从content://开始)
例如,这将返回null,并且不执行任何操作:
Context.getContentResolver().delete(getIntent().getData(), null, null);
答案 0 :(得分:0)
您没有可靠的方法来删除此内容。这不是您的内容,而且就您所知,从技术上讲,删除 是不可能的。删除它的责任在于调用您ACTION_VIEW
活动的应用程序,而不是您。
如果您希望能够删除内容,请反转流程。在Android 4.4及更高版本中,您可以使用ACTION_OPEN_DOCUMENT
来允许用户选择一段内容。然后,您获得的Uri
可能允许您使用DocumentFile
删除它。
答案 1 :(得分:0)
我已经使用下面的代码解决了这个问题。
DocumentFile.fromSingleUri(getApplicationContext(),fileUri).delete();
这很好。试试吧。