我使用registerForActivityResult
来获取系统文件,并在获取后将他填充到imageView中
imageViewLogo.setOnClickListener(imageView->{
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
intentActivityResultLauncher.launch(intent);
});
intentActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),new ActivityResultCallback<ActivityResult>(){
@Override
public void onActivityResult(ActivityResult result) {
if(result.getResultCode() == Activity.RESULT_OK) {
Uri uri = result.getData().getData();
if(imageViewLogo!=null && editTextLogo!= null){
Picasso.with(getContext()).load(uri).into(imageViewLogo);
editTextLogo.setText(uri.toString());
}
}
}
});
但是这样有一问题,在通过这一方式打开相册并选取文件后,照片能够正常显示,但是当第一次打开软件时,这些图片并不能正常显示,只有当执行“打开相册,并选择照片”这一操作后才能正常显示,那么有没有办法在程序启动时就获取这个权限呢?即打开程序时就能读取照片。