Intent.ACTION_GET_CONTENT和Intent.ACTION_PICK之间的区别

我试图让用户select任何他们想要在他们的设备上使用的图像作为壁纸应用程序,我正在build设。 出于某种原因,当我写:

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); 

我可以从Gallery或Google Drive中进行select。 什么是最好的方式让用户select什么应用程序来检索图片从每一次? 或者为什么这两个不同的意图常数有什么不同?

你的第一个Intent是无效的。 ACTION_PICK的协议要求你提供一个Uri表示你从中select的集合。

什么是最好的方式让用户select什么应用程序来检索图片从每一次?

如果您希望用户根据MIMEtypesselect某些内容,请使用ACTION_GET_CONTENT

如果你有一些你希望用户select的特定集合(由Uri标识),请使用ACTION_PICK

如果是平局,请使用ACTION_GET_CONTENT 。 虽然ACTION_PICK并未正式废弃,但Dianne ACTION_GET_CONTENTbuild议使用ACTION_GET_CONTENT

现代的行动ACTION_GET_CONTENT这是更好的支持

ACTION_PICK

活动行动:从数据中select一个项目,返回所选内容。

input: getData()是包含从中选取项目的数据目录(vnd.android.cursor.dir / *)的URI。

输出:选取的项目的URI。

常量值: “android.intent.action.PICK”


差异 : –

活动操作:允许用户select特定types的数据并将其返回

这与ACTION_PICK不同,在这里我们只是说需要什么样的数据, 而不是用户可以从中select的现有数据的URI

A ACTION_GET_CONTENT可以允许用户在运行时创build数据 (例如拍摄照片或录制声音 ),让他们浏览网页并下载所需的数据等。

参考 http://developer.android.com/reference/android/content/Intent.html#ACTION_GET_CONTENT

  public static final String ACTION_GET_CONTENT 

在API级别1中添加

活动操作:允许用户select特定types的数据并将其返回。 这与ACTION_PICK不同,在这里我们只是说需要什么样的数据,而不是用户可以从中select的现有数据的URI。 ACTION_GET_CONTENT可以允许用户在运行时创build数据(例如拍摄照片或录制声音),让他们浏览网页并下载所需的数据等。

通过http://developer.android.com/reference/android/content/Intent.html#ACTION_GET_CONTENT