要以编程方式发送短信,我正在使用,
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(toNumber, null, text, PendingIntent.getBroadcast(
this, 0, new Intent(SMS_SENT_ACTION), 0), null);
我已经为 api >=22 编码,例如,
SubscriptionManager subscriptionManager=(SubscriptionManager)getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
List<SubscriptionInfo> subscriptionInfoList=subscriptionManager.getActiveSubscriptionInfoList();
if(subscriptionInfoList!=null && subscriptionInfoList.size()>0){
for(SubscriptionInfo info:subscriptionInfoList){
String mobileNo=info.getNumber();
}
}
使用订阅管理器我没有使用 info.getNumber(); 获得 sim 2 卡号。对于三星 j5 设备,它返回空。
另一个重要的事情是,使用 SubscriptionManager 我正确地获取了第 1 行编号,但第 2 行为空。但同时当我尝试使用 SmsManager.getDefault() 发送短信时,它从第 2 行发送短信。在该设备第 2 行sim卡设置为默认值。
但基于双卡设备中可用的运营商 toNumber(发送短信的号码)将被更改。因此,我需要知道用户设置为数字 SmsManager.getDefault() 的设备的默认 sim 卡的运营商名称或 sim 卡号。我怎样才能知道?