尝试从Firebase存储中检索数据时android应用崩溃

时间:2019-02-17 20:04:36

标签: java firebase-storage

我正在尝试从Firebase检索数据,但是当我打开应用程序时,应用程序崩溃。

我尝试添加MultiDex库并将库的版本更改为相同,但是错误似乎出在数据库存储上。我试图更改Firebase存储,并尝试了其他方法来检索数据,但它根本无法工作。到目前为止,这是我所做的。

public class SettingsActivity extends AppCompatActivity {

    private final static int GALLERY_PICK = 1;

    private TextView displayName , displayStatus;
    private Button changeImgBtn , changeStatusBtn;
    private CircleImageView imageView;

    private DatabaseReference getUserDataReference;
    private FirebaseAuth auth;
    private StorageReference storageReference;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings_acitivty);

        auth = FirebaseAuth.getInstance();
        String online_user_id = auth.getCurrentUser().getUid();

        getUserDataReference = FirebaseDatabase.getInstance().getReference().child("Users").child(online_user_id);
        storageReference = FirebaseStorage.getInstance().getReference().child("Profile_images");

        displayName = (TextView)findViewById(R.id.settings_name);
        displayStatus = (TextView)findViewById(R.id.settings_status);
        changeImgBtn = (Button)findViewById(R.id.settings_change_image_btn);
        changeStatusBtn = (Button)findViewById(R.id.settings_change_status_btn);
        imageView = (CircleImageView)findViewById(R.id.settings_image);

        getUserDataReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                String name = dataSnapshot.child("user_name").getValue().toString();
                String status = dataSnapshot.child("user_status").getValue().toString();
                String image = dataSnapshot.child("user_image").getValue().toString();
                String thumb_image = dataSnapshot.child("user_thumb_image").getValue().toString();

                displayName.setText(name);
                displayStatus.setText(status);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

        changeImgBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent galleryIntent = new Intent();
                galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
                galleryIntent.setType("image/*");
                startActivityForResult(galleryIntent,GALLERY_PICK);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode == GALLERY_PICK && resultCode == RESULT_OK && data != null){

            Uri imageUri = data.getData();
            CropImage.activity()
                    .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 current_user_id = auth.getCurrentUser().getUid();
                StorageReference filePath = storageReference.child(current_user_id + ".jpg");
                filePath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                        if(task.isSuccessful()){
                            Toast.makeText(SettingsActivity.this, "Saving your Image", Toast.LENGTH_SHORT).show();
                        }else{
                            Toast.makeText(SettingsActivity.this, task.getException().toString(), Toast.LENGTH_SHORT).show();
                        }
                    }
                });

            } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
                Exception error = result.getError();
            }
        }
    }
}

这是logcat中的错误。

 Process: com.example.bestever.mychatapp, PID: 12592
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/internal/zzbq;
    at com.google.firebase.storage.FirebaseStorage.getInstance(Unknown Source)
    at com.example.bestever.mychatapp.SettingsActivity.onCreate(SettingsActivity.java:51)
    at android.app.Activity.performCreate(Activity.java:6288)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2642)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2754)
    at android.app.ActivityThread.access$900(ActivityThread.java:177)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:145)
    at android.app.ActivityThread.main(ActivityThread.java:5938)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.internal.zzbq" on path: DexPathList[[zip file "/data/app/com.example.bestever.mychatapp-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
    at com.google.firebase.storage.FirebaseStorage.getInstance(Unknown Source) 
    at com.example.bestever.mychatapp.SettingsActivity.onCreate(SettingsActivity.java:51) 
    at android.app.Activity.performCreate(Activity.java:6288) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2642) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2754) 
    at android.app.ActivityThread.access$900(ActivityThread.java:177) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:145) 
    at android.app.ActivityThread.main(ActivityThread.java:5938) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195) 
    Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.common.internal.zzbq
    at java.lang.Class.classForName(Native Method)
    at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
    at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
            ... 16 more
 Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

0 个答案:

没有答案