Java Android studio-在互联网不可用时禁用下载按钮/活动
我在我的应用程序中配置了下载按钮。当我在internet不可用时单击“下载”按钮时,该按钮被单击。当internet可用时,此下载活动开始,并且文件在internet脱机时我单击的次数都不会被下载 当互联网不可用时,我是否可以通过发送消息“检查您的互联网连接”来禁用下载活动 主要活动Java Android studio-在互联网不可用时禁用下载按钮/活动,java,android,button,google-cloud-firestore,disable,Java,Android,Button,Google Cloud Firestore,Disable,我在我的应用程序中配置了下载按钮。当我在internet不可用时单击“下载”按钮时,该按钮被单击。当internet可用时,此下载活动开始,并且文件在internet脱机时我单击的次数都不会被下载 当互联网不可用时,我是否可以通过发送消息“检查您的互联网连接”来禁用下载活动 主要活动 public class Download_Activity extends AppCompatActivity { FirebaseFirestore downdb; RecyclerView
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));
}
}
公共类下载\u活动扩展了AppCompatActivity{
FireBaseFireStoreDownDB;
RecyclerView downRecyclerView;
ArrayList downloadsmodelArrayList=新建ArrayList();
下载Sadapter下载Sadapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u下载);
setUpRV();
setUpFB();
dataFromFirebase();
}
私有void dataFromFirebase(){
downdb.collection(“Downloads”).get().addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
对于(DocumentSnapshot DocumentSnapshot:task.getResult()){
Downloadsmodel Downloadsmodel=newdownloadsmodel(documentSnapshot.getString(“name”)
,documentSnapshot.getString(“链接”)、documentSnapshot.getString(“文件扩展”)、documentSnapshot.getString(“上传日期”)、documentSnapshot.getString(“图标”);
downloadsmodelArrayList.add(downloadsmodel);
}
downloadsAdapter=新的downloadsAdapter(下载活动。此为downloadsmodelArrayList);
setAdapter(downloadsAdapter);
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(下载活动。此“错误”,Toast.LENGTH\u SHORT.show();
}
});
}
私有void setUpFB(){
downdb=FirebaseFirestore.getInstance();
}
私有void setUpRV(){
downRecyclerView=findViewById(R.id.DrecyclerDownload);
downRecyclerView.setHasFixedSize(true);
downRecyclerView.setLayoutManager(新的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();
}
}
公共类下载适配器扩展了RecyclerView.Adapter{
下载活动下载活动;
ArrayList下载模型;
公共下载适配器(下载活动下载活动,ArrayList downloadsmodels){
this.download\u activity=下载\u activity;
this.downloadsmodels=downloadsmodels;
}
@非空
@凌驾
公开下载ViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int i){
LayoutInflater LayoutInflater=LayoutInflater.from(下载_activity.getBaseContext());
View=LayoutFlater.inflate(R.layout.downloads\u元素,null,false);
返回新下载的viewholder(视图);
}
@凌驾
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);
下载viewholder.dButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
dowloadFile(downloadsviewholder.dName.getContext(),downloadsmodels.get(i).getName(),downloadsmodels.get(i).getFileextension()
,目录_下载,下载models.get(i.getLink());
}
});
}
public void dowloadFile(上下文上下文、字符串文件名、字符串文件扩展名、字符串目标目录、字符串url){
下载管理器下载管理器=(下载管理器)context.getSystemService(context.DOWNLOAD\u服务);
Uri=Uri.parse(url);
DownloadManager.Request=新的DownloadManager.Request(uri);
request.setNotificationVisibility(DownloadManager.request.VISIBILITY\u VISIBLE\u NOTIFY\u完成);
setdestinationnexternalfilesdir(上下文、destinationdirectory、文件名+文件扩展名);
downloadManager.enqueue(请求);
}
@凌驾
public int getItemCount(){
返回下载的模型.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
}
}
});