When I upload data and image into firebase then it show network unavailable, sleeping

0

i want to make a quiz admin app.may java code below

package com.example.quizzeradmin;

import android.app.Dialog;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.google.android.gms.tasks.Continuation;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import de.hdodenhof.circleimageview.CircleImageView;

public class CatagorisActivity extends AppCompatActivity {

    FirebaseDatabase database= FirebaseDatabase.getInstance();
    DatabaseReference myRef = database.getReference();

    private RecyclerView recyclerView;
    private List<category_model> list;
    private Dialog loadingDialog,categoryDialog;
    /*
    For access inside category dialog views
     */
    private CircleImageView addImage;
    private EditText categoryName;
    private Button addBtn;

    private  Uri image;
    private String downloadURL;
    private category_adapter adapter;

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

        /*
        initial the loadingDialog
         */
        loadingDialog = new Dialog(this);
        loadingDialog.setContentView(R.layout.loading);
        loadingDialog.getWindow().setBackgroundDrawable(getDrawable(R.drawable.roundded_cornors));
        loadingDialog.getWindow().setLayout(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
        loadingDialog.setCancelable(false);

        setCategoryDialog();
        /*
        For RecyclerView we need to a sample class and adapter and item list
         */

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setTitle("Categories");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        recyclerView = findViewById(R.id.recyClerViewId);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        layoutManager.setOrientation(RecyclerView.VERTICAL);
        recyclerView.setLayoutManager(layoutManager);

        list = new ArrayList<>();

        adapter = new category_adapter(list);
        recyclerView.setAdapter(adapter);

        loadingDialog.show();
        myRef.child("categories").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for(DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){
                    list.add(dataSnapshot1.getValue(category_model.class));
                }
                adapter.notifyDataSetChanged();
                loadingDialog.dismiss();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Toast.makeText(CatagorisActivity.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();
                loadingDialog.dismiss();
                finish();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.menu,menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {

        if(item.getItemId() == R.id.add){
            //show the dialog
            categoryDialog.show();
        }
        return super.onOptionsItemSelected(item);
    }

    private void setCategoryDialog(){
        categoryDialog = new Dialog(this);
        categoryDialog.setContentView(R.layout.add_category_dialog);
        categoryDialog.getWindow().setBackgroundDrawable(getDrawable(R.drawable.roundded_box));
        categoryDialog.getWindow().setLayout(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
        categoryDialog.setCancelable(true);

        addImage = categoryDialog.findViewById(R.id.image);
        categoryName = categoryDialog.findViewById(R.id.categoryname);
        addBtn = categoryDialog.findViewById(R.id.add);

        addImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent galleryIntent = new Intent(Intent.ACTION_PICK,
                        MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(galleryIntent,101);
            }
        });

        addBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(categoryName.getText().toString().isEmpty()){
                    categoryName.setError("Category Name Required !");
                    return;
                }
                if(image == null){
                    Toast.makeText(CatagorisActivity.this, "please select a image", Toast.LENGTH_SHORT).show();
                    return;
                }
                categoryDialog.dismiss();
                //upload data
                uploadData();
            }
        });

    }

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

        if(requestCode == 101){
            if(resultCode == RESULT_OK){
                 image = data.getData();
                addImage.setImageURI(image);
            }
        }

    }
    private void uploadData(){
        loadingDialog.show();

        StorageReference storageReference = FirebaseStorage.getInstance().getReference();
        //getLastPathSegment() this method return image name
        final StorageReference imageReference = storageReference.child("categories").child(image.getLastPathSegment());

        UploadTask uploadTask= imageReference.putFile(image);

        Task<Uri> urlTask = 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();
                }

                // Continue with the task to get the download URL
               return   imageReference.getDownloadUrl().addOnCompleteListener(new OnCompleteListener<Uri>() {
                    @Override
                    public void onComplete(@NonNull Task<Uri> task) {
                       if(task.isSuccessful()){
                           downloadURL = task.getResult().toString();
                           uploadCategoryName();
                       }else {
                           loadingDialog.dismiss();
                           Toast.makeText(CatagorisActivity.this, "Correction needed", Toast.LENGTH_SHORT).show();
                       }
                    }
                });
            }
        }).addOnCompleteListener(new OnCompleteListener<Uri>() {
            @Override
            public void onComplete(@NonNull Task<Uri> task) {
                if (task.isSuccessful()) {
                    Uri downloadUri = task.getResult();
                } else {
                    // Handle failures
                    Toast.makeText(CatagorisActivity.this, "Correction needed", Toast.LENGTH_SHORT).show();
                    loadingDialog.dismiss();
                }
            }
        });
    }

    private void uploadCategoryName(){
        //upload data into realtime database
        Map<String,Object> map = new HashMap<>();
        map.put("name",categoryName.getText().toString());
        map.put("sets",0);
        map.put("url",downloadURL);

        FirebaseDatabase database = FirebaseDatabase.getInstance();
        database.getReference().child("categories").child("category"+(list.size()+1)).setValue(map)
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if(task.isSuccessful()){
                            list.add(new category_model(categoryName.getText().toString(),0,downloadURL));
                            adapter.notifyDataSetChanged();
                        }else {
                            Toast.makeText(CatagorisActivity.this, "Dear Developer - Correction needed", Toast.LENGTH_SHORT).show();
                        }
                        loadingDialog.dismiss();
                    }
                });
    }
}

> W/ExponenentialBackoff: network unavailable, sleeping. > I/System.out: (HTTPLog)-Static: isSBSettingEnabled false > I/System.out: (HTTPLog)-Static: isSBSettingEnabled false > D/NetworkManagementSocketTagger: tagSocket(86) with statsTag=0xffffffff, statsUid=-1 > W/NetworkRequest: error sending network request POST https://firebasestorage.googleapis.com/v0/b/hello-world-b2bb3.appspot.com/o > javax.net.ssl.SSLHandshakeException: Connection closed by peer > at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) > at com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:383) > at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:231) > at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:1480) > at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:1424) > at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:1368) > at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:219) > at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:142) > at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:104) > at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:392) > at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:325) > at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:488) > at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:434) > at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:565) > at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105) > at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:26) > at com.google.firebase.storage.network.NetworkRequest.parseResponse(com.google.firebase:firebase-storage@@19.1.1:405) > at com.google.firebase.storage.network.NetworkRequest.performRequestStart(com.google.firebase:firebase-storage@@19.1.1:250) > at com.google.firebase.storage.network.NetworkRequest.performRequest(com.google.firebase:firebase-storage@@19.1.1:270) > at com.google.firebase.storage.network.NetworkRequest.performRequest(com.google.firebase:firebase-storage@@19.1.1:286) > at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(com.google.firebase:firebase-storage@@19.1.1:103) > at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(com.google.firebase:firebase-storage@@19.1.1:62) > at com.google.firebase.storage.UploadTask.sendWithRetry(com.google.firebase:firebase-storage@@19.1.1:467) > at com.google.firebase.storage.UploadTask.beginResumableUpload(com.google.firebase:firebase-storage@@19.1.1:268) > at com.google.firebase.storage.UploadTask.run(com.google.firebase:firebase-storage@@19.1.1:216) > at com.google.firebase.storage.StorageTask.lambda$getRunnable$7(com.google.firebase:firebase-storage@@19.1.1:1072) > at com.google.firebase.storage.StorageTask$$Lambda$12.run(Unknown > Source:2) > 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:764) > W/ExponenentialBackoff: network unavailable, sleeping. > I/System.out: (HTTPLog)-Static: isSBSettingEnabled false > (HTTPLog)-Static: isSBSettingEnabled false > D/NetworkManagementSocketTagger: tagSocket(98) with statsTag=0xffffffff, statsUid=-1 > D/InputMethodManager: prepareNavigationBarInfo() DecorView@4bf415c[CatagorisActivity] > D/InputMethodManager: getNavigationBarColor() -855310 > V/InputMethodManager: Starting input: tba=com.example.quizzeradmin ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , > NavVisible : true , NavTrans : false > D/InputMethodManager: startInputInner - Id : 0 > I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus > D/InputTransport: Input channel constructed: fd=107 > D/InputTransport: Input channel destroyed: fd=89 > D/ViewRootImpl@679e6d3[CatagorisActivity]: stopped(true) old=false > D/ViewRootImpl@683289f[CatagorisActivity]: stopped(true) old=false > W/libEGL: EGLNativeWindowType 0x7c18311010 disconnect failed > D/OpenGLRenderer: eglDestroySurface = 0x7c183aba00, 0x7c18311000 > D/ViewRootImpl@679e6d3[CatagorisActivity]: Relayout returned: old=[238,715][482,813] new=[238,715][482,813] result=0x5 > surface={false 0} changed=false > D/ViewRootImpl@679e6d3[CatagorisActivity]: MSG_WINDOW_FOCUS_CHANGED 0 1 > D/InputMethodManager: prepareNavigationBarInfo() DecorView@4bf415c[CatagorisActivity] > D/InputMethodManager: getNavigationBarColor() -855310 > W/libEGL: EGLNativeWindowType 0x7c1854d010 disconnect failed > D/OpenGLRenderer: eglDestroySurface = 0x7c18323c80, 0x7c1854d000

java
android
firebase
firebase-realtime-database
firebase-storage
asked on Stack Overflow May 14, 2020 by tolemy hagger

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0