¿Cuál es la diferencia real entre ACTION_GET_CONTENT y ACTION_OPEN_DOCUMENT?
Me cuesta comprender la diferencia entre ACTION_OPEN_DOCUMENT
y ACTION_GET_CONTENT
cuando se utilizan para abrir un documento que se puede abrir . Si estoy apoyando a Andriod antes de KitKat, que no es compatible con ACTION_OPEN_DOCUMENT
, ¿debo resolver con ACTION_GET_CONTENT
?
La documentación dice esto:
ACTION_OPEN_DOCUMENT
no pretende sustituir aACTION_GET_CONTENT
. El que debe usar depende de las necesidades de su aplicación:
- Utilice
ACTION_GET_CONTENT
si desea que su aplicación simplemente lea / importe datos. Con este enfoque, la aplicación importa una copia de los datos, como un archivo de imagen.- Utilice
ACTION_OPEN_DOCUMENT
si desea que su aplicación tenga acceso persistente a largo plazo a documentos propiedad de un proveedor de documentos. Un ejemplo sería una aplicación de edición de fotografías que permite a los usuarios editar imágenes almacenadas en un proveedor de documentos.
¿ ACTION_GET_CONTENT
no ACTION_GET_CONTENT
también proveedores de documentos en KitKat? ¿Qué me impediría tener "acceso a largo plazo y persistente" y qué significa exactamente eso?
Básicamente, ¿cuál es la diferencia entre los siguientes dos fragmentos?
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("*/*");
¿ACTION_GET_CONTENT no utiliza también proveedores de documentos en KitKat?
No necesariamente. Eso depende de la implementación de la aplicación que está publicando el contenido. Observe también que DocumentProvider
es un tipo específico de ContentProvider
.
¿Qué me impediría tener "acceso a largo plazo, persistente"
El Uri
que recibe de ACTION_GET_CONTENT
puede tener una concesión de permiso temporal con él para su aplicación, para poder leer y / o escribir el contenido. Esa subvención eventualmente caducará (por ejemplo, cuando termine su proceso). Así, por ejemplo, guardar el Uri
como una cadena en una base de datos puede ser inútil.
Parte del marco de acceso de almacenamiento incluye el concepto de que un proveedor de contenido puede ofrecer concesiones de permiso que pueden durar por un período prolongado ("a largo plazo, persistente"). Aunque no hay nada que impida que una aplicación ofrezca permisos persistentes con ACTION_GET_CONTENT
en el nivel 19+ de la API, será más común con ACTION_OPEN_DOCUMENT
.
Básicamente, ¿cuál es la diferencia entre los siguientes dos fragmentos?
La experiencia del usuario será algo diferente, ya que ACTION_OPEN_DOCUMENT
proporciona una interfaz normalizada de explorador de archivos, mientras que ACTION_GET_CONTENT
es un diálogo de selector tradicional, seguido de alguna interfaz de usuario específica de la aplicación.
Desde su punto de vista como consumidor de este contenido, ACTION_GET_CONTENT
es si desea utilizar el contenido ahora; ACTION_OPEN_DOCUMENT
es si desea utilizar el contenido ahora y posteriormente.