[英]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.