[英]Android: How to check if device is connected to another device via WiFi - Direct?
[英]How to check that wifi is NOT connected on android
我已經在應用程序中編寫了一些代碼來檢查手機是否具有wifi連接,我可以做到這一點並且可以正常工作,但我真正想要檢查的是手機未連接至wifi卻似乎沒有連接時工作。 我認為我在某處一定有語法錯誤。 請參見下面的代碼:
ConnectivityManager connManager = (ConnectivityManager)
getSystemService(CONNECTIVITY_SERVICE);
myWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!myWifi.isConnected()){
//do something
}
嘗試這個
/ *網絡檢查* /
public static boolean haveNetworkConnection(Context context) {
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo) {
if (ni.getTypeName().equalsIgnoreCase("WIFI"))
if (ni.isConnected())
haveConnectedWifi = true;
if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
if (ni.isConnected())
haveConnectedMobile = true;
}
return haveConnectedWifi || haveConnectedMobile;
}
if (haveNetworkConnection(youractivityname.this)) {
//do your work here ..
}
您應該使用BroadcastReciever來獲取活動中wifi連接的更新。 下面是示例代碼
public class MainActivity extends Activity {
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
ConnectivityManager connectionManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifi = connectionManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
Toast.makeText(MainActivity.this, "Is Wifi connected : "+wifi.isConnected(), Toast.LENGTH_SHORT).show();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initViews();
MainActivity.this.registerReceiver(receiver, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));
}
}
還要在AndroidManifest.xml文件中寫入<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
權限
在清單中具有ACCESS_NETWORK_STATE
權限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
使用getActiveNetworkInfo()
方法,請使用以下方法:
private boolean notConnectedToWifi(){
final ConnectivityManager conMgr = (ConnectivityManager).getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnected() && activeNetwork.getType() != ConnectivityManager.TYPE_WIFI)
return true;
else
return false;
}
接下來要做的就是在您的條件下調用該方法。 例
if(notConnectedToWifi){
// Oops! You're not connected to wifi!
}
請注意,我會檢查activeNetwork
是否通過activeNetwork.isConnected()
連接,因此如果設備已連接到移動網絡,則方法notConnectedToWifi()
將返回false。 如果未連接到任何網絡,它將也返回false。
借助ConnectivityManager ,您將基於跟蹤獲取是否連接WIFI的網絡信息。
檢查以下代碼(通過Activity上下文):
public boolean IsInternetConnected(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo nInfo = connectivity.getActiveNetworkInfo();
if (nInfo != null) {
//do your thing
if (nInfo.getType() == ConnectivityManager.TYPE_WIFI) {
// connected to wifi
return true;
}
}
return false;
}
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.