首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android双SIM卡API

Android双SIM卡API
EN

Stack Overflow用户
提问于 2012-07-03 14:14:37
回答 6查看 31.7K关注 0票数 30

通过Android SDK访问双卡功能有几个问题,所有问题都以简短的声明回答,Android不支持双卡功能。

尽管如此,双SIM卡手机确实存在,像MultiSim这样的应用程序似乎能够以某种独立于制造商的方式检测到这一点。

因此,从承认开始,让我试着问一些更有针对性的问题:

  • "Android SDK不支持多个SIM卡功能“是否意味着这些功能不存在,或者尝试使用它们只是一个坏主意?
  • 是否有安卓内容提供商或内部软件包(com.android...)提供SIM卡信息的?(据我在文档和代码中所见,TelephonyManager没有提到多个SIM卡)
  • 是否有任何报告显示有制造商向开发人员公开了多个SIM卡功能?
  • 如果我要查找制造商提供的未记录的功能,我该如何处理?

(顺便说一下,所有这些都只是为了实现这个算法:用SIM卡1发送SMS;如果发送失败,切换到SIM卡2并以这种方式重新发送消息。)

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-01-09 17:09:06

您可以使用MultiSim库来获取多卡设备的详细信息。

来自每个SIM卡的可用信息: IMEI、IMSI、SIM序列号、sim状态、SIM运营商代码、SIM运营商名称、SIM国家iso、网络运营商代码、网络运营商名称、网络运营商iso、网络类型、漫游状态。

只需在您的应用级Gradle脚本中添加以下行:

代码语言:javascript
复制
dependencies {
    compile 'com.kirianov.multisim:multisim:2.0@aar'
}

别忘了在AndroidManifest.xml中添加所需的权限:

代码语言:javascript
复制
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

在代码中使用类似的代码:

代码语言:javascript
复制
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);

用法:

代码语言:javascript
复制
// get info about slot 'i' by methods:
multiSimTelephonyManager.getSlot(i).

强制更新信息:

代码语言:javascript
复制
// force update phone info (needed on devices above android 6.0 after confirm permissions request)
multiSimTelephonyManager.update();

权限请求句柄(6.0+):

代码语言:javascript
复制
// 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();
    }
}
票数 11
EN

Stack Overflow用户

发布于 2012-07-03 14:22:23

有三个不同的类别...

支持的

  1. 功能和可用的documented
  2. Features以及不可用的un-documented
  3. features

因此,双sim功能是可用的,但没有文档记录,因此没有得到官方支持。

话虽如此,但这并不意味着它将无法使用,它只是意味着android(或者就这一点而言,谷歌甚至是manufaturer)不会支持你的应用功能。

但它可能只是工作,因为例如,联系人是类似的事情。

然后你可能会问,如果没有文档记录,每个人如何知道这些功能。嘿,android是开源的..去看看代码,自己去找吧。我猜这就是多sim开发人员所做的。

票数 8
EN

Stack Overflow用户

发布于 2015-12-08 16:08:00

在API 22之前,Android不支持多个SIM卡功能。但是从Android 5.1 (API level 22)开始,Android开始支持多个SIMs。有关Android Documentation的更多详细信息

来自此Original Answer的引用

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11305407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档