Подтвердить что ты не робот

Разница между 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 Диск". Каков наилучший способ позволить пользователю выбрать, какое приложение будет получать снимок каждый раз? Или почему эти две разные постоянные намерения имеют значение?

4b9b3361

Ответ 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