-1

I keep getting the error below

Process: com.attendanceapp.obare.attendanceapp, PID: 8494
                  java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.contains(java.lang.CharSequence)' on a null object reference
                      at android.content.ContentResolver.checkLeakDetectIgnoreList(ContentResolver.java:2695)
                      at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1178)
                      at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:958)
                      at android.content.ContentResolver.openInputStream(ContentResolver.java:678)
                      at com.google.firebase.storage.UploadTask.<init>(Unknown Source)
                      at com.google.firebase.storage.StorageReference.putFile(Unknown Source)
                      at com.Healthcareapp.medicalapp.AddEmployeePackage.Add_employee$4.onClick(Add_employee.java:142)
                      at android.view.View.performClick(View.java:5274)
                      at android.view.View$PerformClick.run(View.java:21543)
                      at android.os.Handler.handleCallback(Handler.java:815)
                      at android.os.Handler.dispatchMessage(Handler.java:104)
                      at android.os.Looper.loop(Looper.java:207)
                      at android.app.ActivityThread.main(ActivityThread.java:5728)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)

The code is shown below, error occurs at the addOnSuccessListener. Any help would be greatly appreciated. Everything is working great though.

final StorageReference onlineStoragePhotoRef = mStorageReference.child("WorkForce_Photos").child(FirstName).child(photoUri.getLastPathSegment());

            progressBar.setMessage("Uploading file to Firebase");
            progressBar.show();

            final String finalFirstNameText = FirstName;
            final String finalLastNameText = LastName;
            final String finalIDnumText = IDnum;
            final String finalContactText = Contactnum;
            final String finaWorkBadgeText = WBadge;

            onlineStoragePhotoRef.putFile(photoUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    progressBar.setMessage("Success");
                    photoUrl = taskSnapshot.getDownloadUrl().toString();
                    WorkForceData workForceData = new WorkForceData(finalFirstNameText, finalLastNameText, finalIDnumText, finalContactText, finaWorkBadgeText,photoUrl);
                    mDatabaseReference.child("WorkForce").push().setValue(workForceData);
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(Add_employee.this, e.getMessage(), Toast.LENGTH_LONG).show();
                    photoUrl = "";
                    WorkForceData workForceData = new WorkForceData(finalFirstNameText, finalLastNameText, finalIDnumText, finalContactText, finaWorkBadgeText, photoUrl);
                    mDatabaseReference.child("Users").push().setValue(workForceData);
                }
            });

            progressBar.dismiss();
            finish();

        }
    });

}
AL.
  • 36,815
  • 10
  • 142
  • 281
Obare13
  • 155
  • 3
  • 8

1 Answers1

2

The success listener executes asynchronously, after the upload completes. This is occurring after you dismiss the progress bar and finish the activity with these statements:

progressBar.dismiss();
finish();

Refactor your code to perform those operations when the upload completes:

onlineStoragePhotoRef.putFile(photoUri)
        .addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
        if (task.isSuccessful()) {
            progressBar.setMessage("Success");
            photoUrl = task.getResult().getDownloadUrl().toString();
            WorkForceData workForceData = new WorkForceData(finalFirstNameText, finalLastNameText, finalIDnumText, finalContactText, finaWorkBadgeText,photoUrl);
            mDatabaseReference.child("WorkForce").push().setValue(workForceData);
        } else {
            Toast.makeText(Add_employee.this, task.getException().getMessage(), Toast.LENGTH_LONG).show();
            photoUrl = "";
            WorkForceData workForceData = new WorkForceData(finalFirstNameText, finalLastNameText, finalIDnumText, finalContactText, finaWorkBadgeText, photoUrl);
            mDatabaseReference.child("Users").push().setValue(workForceData);
        }
        progressBar.dismiss();
        finish();
    }
});
Bob Snyder
  • 37,759
  • 6
  • 111
  • 158