2015-10-07 7 views
8

Zrobiłem aplikację monitorującą sieć. Tutaj z powodzeniem wdrożyłem wszystkie rzeczy. Mam telefon z dual sim Android. Wiem, jak uzyskać nazwę operatora. Ale chcę to, który sim jest podłączony do Internetu? Użyłem tego kodu, aby pokazać użytkownikowi, że urządzenie jest połączone za pomocą danych mobilnych. Chcę być bardziej konkretny, że urządzenie korzysta obecnie z internetu operatora.Jak uzyskać nazwę operatora, który jest podłączony do Internetu w telefonie dual sim Android?

public static String isInternetConnected (Context ctx) { 
     ConnectivityManager connectivityMgr = (ConnectivityManager) ctx 
       .getSystemService(CONNECTIVITY_SERVICE); 
     NetworkInfo wifi = connectivityMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
     NetworkInfo mobile = connectivityMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
     // Check if wifi or mobile network is available or not. If any of them is 
     // available or connected then it will return true, otherwise false; 
     if (wifi != null) { 
      if (wifi.isConnected()) { 
       return "wifi"; 
      } 
     } 
     if (mobile != null) { 
      if (mobile.isConnected()) { 
       return "mobile"; 
      } 
     } 
     return "none"; 
    } 
+0

wziąłeś rozwiązanie? –

Odpowiedz

0

Nie ma API o wielu Simów przed API 22. Można skontaktować się z producentem urządzenia i sprawdzić, czy mają one SDK dodatek na dostęp do wielu Simów, czy nie.

Od API 22 można sprawdzić wiele kart SIM za pomocą metody SubscriptionManager getActiveSubscriptionInfoList(). Więcej szczegółów na temat Dokumentów systemu Android.

Proszę spojrzeć na multiple sims. Oto kilka dyskusji na temat wielu, Hope to może pomóc w znalezieniu sposobu na dostęp do wielu sieci SIM.

0

Sprawdź ten kod https://github.com/dragos-niculescu/dualsim/blob/master/src/com/example/dualsim/TelephonyInfo.java

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
int dataNetworkTypeSIM1 = telephonyManager.getNetworkType(); 
int dataNetworkTypeSIM2 = 0; 
try { 
    dataNetworkTypeSIM1 = Integer.parseInt(getStringOfInt(context, "getNetworkTypeGemini", 0)); 
    dataNetworkTypeSIM2 = Integer.parseInt(getStringOfInt(context, "getNetworkTypeGemini", 1)); 
} catch (GeminiMethodNotFoundException e) { 
    try { 
     dataNetworkTypeSIM1 = Integer.parseInt(getStringOfInt(context, "getDataNetworkTypeGemini", 0)); 
     dataNetworkTypeSIM2 = Integer.parseInt(getStringOfInt(context, "getDataNetworkTypeGemini", 1)); 
    } catch (GeminiMethodNotFoundException e1) { 
     try { 
      dataNetworkTypeSIM1 = Integer.parseInt(getStringOfInt(context, "getDataNetworkType", 0)); 
      dataNetworkTypeSIM2 = Integer.parseInt(getStringOfInt(context, "getDataNetworkType", 1)); 
     } catch (GeminiMethodNotFoundException e2) { 
      try { 
        dataNetworkTypeSIM1 = Integer.parseInt(getStringOfInt(context, "getNetworkType", 0)); 
        dataNetworkTypeSIM2 = Integer.parseInt(getStringOfInt(context, "getNetworkType", 1)); 
      } catch (GeminiMethodNotFoundException e3) {} 
     } 
    } 
} 

Możesz pobrać wszystkie dostępne metody, wywołując:

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
Method[] methods = Class.forName(telephonyManager.getClass().getName()).getMethods(); 
Powiązane problemy