在常见的Activity Action Intent常量中,ACTION_PICK android.intent.action.PICK 是“选择数据”的意思,来简单的分享一下我知道的Intent.ACTION_PICK的一些用法:
(一)、调用图库,获取所有本地图片:
Intent imageIntent = new Intent(Intent.ACTION_GET_CONTENT);
imageIntent.setType(“image/*”);
startActivityForResult(imageIntent, PICK_CODE); //PICK_CODE是常量
(二)、调用本地联系人:
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
startActivityForResult(intent, PICK_CONTACT);
(三)、调用音乐,获取所有本地音乐文件:
Intent audioIntent = new Intent(Intent.ACTION_GET_CONTENT);
audioIntent.setType(“audio/*”);
startActivityForResult(audioIntent, PICK_AUDIO);
(四)、调用视频,获取所有本地视频文件:
Intent videoIntent = new Intent(Intent.ACTION_GET_CONTENT);
videoIntent.setType(“video/*”);
startActivityForResult(videoIntent, PICK_VIDEO);
例如:
public static void jumpToChooser(Activity activity) {
if (activity == null) {
return;
}
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
PackageManager packageManager = activity.getPackageManager();
List<ResolveInfo> resInfo = packageManager.queryIntentActivities(intent, 0);
if (resInfo != null && (!resInfo.isEmpty())) {
List<Intent> targets = new ArrayList<>();
for (ResolveInfo info : resInfo) {
Intent targeted = new Intent(Intent.ACTION_PICK);
targeted.setType("image/*");
ActivityInfo activityInfo = info.activityInfo;
String packageName = activityInfo.packageName;
if (activityInfo != null && packageName != null) {
if (packageName.contains(FILE_MANAGER) || packageName.contains(GALLERY_APP)) {//FILE_MANAGER,GALLERY_APP自定义包名
targeted.setPackage(packageName);
targets.add(targeted);
}
}
}
// intent = Intent.createChooser(targets.remove(0), activity.getString(R.string.vrmake_setting_chooser_title));
intent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targets.toArray(new Parcelable[]{}));
}
activity.startActivityForResult(intent, PHOTO_REQUEST_GALLERY);
}