我试图让用户在他的设备上选择他们想要的任何图像,以便在我构建的壁纸应用程序中用作壁纸。出于某种原因,我写道:
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云端硬盘。让用户选择每次检索图片的应用程序的最佳方法是什么?或者为什么这两个不同的意图常数有所不同?
答案 0 :(得分:89)
您的第一个Intent
无效。 protocol for ACTION_PICK
要求您提供Uri
,表示您要从中挑选的集合。
让用户选择每次检索图片的应用程序的最佳方法是什么?
如果您希望用户根据MIME类型选择内容,请使用ACTION_GET_CONTENT
。
如果您希望用户选择某个特定集合(由Uri
标识),请使用ACTION_PICK
。
如果出现平局,请使用ACTION_GET_CONTENT
。虽然ACTION_PICK
未正式弃用,但Dianne Hackborn recommends ACTION_GET_CONTENT
。
答案 1 :(得分:14)
现代行动为ACTION_GET_CONTENT
,得到更好的支持,
ACTION_PICK
:
活动操作:从数据中挑选一个项目,返回选中的内容。
输入: getData()是包含数据目录(vnd.android.cursor.dir / *)的URI,可以从中选择项目。
输出:已挑选项目的URI。
常量值:“android.intent.action.PICK”
差异: -
活动操作:允许用户选择特定类型的数据并将其返回。
这与ACTION_PICK的不同之处在于,我们只是说明需要什么类型的数据,不是现有数据的URI ,用户可以从中选择。
A ACTION_GET_CONTENT
可以让用户在运行时创建数据(例如拍照或录制声音),让他们浏览网页并下载所需的数据等
参考 http://developer.android.com/reference/android/content/Intent.html#ACTION_GET_CONTENT
答案 2 :(得分:-1)
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