关于通过Android SDK访问双SIM卡功能有几个问题,所有这些问题都通过简短的声明来回答,这些声明在Android中不支持这些功能.
尽管如此,双SIM卡手机确实存在,而像MultiSim这样的应用似乎能够以某种独立于制造商的方式检测到这一点.
所以,从这个承认开始,让我试着提出一些更尖锐的问题:
(顺便说一下,所有这一切只是为了实现这个算法:用SIM卡1发送短信;如果发送失败,切换到SIM卡2并重新发送消息.)
您可以使用MultiSim库从多SIM卡设备获取详细信息.
每张SIM卡的可用信息:IMEI,IMSI,SIM序列号,SIM状态,SIM运营商代码,SIM运营商名称,SIM国家iso,网络运营商代码,网络运营商名称,网络运营商iso,网络类型,漫游状态.
只需在应用级Gradle脚本中添加以下行:
dependencies {
compile 'com.kirianov.multisim:multisim:2.0@aar'
}
Run Code Online (Sandbox Code Playgroud)
不要忘记在AndroidManifest.xml中添加所需的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Run Code Online (Sandbox Code Playgroud)
在代码中使用类似的代码:
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);
Run Code Online (Sandbox Code Playgroud)
有3个不同的类别......
因此双SIM卡功能可用,但未记录,因此未得到官方支持.
说它并不意味着它不可用,它只是意味着android(或谷歌甚至manufaturer)不负责支持你的应用程序功能.
但它可能只是起作用,因为例如联系人是类似的事情.
然后你可能会问每个人如何知道这些功能,如果它没有记录的话.嘿android是开源的...去查看代码并找到它自己.多数民众赞成开发人员的确如此.
| 归档时间: |
|
| 查看次数: |
25747 次 |
| 最近记录: |