我想用 registerForActivityResult 拍照。每当我拍照并点击确认按钮时,结果代码始终为 0。这是我的代码:
Uri mImageUri;
ActivityResultLauncher<Intent> mCameraLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
// ---> Here the result code is always 0 <----
Intent data = result.getData();
if (result.getResultCode() == RESULT_OK && data != null) {
Bitmap bitmap = BitmapFactory.decodeFile(mImageUri.toString());
}
});
public void launchCamera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File tempDir = new File(Environment.getExternalStorageDirectory().getPath(),
APP_NAME + File.separator + "Temp");
if (!tempDir.exists()) {
tempDir.mkdirs();
}
File file = new File(tempDir.getAbsolutePath() + File.separator + "tempImage");
if (Build.VERSION.SDK_INT < 24) {
mImageUri = Uri.fromFile(file);
} else {
mImageUri = Uri.parse(file.getPath());
}
intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
mCameraLauncher.launch(intent);
}
清单.xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<queries>
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
</queries>
我怎么解决这个问题?