我的方式(的Android> = 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());
}
}
}