java - 如何将 startActivityForResult() 更改为 ActivityResultLauncher?
问题描述
我是 Android Studio 的超级初学者。我正在尝试打开相册并获取图像,并且 startActivityForResult() 已被弃用。如何使用 ActivityResultLauncher 更改我的代码?
public class AddPhotoActivity extends AppCompatActivity implements View.OnClickListener {
private ActivityAddPhotoBinding binding;
private String Url;
private FirebaseStorage firebaseStorage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_add_photo);
binding.addphotoBtnUpload.setOnClickListener(this);
//Open Album
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, PICK_IMAGE_FROM_ALBUM);
// Firebase storage
firebaseStorage = FirebaseStorage.getInstance();
binding.addphotoImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, PICK_IMAGE_FROM_ALBUM);
}
});
}
解决方案
你应该。
ActivityResultLauncher<String> mGetContent = registerForActivityResult(new GetContent(),
new ActivityResultCallback<Uri>() {
@Override
public void onActivityResult(Uri uri) {
// Handle the returned Uri
}
});
@Override
public void onCreate(@Nullable savedInstanceState: Bundle) {
// ...
binding.addphotoImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// Pass in the mime type you'd like to allow the user to select
// as the input
mGetContent.launch("image/*");
}
});
}