0 java android firebase firebase-storage
我目前正在学习如何在 java 中使用 android studio,并尝试制作一个社交媒体应用程序。我目前正在创建一个编辑个人资料页面,用户可以在其中更新其详细信息并上传个人资料图片。
我一直在关注在线教程,我遇到的所有教程都使用 startActivityForResult 方法。它已被划掉,并且不会调用该方法,因为它已被弃用。但我不知道该用什么来代替。
`ProfileImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//open gallery
Intent OpenGalleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(OpenGalleryIntent, 1000);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @androidx.annotation.Nullable Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1000){
if(resultCode == Activity.RESULT_OK){
Uri imageUri = data.getData();
ProfileImage.setImageURI(imageUri);
UploadImageToFirebase(imageUri);
}
}
}
private void UploadImageToFirebase(Uri image){
StorageReference fileRef = storageReference.child("Profile.jpg");
fileRef.putFile(image).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(Edit_Profile.this, "Image Uploaded", Toast.LENGTH_SHORT).show();
}
});`
Run Code Online (Sandbox Code Playgroud)
我知道有另一种选择,但我不明白它是如何工作的。
startActivityForResult在 AndroidX Activity 和 Fragment API 的更高版本中确实已弃用(尽管我相信尽管有警告您仍然可以使用它)。从活动中获取结果的新方法是registerForActivityResult。
在您的代码中,您需要创建一个启动器,它将处理结果(选定的图像)
private final ActivityResultLauncher<Intent> launcher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == Activity.RESULT_OK
&& result.getData() != null) {
Uri photoUri = result.getData().getData();
//use photoUri here
}
}
);
Run Code Online (Sandbox Code Playgroud)
然后在 onClickListener 中启动这个启动器
profileImage.setOnClickListener(view -> {
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
launcher.launch(intent);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3355 次 |
| 最近记录: |