У меня проблема с классом редактирования моего профиля. Это всегда вылетает из-за кода картинки профиля. Класс позволяет мне вносить изменения в свой профиль, которые сохраняются в облачной базе данных Firebase. Все отлично работает, но что-то не так с аватаркой. У меня с этим проблемы.
Сначала я вызываю метод, который открывает галерею и загружает картинку в пользователя
user.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
filechooser();
// fileuploader();
Picasso.get().load(imageurl).into(user);
}
});
с помощью методов fileuploader, getExtension, filechooser и onActivityResult
// uploads and open gallery on device
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {
imageurl = data.getData();
user.setImageURI(imageurl);
}
}
private void filechooser() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, 1);
}
private String getExtension(Uri uri) {
ContentResolver cr = getContentResolver();
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
return mimeTypeMap.getExtensionFromMimeType(cr.getType(uri));
}
private void fileuploader() {
final StorageReference Ref = mStorageRef.child(System.currentTimeMillis() + "," + getExtension(imageurl));
uploadtask = Ref.putFile(imageurl)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// Get a URL to the uploaded content
Toast.makeText(ProfilBearbeiten.this, "Image Uploaded", Toast.LENGTH_LONG).show();
// Get a URL to the uploaded content
Ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
// Got the download URL, so write it to the database
userId = fAuth.getCurrentUser().getUid();
DocumentReference documentReference = fStore.collection("users").document(userId);
documentReference.update("Image", uri.toString());
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
// ...
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
// ...
}
});
}
});
}
} `
Сбой при методе getExtension () всякий раз, когда я нажимаю« bestätigen », что означает подтверждение и отправку его в базу данных. База данных сохраняет измененные данные, но приложение по-прежнему аварийно завершает работу
bestätigen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// get Information from Edit Text or fileuploader()
final String eemail = email.getText().toString().trim();
final String efullname = fullName.getText().toString();
final String eort = ort.getText().toString();
final String einteresssen = interessen.getText().toString();
final String ebeschreibung = beschreibung.getText().toString();
final String etelefonnummer = telefonummer.getText().toString();
final String bild = "";
final String image = imageurl != null ? imageurl.toString() : null;
userId = fAuth.getCurrentUser().getUid();
DocumentReference documentReference = fStore.collection("users").document(userId);
//save edited Information in Database
Map<String, Object> user = new HashMap<>();
user.put("Benutername", efullname);
user.put("EMail", eemail);
user.put("Ort", eort);
user.put("Interessen", einteresssen);
user.put("Beschreibung", ebeschreibung);
user.put("Telefonnummer", etelefonnummer);
documentReference.set(user);
Intent intent = new Intent(ProfilBearbeiten.this, Profile.class);
startActivity(intent);
fileuploader();
}
});
Полная ошибка
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mind.simplelogin, PID: 9013
java.lang.NullPointerException: url
at com.android.internal.util.Preconditions.checkNotNull(Preconditions.java:133)
at android.content.ContentResolver.getType(ContentResolver.java:716)
at com.mind.simplelogin.ProfilBearbeiten.getExtension(ProfilBearbeiten.java:190)
at com.mind.simplelogin.ProfilBearbeiten.fileuploader(ProfilBearbeiten.java:195)
at com.mind.simplelogin.ProfilBearbeiten.access$100(ProfilBearbeiten.java:57)
at com.mind.simplelogin.ProfilBearbeiten$2.onClick(ProfilBearbeiten.java:143)
at android.view.View.performClick(View.java:7125)
at android.view.View.performClickInternal(View.java:7102)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27336)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)