0

我想用 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>

我怎么解决这个问题?

4

0 回答 0