получить намерение от результата действия?

#android #android-intent #onactivityresult #registerforactivityresult

Вопрос:

Я пытаюсь получить намерение от onActivityResult(ActivityResult result) метода, используя
Intent intent = result.getData(); но возвращенное намерение результата null ?
Я использую registerForActivityResult для создания ActivityResultLauncher<Intent> , чтобы запустить намерение, как показано в приведенном ниже коде

 cLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
                                  new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {
                    if (result.getResultCode() == Activity.RESULT_OK) {
                    Intent intent = result.getData();
                    Log.d(TAG,"intent: " intent);
                    int id = intent.getIntExtra(buttonClicked,0);
                    Log.d(TAG,"id: " id);
            }
            }
            });
 

 private void launchCamera(int id) {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        
        File photoFile = null;
        try {
            photoFile = BitmapUtils.createTempImageFile(this);
        } catch (IOException ex) {
            
            ex.printStackTrace();
        }
       
        if (photoFile != null) {

            mTempPhotoPath = photoFile.getAbsolutePath();

          
            Uri photoURI = FileProvider.getUriForFile(this,
                    FILE_PROVIDER_AUTHORITY,
                    photoFile);

          
            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
            takePictureIntent.putExtra(buttonClicked,id);
           
            cLauncher.launch(takePictureIntent);
        }
    }
}
 

Комментарии:

1. Это потому ACTION_IMAGE_CAPTURE , что не предполагается возвращать Intent , если вы предоставите EXTRA_OUTPUT . Возможно, вы захотите использовать ActivityResultContracts.TakePicture : developer.android.com/reference/kotlin/androidx/activity/result/…