Java Android Firebase存储问题,无法上载图像
将照片添加到Firebase存储时遇到问题。以下是我的全部代码:Java Android Firebase存储问题,无法上载图像,java,android,firebase,firebase-storage,Java,Android,Firebase,Firebase Storage,将照片添加到Firebase存储时遇到问题。以下是我的全部代码: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_settings, container, false); firebaseAuth = Fir
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_settings, container, false);
firebaseAuth = FirebaseAuth.getInstance();
firebaseUser = firebaseAuth.getCurrentUser();
firebaseFirestore = FirebaseFirestore.getInstance();
firebaseStorage = FirebaseStorage.getInstance();
storageReference = firebaseStorage.getReference();
profileImage = (ImageView) view.findViewById(R.id.ivProfilePicture);
logout = (Button) view.findViewById(R.id.btLogout);
deleteAccount = (Button) view.findViewById(R.id.btDelete);
updateAccount = (Button) view.findViewById(R.id.btUpdate);
searchPicture = (Button) view.findViewById(R.id.btSelect);
addPicture = (Button) view.findViewById(R.id.btUpload);
pseudo = (TextView) view.findViewById(R.id.tvUserPseudo);
name = (EditText) view.findViewById(R.id.etUserNameModif);
surname = (EditText) view.findViewById(R.id.etUserSurnameModif);
mail = (TextView) view.findViewById(R.id.tvUserEmail);
age = (EditText) view.findViewById(R.id.etUserAgeModif);
modifyMail = (TextView) view.findViewById(R.id.tvChangeEmail);
modifyPassword = (TextView) view.findViewById(R.id.tvChangePassword);
userMail = firebaseUser.getEmail();
progressDialog = new ProgressDialog(view.getContext(), R.style.AppCompatAlertDialogStyle);
userUid = FirebaseAuth.getInstance().getCurrentUser().getUid(); // Collect user data
documentReference = firebaseFirestore.collection("Users").document(userUid);
documentReference.addSnapshotListener(getActivity(), new EventListener<DocumentSnapshot>() {// Display data in TextView
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
if (e == null) {
if (documentSnapshot.exists()) {
pseudo.setText(documentSnapshot.getString("Pseudo"));
name.setText(documentSnapshot.getString("Name"));
surname.setText(documentSnapshot.getString("Surname"));
mail.setText(userMail);
age.setText(documentSnapshot.getString("Age"));
} else {
}
}
}
});
modifyMail.setOnClickListener(new View.OnClickListener() { // Change Email
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.MyAlertDialogStyle);
builder.setTitle("Pour modifier l'adresse e-mail merci de vous reconnecter :");
final View customLayout = getLayoutInflater().inflate(R.layout.alertdialog_email, null);
builder.setView(customLayout);
builder.setPositiveButton("Valider", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
EditText mailchange = customLayout.findViewById(R.id.etMailChange);
EditText passwordchange = customLayout.findViewById(R.id.etPasswordChange);
EditText newmailchange = customLayout.findViewById(R.id.etNewMail);
String mailc = mailchange.getText().toString();
String passwordc = passwordchange.getText().toString();
String newmailc = newmailchange.getText().toString();
if (!mailc.isEmpty() && !passwordc.isEmpty() && !newmailc.isEmpty()) {
firebaseAuth.fetchSignInMethodsForEmail(newmailc) // Check if an account already exist with this E-mail
.addOnCompleteListener(task -> {
if (mailc.matches(emailPattern) && newmailc.matches(emailPattern)) {
List<String> check = task.getResult().getSignInMethods();
if (check.isEmpty()) {
result = true;
}
if (!check.isEmpty()) {
Toast.makeText(getActivity(), "Un compte existe déjà avec cet E-mail", Toast.LENGTH_SHORT).show();
dialog.dismiss();
result = false;
}
} else {
Toast.makeText(getActivity(), "Merci de rentrer une adresse E-mail valide", Toast.LENGTH_SHORT).show();
dialog.dismiss();
result = false;
}
});
} else {
Toast.makeText(getActivity(), "Veuillez remplir tous les champs", Toast.LENGTH_SHORT).show();
result = false;
}
if (result == true) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
AuthCredential credential = EmailAuthProvider
.getCredential(mailc, passwordc);
user.reauthenticate(credential)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
user.updateEmail(newmailc);
sendEmailVerification();
} else {
Toast.makeText(getActivity(), "E-mail ou mot de passe incorrect", Toast.LENGTH_SHORT).show();
}
}
});
}
}
});
builder.setNeutralButton("Annuler", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
});
modifyPassword.setOnClickListener(new View.OnClickListener() { // Change password
@Override
public void onClick(View view) {
String useremail = mail.getText().toString().trim();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.MyAlertDialogStyle);
builder.setTitle("Voulez-vous vraiment modifier le mot de passe ?");
builder.setPositiveButton("Oui, envoyer le mail", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
firebaseAuth.sendPasswordResetEmail(useremail).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
getActivity().finish();
Intent intent = new Intent(getActivity(), ConnectionActivity.class);
getActivity().startActivity(intent);
Toast.makeText(getActivity(), "E-mail de réinitialisation envoyé !", Toast.LENGTH_SHORT).show();
}
}
});
}
});
builder.setNeutralButton("Non, annuler", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
});
updateAccount.setOnClickListener(new View.OnClickListener() { // Modify information's
@Override
public void onClick(View view) {
nameModif = name.getText().toString();
surnameModif = surname.getText().toString();
ageModif = age.getText().toString();
Map<String, Object> user = new HashMap<>();
user.put("Name", nameModif);
user.put("Surname", surnameModif);
user.put("Age", ageModif);
documentReference.update(user);
Toast.makeText(getActivity(), "Informations modifiées avec succès !", Toast.LENGTH_SHORT).show();
}
});
logout.setOnClickListener(new View.OnClickListener() { // Logout
@Override
public void onClick(View view) {
firebaseAuth.signOut();
getActivity().finish();
Intent intent = new Intent(getActivity(), ConnectionActivity.class);
getActivity().startActivity(intent);
Toast.makeText(getActivity(), "Déconnexion réussie", Toast.LENGTH_SHORT).show();
}
});
searchPicture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startCropActivity();
}
});
addPicture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addPictureFirebase();
}
});
deleteAccount.setOnClickListener(new View.OnClickListener() { // Delete an account
@Override
public void onClick(View view) {
AlertDialog.Builder dialog = new AlertDialog.Builder(view.getContext());
dialog.setTitle("Êtes-vous sur ?");
dialog.setMessage("Supprimer ce compte sera définitif et vous ne pourrez plus revenir en arrière.");
dialog.setPositiveButton("Supprimer", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
progressDialog.setMessage("Suppression du compte en cours");
progressDialog.show();
firebaseUser.delete().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(getActivity(), "Compte supprimer avec succès", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
getActivity().finish();
Intent intent = new Intent(getActivity(), ConnectionActivity.class);
getActivity().startActivity(intent);
} else {
Toast.makeText(getActivity(), "Une erreur est survenue", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
}
});
}
});
dialog.setNegativeButton("Annuler", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
AlertDialog alertDialog = dialog.create();
alertDialog.show();
}
});
return view;
}
private void sendEmailVerification() { // Send verification E-mail to user mail address
if (firebaseUser != null) {
firebaseUser.sendEmailVerification().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
Toast.makeText(getActivity(), "E-mail modifiée avec succès, un mail de vérification a été envoyé ", Toast.LENGTH_SHORT).show();
firebaseAuth.signOut();
getActivity().finish();
Intent intent = new Intent(getActivity(), ConnectionActivity.class);
getActivity().startActivity(intent);
} else {
Toast.makeText(getActivity(), "Le mail de vérification n'a pas pu être envoyé", Toast.LENGTH_SHORT).show();
}
});
}
}
private void startCropActivity() { // Different possibilities to choose a photo
CropImage.activity()
.start(getContext(), this);
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { // Crop selected photo
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
Uri resultUri = result.getUri();
profileImage.setImageURI(resultUri);
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
Exception error = result.getError();
}
}
}
private void addPictureFirebase() { // Add photo to storage
StorageReference profileImagesRef = storageReference.child("profileImages/" + userUid);
storageReference.getName().equals(profileImagesRef.getName());
if (resultUri == null) {
Toast.makeText(getActivity(), "Sélectionner d'abord une photo"+resultUri, Toast.LENGTH_SHORT).show();
} else {
storageReference.putFile(resultUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(getActivity(), "Photo envoyée avec succès !", Toast.LENGTH_SHORT).show();
}
});
storageReference.putFile(resultUri).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getActivity(), "Erreur", Toast.LENGTH_SHORT).show();
}
});
}
}
@覆盖
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment\u设置,容器,错误);
firebaseAuth=firebaseAuth.getInstance();
firebaseUser=firebaseAuth.getCurrentUser();
firebaseFirestore=firebaseFirestore.getInstance();
firebaseStorage=firebaseStorage.getInstance();
storageReference=firebaseStorage.getReference();
profileImage=(ImageView)view.findViewById(R.id.ivProfilePicture);
logout=(按钮)view.findviewbyd(R.id.btLogout);
deleteAccount=(按钮)view.findViewById(R.id.btDelete);
updateAccount=(按钮)view.findViewById(R.id.btUpdate);
searchPicture=(按钮)view.findViewById(R.id.btSelect);
addPicture=(按钮)view.findViewById(R.id.btUpload);
pseudo=(TextView)view.findViewById(R.id.tvUserPseudo);
name=(EditText)view.findViewById(R.id.etUserNameModif);
姓氏=(EditText)view.findViewById(R.id.etUserNamesModif);
mail=(TextView)view.findViewById(R.id.tvUserEmail);
age=(EditText)view.findViewById(R.id.etUserAgeModif);
modifyMail=(TextView)view.findViewById(R.id.tvChangeEmail);
modifyPassword=(TextView)view.findViewById(R.id.tvChangePassword);
userMail=firebaseUser.getEmail();
progressDialog=新建progressDialog(view.getContext(),R.style.AppCompatAlertDialogStyle);
userUid=FirebaseAuth.getInstance().getCurrentUser().getUid();//收集用户数据
documentReference=firebaseFirestore.collection(“用户”).document(userUid);
documentReference.addSnapshotListener(getActivity(),new EventListener(){//在TextView中显示数据
@凌驾
public void OneEvent(@Nullable DocumentSnapshot DocumentSnapshot,@Nullable FirebaseFirestoreException e){
如果(e==null){
if(documentSnapshot.exists()){
pseudo.setText(documentSnapshot.getString(“pseudo”);
name.setText(documentSnapshot.getString(“name”));
setText(documentSnapshot.getString(“姓氏”);
setText(userMail);
age.setText(documentSnapshot.getString(“age”));
}否则{
}
}
}
});
modifyMail.setOnClickListener(新视图.OnClickListener(){//更改电子邮件
@凌驾
公共void onClick(视图){
AlertDialog.Builder=新建AlertDialog.Builder(getActivity(),R.style.MyAlertDialogStyle);
builder.setTitle(“倾倒修改器l'adrese e-mail merci de vous reconnecter:”);
最终视图customLayout=GetLayoutFlater()。充气(R.layout.alertdialog\u电子邮件,空);
builder.setView(自定义布局);
setPositiveButton(“Valider”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
EditText-mailchange=customLayout.findViewById(R.id.etMailChange);
EditText passwordchange=customLayout.findViewById(R.id.etPasswordChange);
EditText newmailchange=customLayout.findViewById(R.id.etNewMail);
字符串mailc=mailchange.getText().toString();
字符串passwordc=passwordchange.getText().toString();
字符串newmailc=newmailchange.getText().toString();
如果(!mailc.isEmpty()&&!passwordc.isEmpty()&&!newmailc.isEmpty()){
firebaseAuth.FetchSigningMethodForemail(newmailc)//检查此电子邮件是否已存在帐户
.addOnCompleteListener(任务->{
if(mailc.matches(emailPattern)&&newmailc.matches(emailPattern)){
列表检查=task.getResult().getSignInMethods();
if(检查.isEmpty()){
结果=真;
}
如果(!check.isEmpty()){
Toast.makeText(getActivity(),“联合国现有的电子邮件”,Toast.LENGTH_SHORT.show();
dialog.dismise();
结果=假;
}
}否则{
Toast.makeText(getActivity(),“Merci de rentrer une-address E-mail valide”,Toast.LENGTH_SHORT.show();
dialog.dismise();
结果=假;
}
});
}否则{
Toast.makeText(getActivity(),“Veuillez remplir tous les champs”,Toast.LENGTH_SHORT).show();
结果=假;
}
如果(结果==真){
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
AuthCredential credential=EmailAuthProvider
.getCredential(mailc、passwordc);
用户重新验证(凭证)
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
FirebaseUser=FirebaseAuth.getInstance().getCurre
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { // Crop selected photo
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
Uri resultUri = result.getUri();
profileImage.setImageURI(resultUri);
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
Exception error = result.getError();
}
}
}
private void addPictureFirebase() { // Add photo to storage
StorageReference profileImagesRef = storageReference.child("profileImages/" + userUid);
storageReference.getName().equals(profileImagesRef.getName());
if (resultUri == null) {
Toast.makeText(getActivity(), "Sélectionner d'abord une photo"+resultUri, Toast.LENGTH_SHORT).show();
} else {
storageReference.putFile(resultUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(getActivity(), "Photo envoyée avec succès !", Toast.LENGTH_SHORT).show();
}
});
storageReference.putFile(resultUri).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getActivity(), "Erreur", Toast.LENGTH_SHORT).show();
}
});
}
}
Uri resultUri;
resultUri = result.getUri();