Android 11<= 解析活动

Android 11<= resolveActivity

我致力于改进 android 应用程序的功能。有一个从应用程序制作照片的功能。对于安卓 11<=

takePictureIntent.resolveActivity(getPackageManager())

returns 空。我知道这是因为更高的 android 版本。但是当我删除 if 语句时一切正常所以我想知道为什么这条线在那里以及如果将其删除会发生什么错误。

private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
   //if (true) {
        File photoFile = createImageFile();

        if (photoFile != null) {
            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
            startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
        }
    }
}

如果没有匹配的 activity,您的 startActivityForResult() 调用应该会崩溃并显示 ActivityNotFoundException

startActivityForResult() 调用包装在 try/catch 中适用于所有 Android 版本。