Android如何使用一个Intent同时从相机或图库中选择图像

问题描述 投票:1回答:2

这是我在名为Pawoo的应用程序中找到的实现。我可以选择拍照或同时从系统内置图库或第三方图库中选择图像。

我想知道如何只用一个Intent来实现它。因为它似乎不是由第三方库实现的。

enter image description here

android android-intent gallery
2个回答
0
投票

这不是一个Intent。这个对话框是bottom sheet


0
投票

我已经知道如何实现它。受到Intent to choose between the camera or the gallery in Android的启发

qustion的答案不仅仅是一个意图。简单地说,在我的问题截图中,有3个动作,这意味着3个意图。关键的方法是qazxsw poi

这是我的完整代码:

Intent.createChooser()

这是我的演示:public void click(View view) { File file = getExternalFilesDir(Environment.DIRECTORY_DCIM); Uri cameraOutputUri = Uri.fromFile(file); Intent intent = getPickIntent(cameraOutputUri); startActivityForResult(intent, -1); } private Intent getPickIntent(Uri cameraOutputUri) { final List<Intent> intents = new ArrayList<Intent>(); if (true) { intents.add(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI)); } if (true) { setCameraIntents(intents, cameraOutputUri); } if (intents.isEmpty()) return null; Intent result = Intent.createChooser(intents.remove(0), null); if (!intents.isEmpty()) { result.putExtra(Intent.EXTRA_INITIAL_INTENTS, intents.toArray(new Parcelable[] {})); } return result; } private void setCameraIntents(List<Intent> cameraIntents, Uri output) { final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); final PackageManager packageManager = getPackageManager(); final List<ResolveInfo> listCam = packageManager.queryIntentActivities(captureIntent, 0); for (ResolveInfo res : listCam) { final String packageName = res.activityInfo.packageName; final Intent intent = new Intent(captureIntent); intent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name)); intent.setPackage(packageName); intent.putExtra(MediaStore.EXTRA_OUTPUT, output); cameraIntents.add(intent); } }

© www.soinside.com 2019 - 2024. All rights reserved.