我正在尝试从图库中选择图片,但在选择后不显示更改后的图片。我认为它没有选择 reuest 代码并且 startActivityForResult() 已被弃用。
以下是java代码:
package com.example.chatzone;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class ProfileImage extends AppCompatActivity {
private CardView mgetImage;
private ImageView mUserImage;
private TextView Skip;
private static int PICK_IMAGE=123;
private Uri imagePath;
private Button mUploadImage;
private FirebaseAuth mAuth;
private FirebaseStorage fbStorage;
private StorageReference fbStorageRef;
private String ImageUriAccessToken;
private FirebaseFirestore fbStore;
ProgressBar PB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile_image);
mAuth = FirebaseAuth.getInstance();
fbStorage = FirebaseStorage.getInstance();
fbStorageRef = fbStorage.getReference();
fbStore = FirebaseFirestore.getInstance();
mgetImage = findViewById(R.id.UpladImageCardview);
mUserImage = findViewById(R.id.UpladImage);
mUploadImage = findViewById(R.id.Upload);
Skip = findViewById(R.id.skip);
mgetImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(i,PICK_IMAGE);
}
});
mUploadImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(imagePath==null)
{
Toast.makeText(ProfileImage.this, "Select Image", Toast.LENGTH_SHORT).show();
}
else
{
PB.setVisibility(View.VISIBLE);
sendImage();
PB.setVisibility(View.GONE);
Intent i = new Intent(ProfileImage.this,MainActivity.class);
startActivity(i);
finish();
}
}
});
Skip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i= new Intent(ProfileImage.this,MainActivity.class);
startActivity(i);
}
});
}
private void sendImage() {
sendImagetoStorage();
}
private void sendImagetoStorage() {
StorageReference imgref = fbStorageRef.child("Images").child(mAuth.getUid()).child("Profile Pic");
//Image compression
Bitmap bitmap = null;
try {
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),imagePath);
}
catch (IOException e)
{
e.printStackTrace();
}
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG,25,byteArrayOutputStream);
byte[] data = byteArrayOutputStream.toByteArray();
UploadTask uploadTask = imgref.putBytes(data);
uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
imgref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
ImageUriAccessToken=uri.toString();
Toast.makeText(ProfileImage.this, "get Uri Success", Toast.LENGTH_SHORT).show();
sendDataToFireStore();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(ProfileImage.this, "Failed to get Uri", Toast.LENGTH_SHORT).show();
}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(ProfileImage.this, "Image Upload Failure", Toast.LENGTH_SHORT).show();
}
});
}
private void sendDataToFireStore() {
DocumentReference documentReference = fbStore.collection("Users").document(mAuth.getUid());
UserProfile User = new UserProfile();
Map<String , Object> userdata = new HashMap<>();
userdata.put("id",User.getId());
userdata.put("Email",User.getEmail());
userdata.put("User Name",User.getUsername());
userdata.put("First Name",User.getFirst_Name());
userdata.put("Last Name",User.getLast_Name());
userdata.put("Birth Date",User.getBirth_Date());
userdata.put("Phone Number",User.getPhone_Number());
userdata.put("image url",User.getURL());
userdata.put("status",User.getStatus());
userdata.put("search",User.getSearch());
documentReference.set(userdata).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void unused) {
Toast.makeText(ProfileImage.this, "Data Stored on the Firestore ", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode==PICK_IMAGE && requestCode==RESULT_OK)
{
imagePath = data.getData();
mUserImage.setImageURI(imagePath);
}
else {
Toast.makeText(this, "Unsuccessfull", Toast.LENGTH_SHORT).show();
}
super.onActivityResult(requestCode, resultCode, data);
}
}
所以请告诉我如何解决这个问题并从图库中选择图像。我正在使用毕加索图书馆 “实施‘com.squareup.picasso:picasso:2.71828’”