我的应用程序能够打开和处理某些文件。所以你可以在文件管理器中点击这样的文件,我的应用程序将提供打开它。清单文件中的intent过滤器是这样设置的。Android:删除文件导致内容uri
<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标识。 (从内容://)
例如,这将返回null,而什么都不做:
Context.getContentResolver().delete(getIntent().getData(), null, null);
你从哪里得到'Uri'? – CommonsWare
看看DocumentFile :: deleteFile()。 – greenapps
[可能通过'ContentResolver'删除文件,而不是通过'file.delete()']删除它们(http://stackoverflow.com/questions/10925196/deleting-files-via-a-contentresolver-as - 反对删除他们通过文件删除) –