前言
通常技术方案的选择、会带来后续一些不可控的东西,这也是没法避免的,程序开发者中同时面对、测试、领导、产品各种要求。同时在网络上查找的资料也只是很旧的,不一定适合新设备,需要推倒重新弄
1、解决方案通过意图选择器做成通用的、同时支持拍照和本地图片选择
2、解决方案也可以低版本手机使用框架、高版本手机做成意图选择器,因为有些框架不会去适配新的Android API
需求一:选择本地图片
private static final int PICK_IMAGE = 1;
点击事件
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
startActivityForResult(intent, PICK_IMAGE);
Activity回调
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE && resultCode == RESULT_OK && data != null) {
// 获取选择的图片的 URI
Uri selectedImageUri = data.getData();
Log.e(TAG,"selectedImageUri:"+selectedImageUri);
}
}
需求二:同时选择图片和拍照
Intent intent = fileChooserParams.createIntent();
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*"); // 任何文件类型
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imageUri = createCameraImageUri();
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
Intent chooserIntent = Intent.createChooser(intent, "请选择");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{cameraIntent});
startActivityForResult(chooserIntent, REQUEST_CODE_FILE_CHOOSER);
界面效果
在这里插入图片描述
总结
1、系统东西好用、不要随意找网上没人维护的代码