設定權限
當 app 實現與網際網路互動交換資料的應用,應該在此程序之前,檢視使用者
當時行動裝置的網路狀態,才能對於後續相關的存取資料程序有所掌握。
首先,必須設定使用權限 ACCESS_NETWORK_STATE
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
private ConnectivityManager cmgr;
// ...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cmgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
}
就可以透過該物件來獲得網路連線狀態了.
private boolean isConnectNetwork(){
NetworkInfo info = cmgr.getActiveNetworkInfo();
boolean isConnected = info != null && info.isConnectedOrConnecting();
return isConnected;
}
private boolean isConnectWifi(){
NetworkInfo info = cmgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return info.isConnected();
}
private class MyNetworkReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.v("brad", "isConnected = " + isConnectNetwork());
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cmgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
myNetworkReceiver = new MyNetworkReceiver();
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(myNetworkReceiver, filter);
}
@Override
public void finish() {
unregisterReceiver(myNetworkReceiver);
super.finish();
}