안드로이드에서. 모바일 데이터가 켜져 있는지 꺼져 있는지 확인
Aug 19 2020
내 앱은 사용자의 휴대폰이 모바일 데이터를 켰는 지 확인하는 기능이 필요합니다.
이 링크를 참조했습니다 : # 32239785
해당 주제에 제공된 코드는 다음과 같습니다.
boolean mobileYN = false;
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (tm.getSimState() == TelephonyManager.SIM_STATE_READY) {
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1)
{
mobileYN = Settings.Global.getInt(context.getContentResolver(), "mobile_data", 1) == 1;
}
else{
mobileYN = Settings.Secure.getInt(context.getContentResolver(), "mobile_data", 1) == 1;
}
}
이 코드는 대부분의 휴대폰에서 작동합니다.
'Nokia 8'(Android 9) 제외
심지어 모바일 데이터를 껐습니다. 이 함수는 여전히 true를 반환합니다.
왜?
답변
marmor Aug 20 2020 at 11:36
모바일 데이터에 대한 설정이 활성화 또는 비활성화되어 있는지 확인해야합니까, 아니면 장치가 현재 모바일 데이터에 연결되어 있는지 확인하는 것이 실제로 시도하고 있습니까?
후자의 경우 문서의CONNECTIVITY_SERVICE
예제와 같은 을 사용해야합니다 .
private static final String DEBUG_TAG = "NetworkStatusExample";
...
ConnectivityManager connMgr =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
boolean isWifiConn = false;
boolean isMobileConn = false;
for (Network network : connMgr.getAllNetworks()) {
NetworkInfo networkInfo = connMgr.getNetworkInfo(network);
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
isWifiConn |= networkInfo.isConnected();
}
if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
isMobileConn |= networkInfo.isConnected();
}
}
Log.d(DEBUG_TAG, "Wifi connected: " + isWifiConn);
Log.d(DEBUG_TAG, "Mobile connected: " + isMobileConn);
위의 문서 링크는 또한 당신처럼 체크 아웃 할 수있는 다른 관련 클래스에 몇 가지 링크가 NetworkInfo.DetailedState와ConnectivityManager.NetworkCallback
DiwakarSingh Aug 20 2020 at 11:40
도움이된다면 이것을 확인하십시오.
class InternetNetwork {
companion object {
fun isOnline(context: Context): Boolean {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val connectivityManager =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val capabilities =
connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)
if (capabilities != null)
when {
capabilities.hasTransport(TRANSPORT_CELLULAR) -> {
Log.i("Internet", "NetworkCapabilities.TRANSPORT_CELLULAR")
return true
}
capabilities.hasTransport(TRANSPORT_WIFI) -> {
Log.i("Internet", "NetworkCapabilities.TRANSPORT_WIFI")
return true
}
capabilities.hasTransport(TRANSPORT_ETHERNET) -> {
Log.i("Internet", "NetworkCapabilities.TRANSPORT_ETHERNET")
return true
}
}
} else {
val connectivityManage =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val netInfo = connectivityManage.activeNetworkInfo
return netInfo != null && netInfo.isConnected
}
return false
}
}
}