Ответ 1
Не использует ли ACTION_GET_CONTENT поставщиков документов в KitKat?
Не обязательно. Это зависит от реализации приложения, которое публикует контент. Также обратите внимание, что DocumentProvider
- это определенный тип ContentProvider
.
Что помешало бы мне иметь "долгосрочный, постоянный доступ"
Uri
, с которого вы вернетесь из ACTION_GET_CONTENT
, может быть предоставлено временное разрешение для вашего приложения, чтобы иметь возможность читать и/или писать контент. Этот грант в конечном счете истечет (например, когда ваш процесс завершится). Так, например, сохранение Uri
в виде строки в базе данных может быть бессмысленным.
Часть платформы доступа к хранилищу включает концепцию, согласно которой поставщик контента может предоставлять разрешения, которые могут длиться в течение длительного периода ( "долгосрочный, постоянный" ). Хотя ничто не мешает приложению предлагать такие постоянные разрешения с помощью ACTION_GET_CONTENT
на уровне API 19+, они будут чаще встречаться с ACTION_OPEN_DOCUMENT
.
В принципе, в чем разница между следующими двумя фрагментами?
Пользователь будет немного отличаться, так как ACTION_OPEN_DOCUMENT
предоставляет стандартизованный интерфейс в стиле проводника файлов, тогда как ACTION_GET_CONTENT
- это традиционное диалоговое окно выбора, за которым следует некоторый пользовательский интерфейс приложения.
С вашей точки зрения как потребитель этого контента, ACTION_GET_CONTENT
- это если вы хотите использовать контент сейчас; ACTION_OPEN_DOCUMENT
- это если вы хотите использовать контент сейчас и позже.