首页 > 解决方案 > android 从图库中选择图像(现在 startActivityForResult 已被贬值)

问题描述

相信很多人很久以前就问过这个问题了。现在, startActivityForResult 已折旧,我正在寻找它的替代品。

以前的代码是

        public void onClick(View v) {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(
                Intent.createChooser(
                        intent,
                        "Select Image from here..."),
                PICK_CODE);

标签: android

解决方案


用这个,

ImageView image;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    image = (ImageView) findViewById(R.id.display_image);
}

public void pickAImage(View view) 
{
 Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
 photoPickerIntent.setType("image/*");
 someActivityResultLauncher.launch(photoPickerIntent);
}

然后进行操作,

ActivityResultLauncher<Intent> someActivityResultLauncher = registerForActivityResult(
        new ActivityResultContracts.StartActivityForResult(),
        result -> {
            if (result.getResultCode() == Activity.RESULT_OK) {
                // There are no request codes
                // doSomeOperations();
                Intent data = result.getData();
                Uri selectedImage = Objects.requireNonNull(data).getData();
                InputStream imageStream = null;
                try {
                    imageStream = getContentResolver().openInputStream(selectedImage);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
                BitmapFactory.decodeStream(imageStream);
                image.setImageURI(selectedImage);// To display selected image in image view
            }
        });

推荐阅读