Android:删除文件内容uri

时间:2016-11-21 19:48:02

标签: android android-contentprovider delete-file

我的应用程序可以打开并处理某些文件。因此,您可以在文件管理器中点击此类文件,我的应用程序将提供打开它。清单文件中的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);

2 个答案:

答案 0 :(得分:0)

您没有可靠的方法来删除此内容。这不是您的内容,而且就您所知,从技术上讲,删除 是不可能的。删除它的责任在于调用您ACTION_VIEW活动的应用程序,而不是您。

如果您希望能够删除内容,请反转流程。在Android 4.4及更高版本中,您可以使用ACTION_OPEN_DOCUMENT来允许用户选择一段内容。然后,您获得的Uri可能允许您使用DocumentFile删除它。

答案 1 :(得分:0)

我已经使用下面的代码解决了这个问题。

  

DocumentFile.fromSingleUri(getApplicationContext(),fileUri).delete();

这很好。试试吧。