前言
通常技術方案的選擇、會帶來后續一些不可控的東西,這也是沒法避免的,程序開發者中同時面對、測試、領導、產品各種要求。同時在網絡上查找的資料也只是很舊的,不一定適合新設備,需要推倒重新弄
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回調@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == PICK_IMAGE && resultCode == RESULT_OK && data != null) {// 獲取選擇的圖片的 URIUri 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、系統東西好用、不要隨意找網上沒人維護的代碼