Android에서 인터넷 연결을 어떻게 확인합니까?
이 질문에 이미 답변이 있습니다.
각 활동에서 인터넷 연결을 확인하고 싶습니다. 분실 된 경우 메시지가 표시되어야합니다.
아무도 이것을 달성하는 방법을 안내 할 수 있습니까?
ConnectivityManager 를 사용하여 네트워크 상태를 확인할 수 있습니다 .
ConnectivityManager conMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if ( conMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED
|| conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED ) {
// notify user you are online
}
else if ( conMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.DISCONNECTED
|| conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.DISCONNECTED) {
// notify user you are not online
}
상수 ConnectivityManager.TYPE_MOBILE 및 ConnectivityManager.TYPE_WIFI는 연결 유형을 나타내며이 두 값은 완전하지 않습니다. 전체 목록 은 여기 를 참조 하십시오 .
또한 네트워크 상태를 모니터링하는 데 필요한 권한이 있는지 확인하십시오. 이 권한을 AndroidManifest.xml에 추가해야합니다.
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
한 지점에서 하나의 연결 만 활성화 될 수 있습니다. 따라서 더 간단한 대답은 다음과 같습니다.
final ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnected()) {
// notify user you are online
} else {
// notify user you are not online
}
또한 ConnectivityManager # TYPE_WIMAX와 같은 새로운 유형의 네트워크를 수용합니다.
또한 네트워크 상태를 모니터링하는 데 필요한 권한이 있는지 확인하십시오. 이 권한을 AndroidManifest.xml에 추가해야합니다.
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
다양한 유형의 네트워크 상태에 대해이를 수행 할 수 있습니다.
public void checkNetworkStatus(){
final ConnectivityManager connMgr = (ConnectivityManager)
this.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi =
connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo mobile =
connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if( wifi.isAvailable() ){
Toast.makeText(this, "Wifi" , Toast.LENGTH_LONG).show();
}
else if( mobile.isAvailable() ){
Toast.makeText(this, "Mobile 3G " , Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(this, "No Network " , Toast.LENGTH_LONG).show();
}
}
모바일 및 Wi-Fi의 네트워크 범위 및 데이터 가용성을 직접 확인할 수 있습니다.
네트워크 범위 가용성을 위해
private boolean isNetworkAvailable()
{
ConnectivityManager conxMgr = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mobileNwInfo = conxMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNwInfo = conxMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return ((mobileNwInfo== null ? false : mobileNwInfo.isAvailable()) || (wifiNwInfo == null ? false : wifiNwInfo.isAvailable()));
}
에 대한 데이터 가용성 경우 사용 가능한 네트워크
private boolean isDataAvailable()
{
ConnectivityManager conxMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mobileNwInfo = conxMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNwInfo = conxMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
return ((mobileNwInfo== null? false : mobileNwInfo.isConnected() )|| (wifiNwInfo == null? false : wifiNwInfo.isConnected()));
}
보정
if ( conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED
|| conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING ) {
//notify user you are online
}
해야한다
if ( conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED
|| conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED ) {
//notify user you are online
}
Register a broadcast receiver to handle CONNECTIVITY_ACTION. See this full example. You should update a static variable 'connectionAvailable' that will be accessible everywhere and everytime through its respective getter.
Remember to declare the broadcast receiver in the manifest file:
<receiver android:name=".NetworkConnectivityReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
On the matter of 'checking in each activity', may be you would be interested in using a BaseActivity extended by your activities and managing the test of connectivity and displaying the message.
Also, note that using events (not polling from activities) will be more efficient.
You are not using ConnectivityManager.getNetworkInfo(0).getState()
and ConnectivityManager.getNetworkInfo(1).getState()
properly, instead of hardcoding the values (1) and (0) use ConnectivityManager.TYPE_WIFI
and ConnectivityManager.TYPE_MOBILE
This is a boolean check to see if you have network access. It doesn't determine what kind of network access - mobile, wifi..., it just checks to see if you're online.
boolean mobileNwInfo = false;
ConnectivityManager conxMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
try { mobileNwInfo = conxMgr.getActiveNetworkInfo().isConnected(); }
catch (NullPointerException e) { mobileNwInfo = false; }
if ( mobileNwInfo == false ) {
// Your code goes here...
}
참고URL : https://stackoverflow.com/questions/2326767/how-do-you-check-the-internet-connection-in-android
'IT박스' 카테고리의 다른 글
EditText에서 텍스트가 변경된 후 0.5 초 후에 어떻게해야합니까? (0) | 2020.12.06 |
---|---|
동일한 ID를 가진 객체는 ==와 비교할 때 항상 동일합니까? (0) | 2020.12.06 |
.gitignore는 디렉토리를 무시하지 않습니다. (0) | 2020.12.06 |
WordPress : 사용자 지정 게시물 유형에서 "새로 추가"비활성화 (0) | 2020.12.06 |
IE에서 링크 주변의 테두리를 제거하는 방법은 무엇입니까? (0) | 2020.12.06 |