首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查在android中哪个sim被设置为默认sim

如何检查在android中哪个sim被设置为默认sim
EN

Stack Overflow用户
提问于 2015-08-19 07:21:33
回答 3查看 6.2K关注 0票数 5

我正在尝试检查我的移动设备是否为双sim,如果sim1已就绪,sim2是否已就绪,我将使用java反射完成此操作,现在我想知道是否使用sim1 isRoaming和sim2 isRoaming,以及是否将其dual设置为默认值。有没有可能在java反射的帮助下。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-20 10:16:12

你可以这样做:

代码语言:javascript
运行
复制
public int  getDefaultSimmm(Context context) {

    Object tm = context.getSystemService(Context.TELEPHONY_SERVICE);
    Method method_getDefaultSim;
    int defaultSimm = -1;
    try {
        method_getDefaultSim = tm.getClass().getDeclaredMethod("getDefaultSim");
        method_getDefaultSim.setAccessible(true);
        defaultSimm = (Integer) method_getDefaultSim.invoke(tm);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    Method method_getSmsDefaultSim;
    int smsDefaultSim = -1;
    try {
        method_getSmsDefaultSim = tm.getClass().getDeclaredMethod("getSmsDefaultSim");
        smsDefaultSim = (Integer) method_getSmsDefaultSim.invoke(tm);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return smsDefaultSim;
    }
票数 6
EN

Stack Overflow用户

发布于 2018-06-13 04:11:22

从API 22 ( MR1)开始,android正式增加了SubscriptionManager类,它提供了开发者所需的与sim卡和相关服务相关的所有信息。

SubscriptionManager

然而,API 24中添加了对调用、SMS和Mobile数据的默认检索支持。如果您使用最小SDK版本为24,则可以使用getDefaultSmsSubscriptionId()方法使用户设置SMS默认设置。

代码语言:javascript
运行
复制
SubscriptionManager manager = context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
int defaultSmsId = manager.getDefaultSmsSubscriptionId();
SubscriptionInfo info = manager.getActiveSubscriptionInfo(defaultSmsId);

注意:上面提到的调用需要READ_PHONE_STATE权限。请确保将其添加到清单文件中。

票数 2
EN

Stack Overflow用户

发布于 2021-09-17 09:57:22

一个很晚的答案,但我开发了一个具有上述要求的应用程序。

下面是完成这一任务的最新方法。

代码语言:javascript
运行
复制
    /**
     * @return - True - if any sim selected as default sim , False - No default sim is selected or
     * permission for reading the sim status is not enabled
     */
    boolean isDefaultSimSetForCall() {
        if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
            Log.d(Utils.getTag(), "Read Phone state permission Disabled");
            genericCallbacks.onPermissionAccessError(Constants.PermissionErrorCodes.READ_PHONE_STATE_ACCESS);
            return false;
        } else {
            PhoneAccountHandle defaultPhoneAccount = telecomManager.getDefaultOutgoingPhoneAccount(Uri.fromParts("tel", "text", null).getScheme());
            if (defaultPhoneAccount != null) {
                Log.d(Utils.getTag(), "DefaultOutgoingPhoneAccount: " + defaultPhoneAccount.getId());
                return true;
            }
        }
        return false;
    }

从接收到的PhoneAccountHandle中,我们可以得到必要的字段

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

https://stackoverflow.com/questions/32088950

复制
相关文章

相似问题

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