2015-10-07 21 views
8

Ağ monitör uygulaması yaptım. Burada her şeyi başarıyla uygulayabildim. Ben çift sim android telefon var. Operatörün adını nasıl alacağımı biliyorum. Ama ben internete hangi sim bağlı? Bu kodu kullandım, sadece kullanıcıya cihazın mobil veriler üzerinden bağlandığını göstermek için kullanıyorum. Cihazın şu anda hangi operatörün interneti kullandığı konusunda daha spesifik olmak istiyorum.Çift sim android telefona internete bağlı operatörün adını nasıl edinilir?

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

Çözümü elde ettiniz? –

cevap

0

onlar bir SDK eklenti birden Sims veya olmasın erişmek zorunda olmadığını cihazınızın üreticisine başvurun ve kontrol edebilirsiniz API 22. önce birden sims hakkında hiçbir API vardır.

API 22 olduğundan, SubscriptionManager yöntemini getActiveSubscriptionInfoList() kullanarak birden SIMs kontrol edebilirsiniz. Android Dokümanlar ile ilgili daha fazla bilgi. Lütfen, multiple sims'a bakın. Çoklu hakkında birkaç tartışma var, bu çoklu sim ağına erişmenin bir yolunu bulmanız için size yardımcı olabilir.

0

Kontrol bu 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) {} 
     } 
    } 
} 

Sen arayarak mevcut tüm yöntemleri alabilirsiniz:

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
Method[] methods = Class.forName(telephonyManager.getClass().getName()).getMethods(); 
İlgili konular