android连接检查
我目前正在做一个android应用程序来检查网络可用性(wifi和3G)。 我有一个在活动中完美工作的代码。但我需要它在广播接收器里。当网络可用时,我想做一些操作。 我得到了许可 请帮帮我 代码如下所示android连接检查,android,Android,我目前正在做一个android应用程序来检查网络可用性(wifi和3G)。 我有一个在活动中完美工作的代码。但我需要它在广播接收器里。当网络可用时,我想做一些操作。 我得到了许可 请帮帮我 代码如下所示 ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); if ( cm.equals(ConnectivityManager.EXTRA
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
if ( cm.equals(ConnectivityManager.EXTRA_NO_CONNECTIVITY))
{
Log.v("CONNECT", "CONNECTED");
}
else
{
Log.v("CONNECT", "NOT CONNECTED");
}
`如果您声明了BroadcastReceiver类:
public class NetConnectionBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
final ConnectivityManager cm = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo == null)
Log.v("CONNECT", "NOT CONNECTED");
int netType = networkInfo.getType();
if (netType == ConnectivityManager.TYPE_WIFI)
{
Log.v("CONNECT", "CONNECTED TO WIFI");
}
else if (netType == ConnectivityManager.TYPE_MOBILE)
{
Log.v("CONNECT", "CONNECTED TO MOBILE" +
(networkInfo.isRoaming() ? " ROAMING!" : ""));
}
}
}
您可以在Inde your activity中存储它的一个实例,并且在onCreate
方法中,您可以注册android.net.conn.CONNECTIVITY\u CHANGE
事件:
private final NetConnectionBroadcastReceiver receiver =
new NetConnectionBroadcastReceiver();
public void onCreate(Bundle savedInstanceState)
{
// ... your onCreate implementation goes here
final IntentFilter intentFilter =
new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
this.registerReceiver(this.receiver, intentFilter);
}
当数据连接发生变化时,将调用接收器的onReceive
方法。你可以从内部检查发生了什么样的变化
对于此检查,您只需要android.permission.ACCESS\u NETWORK\u STATE权限。如果您已声明BroadcastReceiver类:
public class NetConnectionBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
final ConnectivityManager cm = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo == null)
Log.v("CONNECT", "NOT CONNECTED");
int netType = networkInfo.getType();
if (netType == ConnectivityManager.TYPE_WIFI)
{
Log.v("CONNECT", "CONNECTED TO WIFI");
}
else if (netType == ConnectivityManager.TYPE_MOBILE)
{
Log.v("CONNECT", "CONNECTED TO MOBILE" +
(networkInfo.isRoaming() ? " ROAMING!" : ""));
}
}
}
您可以在Inde your activity中存储它的一个实例,并且在onCreate
方法中,您可以注册android.net.conn.CONNECTIVITY\u CHANGE
事件:
private final NetConnectionBroadcastReceiver receiver =
new NetConnectionBroadcastReceiver();
public void onCreate(Bundle savedInstanceState)
{
// ... your onCreate implementation goes here
final IntentFilter intentFilter =
new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
this.registerReceiver(this.receiver, intentFilter);
}
当数据连接发生变化时,将调用接收器的onReceive
方法。你可以从内部检查发生了什么样的变化
对于此检查,您只需要
android.permission.ACCESS\u NETWORK\u STATE
权限。您应该制作一个BroadcastReceiver
,当连接状态更改时将触发它
public class BroadCastSampleActivity extends Activity {
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.registerReceiver(this.mConnReceiver,
new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);
NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);
if(currentNetworkInfo.isConnected()){
Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(), "Not Connected", Toast.LENGTH_LONG).show();
}
}
};
}
然后在您的AndroidManifest中,您可以检查是否具有连接:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
有关更多源代码的信息,您应该制作一个
广播接收器
,该接收器将在连接状态更改时触发
public class BroadCastSampleActivity extends Activity {
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.registerReceiver(this.mConnReceiver,
new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);
NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);
if(currentNetworkInfo.isConnected()){
Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(), "Not Connected", Toast.LENGTH_LONG).show();
}
}
};
}
然后在您的AndroidManifest中,您可以检查是否具有连接:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
获取更多源代码