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

我可以选择画廊或者谷歌硬盘。让用户选择每次检索哪个应用程序的最佳方法是什么?或者为什么这两个不同的意图常量会有所不同呢?

51702 次浏览

现代行动ACTION_GET_CONTENT 更好的支持,

ACTION_PICK :

活动动作: 从数据中选择一个项目,返回选中的内容。

输入: getData ()是包含数据目录(vnd.android.cursor.dir/*)的 URI,可以从中挑选项目。

输出: 选择的项的 URI。

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


差异 :-

活动动作: 允许用户选择一个 特定类型的数据,并返回它

这与 ACTION _ PICK 的不同之处在于,这里我们只说需要哪种类型的数据,即用户可以从中选择的 不是现有数据的 URI

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

一个 href = “ http://developer.android.com/Reference/android/content/Inent.html # ACTION _ GET _ CONTENT”rel = “ norefrer”> http://developer.android.com/Reference/android/content/intent.html#action_get_content

 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

您的第一个 Intent无效。 ACTION_PICK协议要求您提供一个 Uri,指示您从中选择的集合。

让用户选择每次检索哪个应用程序的最佳方法是什么?

如果希望用户根据 MIME 类型选择某些内容,请使用 ACTION_GET_CONTENT

如果您有一些特定的集合(由 Uri标识) ,希望用户从中挑选,请使用 ACTION_PICK

如果平局,使用 ACTION_GET_CONTENT。虽然 ACTION_PICK没有被正式废弃,但是 Dianne Hackborn 推荐 ACTION_GET_CONTENT