2016-10-03 2 views
1

모바일 데이터가 Android에서 sim 1 또는 sim 2에서 프로그래밍 방식으로 활성화되어 있는지 확인해야합니까 ??모바일 데이터가 SIM 또는 SIM에서 온 것인가?

또한 데이터가 활성화되어있는 이동 통신사를 원합니다.

식 : SIM 1 : 1 캐리어 SIM (2) : 담체 2

데이터가 SIM (2) 에서 활성화되는 경우에는 캐리어 (2)의 이름을 반환한다.

답변

0

내 방식 (안드로이드> = 22)

int getDefaultDataSubscriptionId(final SubscriptionManager subscriptionManager) 
 
     { 
 
     if (android.os.Build.VERSION.SDK_INT >= 24) 
 
      { 
 
      int nDataSubscriptionId = SubscriptionManager.getDefaultDataSubscriptionId(); 
 

 
      if (nDataSubscriptionId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) 
 
       { 
 
       return (nDataSubscriptionId); 
 
       } 
 
      } 
 
     try 
 
      { 
 
      Class<?> subscriptionClass = Class.forName(subscriptionManager.getClass().getName()); 
 

 
      try 
 
       { 
 
       Method getDefaultDataSubscriptionId = subscriptionClass.getMethod("getDefaultDataSubId"); 
 

 
       try 
 
        { 
 
        return ((int) getDefaultDataSubscriptionId.invoke(subscriptionManager)); 
 
        } 
 
       catch (IllegalAccessException e1) 
 
        { 
 
        e1.printStackTrace(); 
 
        } 
 
       catch (InvocationTargetException e1) 
 
        { 
 
        e1.printStackTrace(); 
 
        } 
 
       } 
 
      catch (NoSuchMethodException e1) 
 
       { 
 
       e1.printStackTrace(); 
 
       } 
 
      } 
 
     catch (ClassNotFoundException e1) 
 
      { 
 
      e1.printStackTrace(); 
 
      } 
 
     return (SubscriptionManager.INVALID_SUBSCRIPTION_ID); 
 
     } 
 

 
    @TargetApi(22) 
 
    public String getUIText22(final TelephonyManager telephonyManager) 
 
     { 
 
     SubscriptionManager subscriptionManager = (SubscriptionManager) getContext().getApplicationContext().getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); 
 

 
     int nDataSubscriptionId = getDefaultDataSubscriptionId(subscriptionManager); 
 

 
     if (nDataSubscriptionId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) 
 
      { 
 
      SubscriptionInfo si = subscriptionManager.getActiveSubscriptionInfo(nDataSubscriptionId); 
 

 
      if (si != null) 
 
       { 
 
       return (si.getCarrierName().toString()); 
 
       } 
 
      } 
 
    }

관련 문제