#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/…