如何解决Android:在双SIM卡设备中以编程方式从特定的SIM发送MMS
我的代码成功发送了彩信。该方法使用ConnectivityManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
NetworkRequest.Builder builder = new NetworkRequest.Builder();
builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
builder.addCapability(NetworkCapabilities.NET_CAPABILITY_MMS);
NetworkRequest networkRequest = builder.build();
cm.requestNetwork(networkRequest,new ConnectivityManager.NetworkCallback()
{
@Override
public void onAvailable(Network network)
{
super.onAvailable(network);
// do MMS sending here using HTTP/network APIs
cm.unregisterNetworkCallback(this);
}
});
}
在双SIM卡电话中,这种方法似乎是选择默认的SIM卡,然后从该号码中发送彩信(我不确定如何选择默认值)。
如何将SIM插槽或订阅ID指定为NetworkRequest的一部分?还是有其他方法?
只需重申一下,此问题仅与MMS有关,与SMS无关。同样,问题不在于以编程方式发送MMS(在SO的其他地方讨论过)。该问题仅适用于双SIM卡设备。
谢谢
解决方法
您可以通过以下方法获取SIM卡信息
//above Android API 22
if (Build.VERSION.SDK_INT > 22) {
//for dual sim mobile
SubscriptionManager localSubscriptionManager = SubscriptionManager.from(this);
if (localSubscriptionManager.getActiveSubscriptionInfoCount() > 1) {
//if there are two sims in dual sim mobile
List localList = localSubscriptionManager.getActiveSubscriptionInfoList();
SubscriptionInfo simInfo = (SubscriptionInfo) localList.get(0);
SubscriptionInfo simInfo1 = (SubscriptionInfo) localList.get(1);
final String sim1 = simInfo.getDisplayName().toString();
final String sim2 = simInfo1.getDisplayName().toString();
}else{
//if there is 1 sim in dual sim mobile
TelephonyManager tManager = (TelephonyManager) getBaseContext()
.getSystemService(Context.TELEPHONY_SERVICE);
String sim1 = tManager.getNetworkOperatorName();
}
}else{
//below android API 22
TelephonyManager tManager = (TelephonyManager) getBaseContext()
.getSystemService(Context.TELEPHONY_SERVICE);
String sim1 = tManager.getNetworkOperatorName();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。