通过Android SDK访问双卡功能有几个问题,所有问题都以简短的声明回答,Android不支持双卡功能。
尽管如此,双SIM卡手机确实存在,像MultiSim这样的应用程序似乎能够以某种独立于制造商的方式检测到这一点。
因此,从承认开始,让我试着问一些更有针对性的问题:
(顺便说一下,所有这些都只是为了实现这个算法:用SIM卡1发送SMS;如果发送失败,切换到SIM卡2并以这种方式重新发送消息。)
发布于 2017-01-09 17:09:06
您可以使用MultiSim
库来获取多卡设备的详细信息。
来自每个SIM卡的可用信息: IMEI、IMSI、SIM序列号、sim状态、SIM运营商代码、SIM运营商名称、SIM国家iso、网络运营商代码、网络运营商名称、网络运营商iso、网络类型、漫游状态。
只需在您的应用级Gradle脚本中添加以下行:
dependencies {
compile 'com.kirianov.multisim:multisim:2.0@aar'
}
别忘了在AndroidManifest.xml中添加所需的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
在代码中使用类似的代码:
MultiSimTelephonyManager multiSimTelephonyManager = new MultiSimTelephonyManager(this);
// or
MultiSimTelephonyManager multiSimTelephonyManager = new MultiSimTelephonyManager(this, new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
updateInfo();
}
});
public void updateInfo() {
// for update UI
runOnUiThread(new Runnable() {
@Override
public void run() {
multiSimTelephonyManager.update();
useInfo();
}
}
// for update background information
multiSimTelephonyManager.update();
useInfo();
}
public void useInfo() {
// get number of slots:
if (multiSimTelephonyManager != null) {
multiSimTelephonyManager.sizeSlots();
}
// get info from each slot:
if (multiSimTelephonyManager != null) {
for(int i = 0; i < multiSimTelephonyManager.sizeSlots(); i++) {
multiSimTelephonyManager.getSlot(i).getImei();
multiSimTelephonyManager.getSlot(i).getImsi();
multiSimTelephonyManager.getSlot(i).getSimSerialNumber();
multiSimTelephonyManager.getSlot(i).getSimState();
multiSimTelephonyManager.getSlot(i).getSimOperator();
multiSimTelephonyManager.getSlot(i).getSimOperatorName();
multiSimTelephonyManager.getSlot(i).getSimCountryIso();
multiSimTelephonyManager.getSlot(i).getNetworkOperator();
multiSimTelephonyManager.getSlot(i).getNetworkOperatorName();
multiSimTelephonyManager.getSlot(i).getNetworkCountryIso();
multiSimTelephonyManager.getSlot(i).getNetworkType();
multiSimTelephonyManager.getSlot(i).isNetworkRoaming();
}
}
}
// or for devices above android 6.0
MultiSimTelephonyManager multiSimTelephonyManager = new MultiSimTelephonyManager(MyActivity.this, broadcastReceiverChange);
用法:
// get info about slot 'i' by methods:
multiSimTelephonyManager.getSlot(i).
强制更新信息:
// force update phone info (needed on devices above android 6.0 after confirm permissions request)
multiSimTelephonyManager.update();
权限请求句柄(6.0+):
// in YourActivity for update info after confirm permissions request on devices above android 6.0
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (multiSimTelephonyManager != null) {
multiSimTelephonyManager.update();
}
}
发布于 2012-07-03 14:22:23
有三个不同的类别...
支持的
因此,双sim功能是可用的,但没有文档记录,因此没有得到官方支持。
话虽如此,但这并不意味着它将无法使用,它只是意味着android(或者就这一点而言,谷歌甚至是manufaturer)不会支持你的应用功能。
但它可能只是工作,因为例如,联系人是类似的事情。
然后你可能会问,如果没有文档记录,每个人如何知道这些功能。嘿,android是开源的..去看看代码,自己去找吧。我猜这就是多sim开发人员所做的。
发布于 2015-12-08 16:08:00
在API 22之前,Android不支持多个SIM卡功能。但是从Android 5.1 (API level 22)开始,Android开始支持多个SIMs。有关Android Documentation的更多详细信息
来自此Original Answer的引用
https://stackoverflow.com/questions/11305407
复制相似问题