Разница между Intent.ACTION_GET_CONTENT и Intent.ACTION_PICK
Я пытаюсь позволить пользователю выбрать любое изображение, которое они хотят на своем устройстве, использовать в качестве обоев в этом приложении для обоев, которое я создаю. По какой-то причине, когда я пишу:
Intent myIntent = new Intent(Intent.ACTION_PICK);
myIntent.setType("image/*");
startActivityForResult(myIntent, 100);
Я иду прямо в галерею, но когда пишу:
Intent myIntent = new Intent(Intent.ACTION_GET_CONTENT, null);
myIntent.setType("image/*");
startActivityForResult(myIntent, 100);
Я могу выбрать "Галерея" или "Google Диск". Каков наилучший способ позволить пользователю выбрать, какое приложение будет получать снимок каждый раз? Или почему эти две разные постоянные намерения имеют значение?
Ответы
Ответ 1
Ваш первый Intent
недействителен. Для протокола для ACTION_PICK
требуется указать Uri
, указывающий коллекцию, из которой вы выбираете.
Каков наилучший способ позволить пользователю выбрать, какое приложение будет получать снимок каждый раз?
Если вы хотите, чтобы пользователь выбирал что-то, основанное на типе MIME, используйте ACTION_GET_CONTENT
.
Если у вас есть определенная коллекция (идентифицированная с помощью Uri
), которую вы хотите выбрать, используйте ACTION_PICK
.
В случае галстука перейдите к ACTION_GET_CONTENT
. Пока ACTION_PICK
официально не устарел, Диана Хакборн рекомендует ACTION_GET_CONTENT
.
Ответ 2
Современное действие ACTION_GET_CONTENT
, , которое гораздо лучше поддерживается,
ACTION_PICK
:
Действие Действия: Выберите элемент из данных, возвратив выбранное.
Вход: getData() - это URI, содержащий каталог данных (vnd.android.cursor.dir/*), из которого можно выбрать элемент.
Вывод: URI элемента, который был выбран.
Постоянное значение: "android.intent.action.PICK"
Разница: -
Действие Действие: Разрешить пользователю выбирать данные определенного типа и возвращать его.
Это отличается от ACTION_PICK тем, что здесь мы просто говорим, какие данные нужны, не URI существующих данных, из которых пользователь может выбрать.
A ACTION_GET_CONTENT
может позволить пользователю создавать данные при запуске (например, с фотографией или записью звука), пусть они просматривают в Интернете и загрузить нужные данные и т.д.
Ссылка http://developer.android.com/reference/android/content/Intent.html#ACTION_GET_CONTENT
Ответ 3
public static final String ACTION_GET_CONTENT
Добавлен в уровень API 1
Действие Действие: разрешить пользователю выбирать конкретный вид данных и вернуть его. Это отличается от ACTION_PICK, здесь мы просто говорим, какие данные нужны, а не URI существующих данных, из которых пользователь может выбрать. ACTION_GET_CONTENT может позволить пользователю создавать данные по мере их запуска. (например, съемка или запись звука), пусть они просматривают через Интернет и загрузить нужные данные и т.д.
через http://developer.android.com/reference/android/content/Intent.html#ACTION_GET_CONTENT