cannot Upload and Load images in Firebase Storage in Android studio if mobile data connection is used

Viewed 41

Android 10 cannot Upload and Load images in Firebase Storage in Android studio. In android 9 or lower and 11 it works Fine. if my phone is in data connection, it wont load or upload image but if it is connected with Wifi it works. how can i solved this problem? Any suggestions?

LogCat: 2021-04-15 21:38:51.089 8635-8657/? E/Gallery: [1657/ BeamManager] BeamManager : setBeamUris > can't load nfcadapter

private void getUserInformation(){
    databaseReference.child(mAuth.getCurrentUser().getUid()).addValueEventListener(new 
ValueEventListener() {

        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists() && dataSnapshot.getChildrenCount()>2){
                if(dataSnapshot.hasChild("firstname")) {
                    String fullname = dataSnapshot.child("firstname").getValue().toString();
                    nameEditext.setText(fullname);
                }
                if(dataSnapshot.hasChild("lastname")) {
                    String lastname = dataSnapshot.child("lastname").getValue().toString();
                    ln.setText(lastname);
                }
                if(dataSnapshot.hasChild("middlename")) {
                    String middlename = dataSnapshot.child("middlename").getValue().toString();
                    mn.setText(middlename);
                }
                if(dataSnapshot.hasChild("address")) {
                    String ad = dataSnapshot.child("address").getValue().toString();
                    address.setText(ad);
                }
                if(dataSnapshot.hasChild("phone")) {
                    String phone = dataSnapshot.child("phone").getValue().toString();
                    phoneEditxt.setText(phone);
                }
                    if(dataSnapshot.hasChild("plate_no")) {
                        String plate = dataSnapshot.child("plate_no").getValue().toString();
                        plate_noEditext.setText(plate);
                }

                if(dataSnapshot.hasChild("image")){
                    String image =dataSnapshot.child("image").getValue().toString();
                    Picasso.get().load(image)
                            .placeholder(R.drawable.ic_person)
                            .error(R.drawable.ic_error)
                            .into(profileImage);
                }
            }
        }

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

        }
    });
}



private void uploadImage() {
    final ProgressDialog progressDialog=new ProgressDialog(this);
    progressDialog.setTitle("Setting Accounts Info");
    progressDialog.setMessage("Please wait...saving your account..");
    progressDialog.show();
    final StorageReference ref = storageProfilePicRef.child(mAuth.getCurrentUser().getUid()+ ".jpg");

    final UploadTask uploadTask = ref.putFile(imageUri);
    uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            progressDialog.dismiss();
            Toast.makeText(SettingsActivity.this, "Uploaded", Toast.LENGTH_SHORT).show();

            uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
                @Override
                public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
                    if (!task.isSuccessful()) {
                        throw task.getException();
                    }
                    return ref.getDownloadUrl();
                }
            }).addOnCompleteListener(new OnCompleteListener<Uri>() {
                @Override
                public void onComplete(@NonNull Task<Uri> task) {
                    if(task.isSuccessful()){
                        Uri downloadurl= (Uri) task.getResult();
                        myurl=downloadurl.toString();
                        HashMap<String,Object> userMap = new HashMap<>();
                        userMap.put("uid",mAuth.getCurrentUser().getUid());
                        userMap.put("firstname",nameEditext.getText().toString());
                        userMap.put("phone",phoneEditxt.getText().toString());
                        userMap.put("lastname",ln.getText().toString());
                        userMap.put("middlename",mn.getText().toString());
                        userMap.put("address",address.getText().toString());
                        userMap.put("image",myurl);
                        userMap.put("plate_no",plate_noEditext.getText().toString());
                        //new Async().execute();
                        
databaseReference.child(mAuth.getCurrentUser().getUid()).updateChildren(userMap);
                        progressDialog.dismiss();
                      //  finish();
                    }
                }
            });
        }
    }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onProgress(@NonNull UploadTask.TaskSnapshot snapshot) {
           double prencetage_=(snapshot.getBytesTransferred()*100.0)/ snapshot.getTotalByteCount();
            progressDialog.setMessage("Uploading "+String.format("%.2f", prencetage_) + "%");
        }
    })
            .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            progressDialog.dismiss();
            Toast.makeText(SettingsActivity.this, "Failed " + e.getMessage(), 
Toast.LENGTH_SHORT).show();
        }
    });
}

Manifest:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-feature
    android:name="android.hardware.camera"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.autofocus"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.flash"
    android:required="false" />
<queries>
    <intent>
        <action android:name="android.media.action.IMAGE_CAPTURE" />
    </intent>
</queries>
<application
    android:requestLegacyExternalStorage="true"
    android:allowBackup="true"
    android:hardwareAccelerated="false"
    android:usesCleartextTraffic="true"
    android:icon="@drawable/passenger"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:roundIcon="@drawable/passenger"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:fullBackupContent="@xml/backup_descriptor">

        <uses-library
        android:name="org.apache.http.legacy"
        android:required="false" />
</application>

Image view

Upload Image using URI

0 Answers
Related