我在我的Android代码中使用了一个开关。 如果互联网服务可用,那么只允许切换其他显示祝酒消息。我该如何实现这一目标? 我无法使用
这样做 switch.setOnCheckedChangeListener()
。
只有按两次开关按钮,检查才有效。
aSwitch.setEnabled(false);
仅在我点击一次
后才有效答案 0 :(得分:4)
首先创建一个带有标志的布尔值:
boolean checkInternetFlag = false;
然后创建一个检查互联网是否可用的方法,例如:
public final boolean isInternetOn() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
您还需要在清单中添加此权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
然后你可以在这样的条件下做你想做的事情:
checkInternetFlag = isInternetOn();
if (!checkInternetFlag) {
Toast.makeText(getActivity(), "Internet not available", Toast.LENGTH_LONG).show();
}
您也可以像这样禁用切换开关:
aSwitch.setEnabled(false);
要使开关无法点击,请使用:
aSwitch.setClickable(false);
答案 1 :(得分:0)
如果网络状态发生变化,以下方法将会捕获:
1)将此代码添加到onCreate():
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
NetworkChangeReceiver receiver = new NetworkChangeReceiver();
registerReceiver(receiver, filter);
2)添加OnDestroy()方法:
@Override
protected void onDestroy() {
Log.v(LOG_TAG, "onDestory");
super.onDestroy();
unregisterReceiver(receiver);
}
3)将以下代码添加到您的活动中:
public class NetworkChangeReceiver extends BroadcastReceiver
{
@Override
public void onReceive(final Context context, final Intent intent)
{
Log.v(LOG_TAG, "Receieved notification about network status");
isNetworkAvailable(context);
}
private boolean isNetworkAvailable(Context context)
{
ConnectivityManager connectivity = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null)
{
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
{
for (int i = 0; i < info.length; i++)
{
if (info[i].getState() == NetworkInfo.State.CONNECTED)
{
if(!isConnected)
{
Log.v(LOG_TAG, "Now you are connected to Internet!");
aSwitch.setEnabled(true);
isConnected = true;
}
return true;
}
}
}
}
Toast.makeText(YourActivity.this, "Internet is not available", Toast.LENGTH_SHORT).show();
aSwitch.setEnabled(false);
isConnected = false;
return false;
}
}
4)在您的清单文件中添加此权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
希望这与您的要求有关。