[英]App stops when implementing ConnectivityManager and NetworkInfo
對於我的應用程序,我試圖檢測用戶何時連接到互聯網。 這是我一直在使用的方法之一,盡管我使用了其他基本相同的方法,但是使用了所使用對象的其他方法:
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected())
{
return true;
}
return false;
}
即使這不會導致任何編譯錯誤,在啟動應用程序時,它也會突然停止並且不響應。 我想知道為什么會發生這種情況,以及如何解決,或者如果沒有解決方案,是否還有另一種方法可以做我想要的事情。
我嘗試過策略性地刪除部分代碼,並且我注意到導致問題的部分是使用兩種方式使用的netInfo
,但是我不知道為什么。
在AndroidManifest文件中添加訪問網絡權限 :
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
首先像這樣在AndroidManifest.xml
文件中添加users-permission
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
其次,這段代碼可以給你一個boolean
。 網絡連接是否可用。 所以把它放在一個方法中,然后像這樣返回這些代碼。
public boolean getCheckedNetStatus(Context context) {
try{
ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
return true;
} else {
return false;
}
}catch(Exception e){
Log.e("Net Check Err", e.toString());
return false;
}
}
試用try可以保護您的應用程序免於意外崩潰。
現在調用它有條件地執行您的某些操作,例如
if(getCheckedNetStatus(yourActivity.this)){
//Net is available
//So do your action
}else{
//Net not available
//you can notify user that net not available
//So you (User) can't do this
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.