Android studio- 在互联网不可用时禁用下载 button/Activity
Android studio- disable donwload button/Activity when internet not availabe
我在我的应用程序中配置了一个下载按钮。当我在互联网不可用时单击下载按钮时,该按钮被单击。当 Internet 可用时,此下载 activity 开始,并且我在 Internet 离线时单击的次数没有下载文件。
有什么方法可以在互联网不可用时通过下载 activity 来禁用,方法是给消息检查您的互联网连接'。
主要活动
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();
}
}
使用此功能检查互联网连接
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
}
}
});
我在我的应用程序中配置了一个下载按钮。当我在互联网不可用时单击下载按钮时,该按钮被单击。当 Internet 可用时,此下载 activity 开始,并且我在 Internet 离线时单击的次数没有下载文件。
有什么方法可以在互联网不可用时通过下载 activity 来禁用,方法是给消息检查您的互联网连接'。
主要活动
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();
}
}
使用此功能检查互联网连接
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
}
}
});