Android 当我尝试输入使用firebase存储的特定活动时,应用程序崩溃
当我转到特定活动时,应用程序崩溃,该活动使用firebase存储加载图像并显示它,它不会停止,只是在应用程序崩溃时将我发送到另一个活动(主页),这是发生这种情况时我收到的错误:Android 当我尝试输入使用firebase存储的特定活动时,应用程序崩溃,android,firebase,google-cloud-firestore,firebase-storage,Android,Firebase,Google Cloud Firestore,Firebase Storage,当我转到特定活动时,应用程序崩溃,该活动使用firebase存储加载图像并显示它,它不会停止,只是在应用程序崩溃时将我发送到另一个活动(主页),这是发生这种情况时我收到的错误: 2021-05-17 02:06:46.967 7520-7639/app.com.health E/StorageException: StorageException has occurred. Object does not exist at location. Code: -13
2021-05-17 02:06:46.967 7520-7639/app.com.health E/StorageException: StorageException has occurred.
Object does not exist at location.
Code: -13010 HttpResult: 404
2021-05-17 02:06:46.969 7520-7639/app.com.health E/StorageException: { "error": { "code": 404, "message": "Not Found. Could not get object", "status": "GET_OBJECT" }}
java.io.IOException: { "error": { "code": 404, "message": "Not Found. Could not get object", "status": "GET_OBJECT" }}
at com.google.firebase.storage.network.NetworkRequest.parseResponse(NetworkRequest.java:434)
at com.google.firebase.storage.network.NetworkRequest.parseErrorResponse(NetworkRequest.java:451)
at com.google.firebase.storage.network.NetworkRequest.processResponseStream(NetworkRequest.java:442)
at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:272)
at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:286)
at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:70)
at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:62)
at com.google.firebase.storage.GetDownloadUrlTask.run(GetDownloadUrlTask.java:76)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
发生这种情况的活动的代码为:
package net.smallacademy.authenticatorapp;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.EventListener;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.FirebaseFirestoreException;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.squareup.picasso.Picasso;
import javax.annotation.Nullable;
public class MainActivity extends AppCompatActivity {
private static final int GALLERY_INTENT_CODE = 1023 ;
TextView fullName,email,phone,verifyMsg;
FirebaseAuth fAuth;
FirebaseFirestore fStore;
String userId;
Button resendCode;
Button resetPassLocal,changeProfileImage;
FirebaseUser user;
ImageView profileImage;
StorageReference storageReference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//code for bar
//initialize and assign variables
BottomNavigationView bottomNavigationView=findViewById(R.id.bottom_navigation);
//set home selected
bottomNavigationView.setSelectedItemId(R.id.profile);
//preform itemsselectedlistener
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch(item.getItemId()){
case R.id.exercice:
startActivity(new Intent(getApplicationContext()
,Exercice.class));
overridePendingTransition(0,0);
finish();
return true;
case R.id.profile:
finish();
return true;
case R.id.home:
startActivity(new Intent(getApplicationContext()
,Home.class));
overridePendingTransition(0,0);
finish();
return true;
}
return false;
}
});
//end
phone = findViewById(R.id.profilePhone);
fullName = findViewById(R.id.profileName);
email = findViewById(R.id.profileEmail);
resetPassLocal = findViewById(R.id.resetPasswordLocal);
profileImage = findViewById(R.id.profileImage);
changeProfileImage = findViewById(R.id.changeProfile);
fAuth = FirebaseAuth.getInstance();
fStore = FirebaseFirestore.getInstance();
storageReference = FirebaseStorage.getInstance().getReference();
StorageReference profileRef = storageReference.child("users/"+fAuth.getCurrentUser().getUid()+"/profile.jpg");
profileRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Picasso.get().load(uri).into(profileImage);
}
});
resendCode = findViewById(R.id.resendCode);
verifyMsg = findViewById(R.id.verifyMsg);
userId = fAuth.getCurrentUser().getUid();
user = fAuth.getCurrentUser();
if(!user.isEmailVerified()){
verifyMsg.setVisibility(View.VISIBLE);
resendCode.setVisibility(View.VISIBLE);
resendCode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
user.sendEmailVerification().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(v.getContext(), "Verification Email Has been Sent.", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d("tag", "onFailure: Email not sent " + e.getMessage());
}
});
}
});
}
DocumentReference documentReference = fStore.collection("users").document(userId);
documentReference.addSnapshotListener(this, new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
if (e == null) {
if(documentSnapshot.exists()){
phone.setText(documentSnapshot.getString("phone"));
fullName.setText(documentSnapshot.getString("fName"));
email.setText(documentSnapshot.getString("email"));
}else {
Log.d("tag", "onEvent: Document do not exists");
}
}}
});
resetPassLocal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final EditText resetPassword = new EditText(v.getContext());
final AlertDialog.Builder passwordResetDialog = new AlertDialog.Builder(v.getContext());
passwordResetDialog.setTitle("Reset Password ?");
passwordResetDialog.setMessage("Enter New Password > 6 Characters long.");
passwordResetDialog.setView(resetPassword);
passwordResetDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// extract the email and send reset link
String newPassword = resetPassword.getText().toString();
user.updatePassword(newPassword).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(MainActivity.this, "Password Reset Successfully.", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(MainActivity.this, "Password Reset Failed.", Toast.LENGTH_SHORT).show();
}
});
}
});
passwordResetDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// close
}
});
passwordResetDialog.create().show();
}
});
changeProfileImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// open gallery
Intent i = new Intent(v.getContext(),EditProfile.class);
i.putExtra("fullName",fullName.getText().toString());
i.putExtra("email",email.getText().toString());
i.putExtra("phone",phone.getText().toString());
startActivity(i);
//
}
});
}
public void logout(View view) {
FirebaseAuth.getInstance().signOut();//logout
startActivity(new Intent(getApplicationContext(),Login.class));
finish();
}
}
package net.smallacademy.authenticatorapp;
导入androidx.annotation.NonNull;
导入androidx.appcompat.app.AlertDialog;
导入androidx.appcompat.app.appcompat活动;
导入android.app.Activity;
导入android.content.ContentResolver;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.net.Uri;
导入android.os.Bundle;
导入android.provider.MediaStore;
导入android.util.Log;
导入android.view.MenuItem;
导入android.view.view;
导入android.webkit.MimeTypeMap;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ImageView;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.google.android.gms.tasks.OnFailureListener;
导入com.google.android.gms.tasks.OnSuccessListener;
导入com.google.android.material.bottomnavigation.BottomNavigationView;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.auth.FirebaseUser;
导入com.google.firebase.firestore.DocumentReference;
导入com.google.firebase.firestore.DocumentSnapshot;
导入com.google.firebase.firestore.EventListener;
导入com.google.firebase.firestore.FirebaseFirestore;
导入com.google.firebase.firestore.FirebaseFirestoreException;
导入com.google.firebase.storage.firebase存储;
导入com.google.firebase.storage.StorageReference;
导入com.google.firebase.storage.UploadTask;
导入com.squareup.picasso.picasso;
导入javax.annotation.Nullable;
公共类MainActivity扩展了AppCompatActivity{
专用静态最终int画廊\u意向\u代码=1023;
text查看全名、电子邮件、电话、verifyMsg;
弗斯;
FirebaseFirestore商店;
字符串用户标识;
按钮重新发送代码;
按钮resetPassLocal,changeProfileImage;
FirebaseUser用户;
图像视图轮廓图像;
StorageReference-StorageReference;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//条形码
//初始化并分配变量
BottomNavigationView BottomNavigationView=findViewById(R.id.bottom\u导航);
//设置已选择的原点
bottomNavigationView.setSelectedItemId(R.id.profile);
//预成型项SelectedListener
bottomNavigationView.setOnNavigationItemSelectedListener(新的bottomNavigationView.OnNavigationItemSelectedListener(){
@凌驾
公共布尔值onNavigationItemSelected(@NonNull MenuItem item){
开关(item.getItemId()){
案例R.id.exercice:
startActivity(新意图(getApplicationContext)()
,练习类);
覆盖转换(0,0);
完成();
返回true;
案例R.id.profile:
完成();
返回true;
案例R.id.home:
startActivity(新意图(getApplicationContext)()
,Home.class));
覆盖转换(0,0);
完成();
返回true;
}
返回false;
}
});
//结束
电话=findViewById(R.id.profilePhone);
fullName=findviewbyd(R.id.profileName);
email=findviewbyd(R.id.profileEmail);
resetPassLocal=findviewbyd(R.id.resetPasswordLocal);
profileImage=findviewbyd(R.id.profileImage);
changeProfileImage=findviewbyd(R.id.changeProfile);
fAuth=FirebaseAuth.getInstance();
fStore=FirebaseFirestore.getInstance();
storageReference=FirebaseStorage.getInstance().getReference();
StorageReference profileRef=StorageReference.child(“用户/”+fAuth.getCurrentUser().getUid()+“/profile.jpg”);
profileRef.getDownloadUrl().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共无效(Uri){
Picasso.get().load(uri).into(profileImage);
}
});
resendCode=findviewbyd(R.id.resendCode);
verifyMsg=findViewById(R.id.verifyMsg);
userId=fAuth.getCurrentUser().getUid();
user=fAuth.getCurrentUser();
如果(!user.isEmailVerified()){
verifyMsg.setVisibility(View.VISIBLE);
resendCode.setVisibility(View.VISIBLE);
resendCode.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(最终视图v){
user.sendEmailVerification().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时公开作废(作废避免){
Toast.makeText(v.getContext(),“验证电子邮件已发送。”,Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Log.d(“tag”、“onFailure:Email not sent”+e.getMessage());
}
});
}
});
}
DocumentReference=fStore.collection(“用户”).document(userId);
documentReference.addSnapshotListener(这个,新的EventListener(){
@凌驾
public void onEvent(@Nullable D