ACTION_GET_CONTENT和ACTION_OPEN_DOCUMENT之间的真正区别是什么?

我很难理解ACTION_OPEN_DOCUMENTACTION_GET_CONTENT意图在用于打开可打开文档时的区别。 如果我在KitKat之前支持Andriod(不支持ACTION_OPEN_DOCUMENT ,我应该使用ACTION_GET_CONTENT解决吗?

文档说这个:

ACTION_OPEN_DOCUMENT不打算替代ACTION_GET_CONTENT 。 你应该使用的取决于你的应用程序的需求:

  • 如果您希望应用程序只读取/导入数据,请使用ACTION_GET_CONTENT 。 使用这种方法,应用程序会导入数据的副本,如图像文件。
  • 如果您希望应用程序对文档提供者所拥有的文档具有长期的持久访问权限,请使用ACTION_OPEN_DOCUMENT 。 一个例子是一个照片编辑应用程序,让用户编辑存储在文档提供程序中的图像。

ACTION_GET_CONTENT是否也在KitKat中使用文档提供程序? 什么会阻止我进行“长期的,持续的访问”,这到底意味着什么?

基本上,以下两个片段有什么区别?

ACTION_GET_CONTENT

 Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("*/*"); 

ACTION_OPEN_DOCUMENT

 Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.setType("*/*"); 

Solutions Collecting From Web of "ACTION_GET_CONTENT和ACTION_OPEN_DOCUMENT之间的真正区别是什么?"

ACTION_GET_CONTENT是否也在KitKat中使用文档提供程序?

不必要。 这取决于发布内容的应用程序的实现。 另请注意, DocumentProvider是特定types的ContentProvider

什么会阻止我“长期持续访问”

您从ACTION_GET_CONTENT获得的Uri可能会为您的应用程序提供临时权限授予,以便能够读取和/或写入内容。 这笔赠款最终会失效(例如,当您的stream程终止时)。 所以,例如,将Uri作为string保存在数据库中可能毫无意义。

存储访问框架的一部分包括内容提供者可以提供可以持续一段时间(“长期,持续”)的权限授予的概念。 虽然没有什么能阻止应用程序通过API Level 19+上的ACTION_GET_CONTENT提供这种持久性权限,但它们对ACTION_OPEN_DOCUMENT更为常见。

基本上,以下两个片段有什么区别?

用户体验会有所不同,因为ACTION_OPEN_DOCUMENT提供了标准化的文件资源pipe理器风格的界面,而ACTION_GET_CONTENT是传统的select器对话框,后面是一些特定于应用程序的UI。

从您作为此内容的使用者的angular度来看, ACTION_GET_CONTENT是您现在要使用的内容; ACTION_OPEN_DOCUMENT是如果你想现在和以后使用的内容。