【发布时间】:2020-04-16 19:18:39
【问题描述】:
我正在尝试将图像上传到 Firebase Cloud Storage。但每当我去选择一张图像时,我都要裁剪活动,然后我就回到上一个活动。我拥有所有的读写权限,但仍然无法上传图片。
而且它还说这条线总是错误的
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE)
我的代码
Profile_beta.java
public class Profile_beta extends AppCompatActivity {
CircleImageView image_profile;
TextView username;
MaterialButton uploadButon;
DatabaseReference reference;
FirebaseUser fuser;
StorageReference storageReference;
private static final int PICK_IMAGE_REQUEST = 1;
private int Storage_Permission_Req=1;
private StorageTask uploadTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile_beta);
image_profile =findViewById(R.id.profile_image);
username = findViewById(R.id.username);
storageReference = FirebaseStorage.getInstance().getReference("uploads");
//fuser = FirebaseAuth.getInstance().getCurrentUser();
//reference = FirebaseDatabase.getInstance().getReference("Users").child(fuser.getUid());
image_profile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ContextCompat.checkSelfPermission(Profile_beta.this,
Manifest.permission.READ_EXTERNAL_STORAGE)== PackageManager.PERMISSION_GRANTED){
openFileChooser();
}
else{
requestStoragePermission();
}
}
});
}
private void openFileChooser() {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, PICK_IMAGE_REQUEST);
}
private void requestStoragePermission() {
ActivityCompat.requestPermissions(Profile_beta.this,new String[]
{Manifest.permission.READ_EXTERNAL_STORAGE},Storage_Permission_Req);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode==Storage_Permission_Req){
if (grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
Toast.makeText(Profile_beta.this,"Permission Granted",Toast.LENGTH_SHORT).show();
openFileChooser();
}
else {
Toast.makeText(Profile_beta.this,"Permission Not Granted",Toast.LENGTH_SHORT).show();
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
&& data != null ) {
Uri ImageUri = data.getData();
CropImage.activity(ImageUri)
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1,1)
.start(this);
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
Uri resultUri = result.getUri();
String fuser;
fuser = FirebaseAuth.getInstance().getCurrentUser().getUid();
reference = FirebaseDatabase.getInstance().getReference("Users").child(fuser);
StorageReference filepath=storageReference.child(fuser+".jpg");
image_profile.setImageURI(resultUri);
filepath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if (task.isSuccessful()) {
Toast.makeText(Profile_beta.this, "Profile Image Updated", Toast.LENGTH_SHORT).show();
}
}
});
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
Exception error = result.getError();
}
}
}
}
}
【问题讨论】:
-
if-else 子句不正确。
-
@KasımÖzdemir 我从 OnActivity Result 中删除了以下语句,但现在我一直循环播放作物活动,但如果 (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null ) { }
-
不要删除语句。像我的答案一样使用。
标签: java android firebase firebase-storage