Android'de. Mobil verinin açık mı kapalı mı olduğunu kontrol edin
Uygulamamın, kullanıcının cep telefonunun mobil veriyi açıp açmadığını kontrol etmek için bir işleve ihtiyacı var.
Bu bağlantıya başvurdum : # 32239785
İşte o konuda verilen kod
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;
}
}
Bu kod cep telefonumun çoğunda çalışıyor.
"Nokia 8" (Android 9) hariç
Ben bile mobil veriyi kapattım. Bu işlev yine de true döndürür.
Neden?
Yanıtlar
Mobil veri ayarının etkin mi yoksa devre dışı mı olduğunu gerçekten kontrol etmeniz gerekiyor mu yoksa gerçekten yapmaya çalıştığınız şey cihazın şu anda mobil veri bağlantısına sahip olup olmadığını kontrol etmek mi?
İkinci durumsaCONNECTIVITY_SERVICE
, dokümanlardaki örneği kullanmanız gerekir :
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);
Yukarıdaki dokümanlar bağlantısında, kontrol etmek isteyebileceğiniz diğer ilgili sınıflara bazı bağlantılar da vardır NetworkInfo.DetailedStateveConnectivityManager.NetworkCallback
Yardımcı olacaksa şuna bir bak:
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
}
}
}