簡體   English   中英

Android studio-當互聯網不可用時禁用下載按鈕/活動

[英]Android studio- disable donwload button/Activity when internet not availabe

我在我的應用程序中配置了一個下載按鈕。 當我在互聯網不可用時單擊下載按鈕時,該按鈕被單擊。 當互聯網可用時,此下載活動開始,並且在互聯網離線時我單擊的次數沒有下載文件。

當互聯網不可用時,我有什么方法可以通過下載活動禁用,方法是通過發送消息檢查您的互聯網連接'。

主要活動


public class Download_Activity extends AppCompatActivity {

    FirebaseFirestore downdb;
    RecyclerView downRecyclerView;
    ArrayList<Downloadsmodel> downloadsmodelArrayList=new ArrayList<>();
    DownloadsAdapter downloadsAdapter;


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

        setUpRV();
        setUpFB();
        dataFromFirebase();
    }

    private void dataFromFirebase() {
        downdb.collection("Downloads").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                for(DocumentSnapshot documentSnapshot: task.getResult()){

                    Downloadsmodel downloadsmodel= new Downloadsmodel(documentSnapshot.getString("name")
                            ,documentSnapshot.getString("link"),documentSnapshot.getString("fileextension"),documentSnapshot.getString("uploaddate"),documentSnapshot.getString("icon"));
                    downloadsmodelArrayList.add(downloadsmodel);
                }
                downloadsAdapter= new DownloadsAdapter(Download_Activity.this,downloadsmodelArrayList);
                downRecyclerView.setAdapter(downloadsAdapter);
            }
        })

                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(Download_Activity.this,"Error",  Toast.LENGTH_SHORT).show();
                    }
                });

    }

    private void setUpFB() {
        downdb=FirebaseFirestore.getInstance();
    }

    private void setUpRV() {
        downRecyclerView=findViewById(R.id.drecyclerdownloads);
        downRecyclerView.setHasFixedSize(true);
        downRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    }


}

下載適配器


public class DownloadsAdapter extends RecyclerView.Adapter<Downloadsviewholder> {

    Download_Activity download_activity;
    ArrayList<Downloadsmodel> downloadsmodels;

    public DownloadsAdapter(Download_Activity download_activity, ArrayList<Downloadsmodel> downloadsmodels) {
        this.download_activity = download_activity;
        this.downloadsmodels = downloadsmodels;
    }



    @NonNull
    @Override
    public Downloadsviewholder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
        LayoutInflater layoutInflater = LayoutInflater.from(download_activity.getBaseContext());
        View view = layoutInflater.inflate(R.layout.downloads_elements,null,false);
        return new Downloadsviewholder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final Downloadsviewholder downloadsviewholder, final int i) {
        downloadsviewholder.dName.setText(downloadsmodels.get(i).getName());
        downloadsviewholder.dUploaddate.setText(downloadsmodels.get(i).getUploaddate());
        downloadsviewholder.dExtension.setText(downloadsmodels.get(i).getFileextension());
        Picasso.get().load(downloadsmodels.get(i).getIcon()).into(downloadsviewholder.dIcon);
        downloadsviewholder.dButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dowloadFile(downloadsviewholder.dName.getContext(),downloadsmodels.get(i).getName(),downloadsmodels.get(i).getFileextension()
                        ,DIRECTORY_DOWNLOADS,downloadsmodels.get(i).getLink());

            }
        });

    }

    public void dowloadFile (Context context,String filename, String fileextension, String destinationdirectory, String url){

        DownloadManager downloadManager=(DownloadManager) context.getSystemService(context.DOWNLOAD_SERVICE);
        Uri uri=Uri.parse(url);
        DownloadManager.Request request=new DownloadManager.Request(uri);
        request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
        request.setDestinationInExternalFilesDir(context, destinationdirectory, filename+fileextension);
        downloadManager.enqueue(request);

    }


    @Override
    public int getItemCount() {
        return downloadsmodels.size();
    }
}

使用此 function 檢查互聯網連接

   protected boolean isInternetConnected() {
        ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting()) {
            return true;
        } else {
            return false;
        }
    }

在您的BindViewHolder內部使用如下:

   downloadsviewholder.dButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                     if(isInternetConnected()){

               dowloadFile(downloadsviewholder.dName.getContext(),downloadsmodels.get(i).getName(),downloadsmodels.get(i).getFileextension()
                        ,DIRECTORY_DOWNLOADS,downloadsmodels.get(i).getLink());
               } else {

                    //Change your button color so it looks like disable if you want 
                }

            }
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM