Java 我想通过使用Image Croper在Firebase上上传图像,在Emulator上可以正常工作,但在移动设备上不行。安卓工作室
当我在手机上选择image时,它会显示gallery图像,但当我从gallery中选择image form时,图像裁剪器不会打开,并在显示Toast消息“出错”后显示白色屏幕,该消息在OnActivityResult函数的else条件中声明。请帮我解决这个问题。 `Java 我想通过使用Image Croper在Firebase上上传图像,在Emulator上可以正常工作,但在移动设备上不行。安卓工作室,java,android,firebase,android-studio,file-upload,Java,Android,Firebase,Android Studio,File Upload,当我在手机上选择image时,它会显示gallery图像,但当我从gallery中选择image form时,图像裁剪器不会打开,并在显示Toast消息“出错”后显示白色屏幕,该消息在OnActivityResult函数的else条件中声明。请帮我解决这个问题。 ` ImageView关闭,图像_配置文件; 文本视图保存,电视节目更改; MaterialEdit全名、用户名、简历; FirebaseUser FirebaseUser; 私有Uri-mimageri; 私有存储任务上传任务; St
ImageView关闭,图像_配置文件;
文本视图保存,电视节目更改;
MaterialEdit全名、用户名、简历;
FirebaseUser FirebaseUser;
私有Uri-mimageri;
私有存储任务上传任务;
StorageReference-storageRef;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u edit\u profile);
关闭=findViewById(R.id.close);
image\u profile=findviewbyd(R.id.image\u profile);
save=findviewbyd(R.id.save);
tv_change=findviewbyd(R.id.tv_change);
fullname=findviewbyd(R.id.fullname);
username=findviewbyd(R.id.username);
bio=findViewById(R.id.bio);
firebaseUser=FirebaseAuth.getInstance().getCurrentUser();
storageRef=FirebaseStorage.getInstance().getReference(“上载”);
数据库引用=
FirebaseDatabase.getInstance().getReference(“用户”).child(firebaseUser.getUid());
addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
User=dataSnapshot.getValue(User.class);
setText(user.getFullname());
username.setText(user.getUsername());
bio.setText(user.getBio());
Glide.with(getApplicationContext()).load(user.getImageurl())到(image_profile)中;
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
image\u profile.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
CropImage.activity()
.setAspectRatio(1,1)
.setCropShape(CropImageView.CropShape.OVAL)
.start(EditProfileActivity.this);
}
});
}
私有void updateProfile(字符串全名、字符串用户名、字符串bio){
DatabaseReference=FirebaseDatabase.getInstance().getReference().child(“用户”).child(firebaseUser.getUid());
HashMap=newHashMap();
map.put(“全名”,全名);
map.put(“用户名”,用户名);
地图放置(“bio”,bio);
参考。更新儿童(地图);
Toast.makeText(EditProfileActivity.this,“已成功更新!”,Toast.LENGTH_SHORT.show();
}
私有字符串getFileExtension(Uri){
ContentResolver cR=getContentResolver();
MimeTypeMap mime=MimeTypeMap.getSingleton();
返回mime.getExtensionFromMimeType(cR.getType(uri));
}
私有void uploadImage(){
最终ProgressDialog pd=新ProgressDialog(本);
pd.setMessage(“上传”);
pd.show();
if(mimageri!=null){
final-StorageReference fileReference=storageRef.child(System.currentTimeMillis()
+“+getFileExtension(mimageri));
uploadTask=fileReference.putFile(mimageri);
uploadTask.continueWithTask(新的Continuation(){
@凌驾
公共任务(@NonNull Task Task)引发异常{
如果(!task.issusccessful()){
抛出task.getException();
}
返回fileReference.getDownloadUrl();
}
}).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Uri downloadUri=task.getResult();
字符串miUrlOk=downloadUri.toString();
DatabaseReference=FirebaseDatabase.getInstance().getReference(“用户”).child(firebaseUser.getUid());
HashMap map1=新的HashMap();
map1.put(“imageurl”,“miUrlOk”);
参考。更新儿童(map1);
pd.解散();
}否则{
Toast.makeText(EditProfileActivity.this,“失败”,Toast.LENGTH_SHORT.show();
}
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(EditProfileActivity.this,e.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}否则{
Toast.makeText(EditProfileActivity.this,“未选择图像”,Toast.LENGTH_SHORT.show();
}
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==CropImage.CROP\u IMAGE\u ACTIVITY\u REQUEST\u CODE){
CropImage.ActivityResult结果=CropImage.getActivityResult(数据);
if(resultCode==RESULT\u OK){
mimageri=result.getUri();//在这一行之后,应用程序移动到else条件并显示toast
上传图像();
}
}否则{
Toast.makeText(这是“出错了!”,Toast.LENGTH_SHORT.show();
}
}
}
`
ImageView close, image_profile;
TextView save, tv_change;
MaterialEditText fullname, username, bio;
FirebaseUser firebaseUser;
private Uri mImageUri;
private StorageTask uploadTask;
StorageReference storageRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_profile);
close = findViewById(R.id.close);
image_profile = findViewById(R.id.image_profile);
save = findViewById(R.id.save);
tv_change = findViewById(R.id.tv_change);
fullname = findViewById(R.id.fullname);
username = findViewById(R.id.username);
bio = findViewById(R.id.bio);
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
storageRef = FirebaseStorage.getInstance().getReference("uploads");
DatabaseReference reference =
FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid());
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
fullname.setText(user.getFullname());
username.setText(user.getUsername());
bio.setText(user.getBio());
Glide.with(getApplicationContext()).load(user.getImageurl()).into(image_profile);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
image_profile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CropImage.activity()
.setAspectRatio(1,1)
.setCropShape(CropImageView.CropShape.OVAL)
.start(EditProfileActivity.this);
}
});
}
private void updateProfile(String fullname, String username, String bio){
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Users").child(firebaseUser.getUid());
HashMap<String, Object> map = new HashMap<>();
map.put("fullname", fullname);
map.put("username", username);
map.put("bio", bio);
reference.updateChildren(map);
Toast.makeText(EditProfileActivity.this, "Successfully updated!", Toast.LENGTH_SHORT).show();
}
private String getFileExtension(Uri uri){
ContentResolver cR = getContentResolver();
MimeTypeMap mime = MimeTypeMap.getSingleton();
return mime.getExtensionFromMimeType(cR.getType(uri));
}
private void uploadImage(){
final ProgressDialog pd = new ProgressDialog(this);
pd.setMessage("Uploading");
pd.show();
if (mImageUri != null){
final StorageReference fileReference = storageRef.child(System.currentTimeMillis()
+ "." + getFileExtension(mImageUri));
uploadTask = fileReference.putFile(mImageUri);
uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
return fileReference.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri downloadUri = task.getResult();
String miUrlOk = downloadUri.toString();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid());
HashMap<String, Object> map1 = new HashMap<>();
map1.put("imageurl", ""+miUrlOk);
reference.updateChildren(map1);
pd.dismiss();
} else {
Toast.makeText(EditProfileActivity.this, "Failed", Toast.LENGTH_SHORT).show();
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(EditProfileActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
} else {
Toast.makeText(EditProfileActivity.this, "No image selected", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
mImageUri = result.getUri(); // after this line App move to else conditon and show toast
uploadImage();
}
} else{
Toast.makeText(this, "Something gone wrong!", Toast.LENGTH_SHORT).show();
}
}