Android10双sim卡修改默认流量卡问题

需求


通过AI语音进行切换默认流量卡(切换默认sim卡)

问题


原以为就是个普通需求,既然设置里面都可以手动切换,只要找到对应的系统API接口不就可以了。但经过一通百度和翻阅官网那看不懂的文档最终确认,这TMD既然不是公开的接口。

在这里插入图片描述

解决方案

但好在前面那一堆看不懂的文档没白看,起码确认从系统层是可以实现该需求,最终动用我等同于没有的关系好不容易说服驱动工程师帮我重新编译系统。其实也不难,主要是该死的权力,哦不,是权限。

通过设置里切换sim卡的弹框最终确认到以下代码入口:

@Override
    public void onClick(DialogInterface dialog, int selectionIndex) {
        if (selectionIndex >= 0 && selectionIndex < mSubscriptions.size()) {
            int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
            final SubscriptionInfo subscription = mSubscriptions.get(selectionIndex);
            if (subscription != null) {
                subId = subscription.getSubscriptionId();
            }
            final SimDialogActivity activity = (SimDialogActivity) getActivity();
            activity.onSubscriptionSelected(getDialogType(), subId);
        }
    }

继续跟进去,会发现这该死的就是一行代码的事情setDefaultDataSubId(subId);

private void setDefaultDataSubId(final int subId) {
        final SubscriptionManager subscriptionManager = getSystemService(SubscriptionManager.class);
        final TelephonyManager telephonyManager = getSystemService(
                TelephonyManager.class).createForSubscriptionId(subId);
        subscriptionManager.setDefaultDataSubId(subId);
        telephonyManager.setDataEnabled(true);
        Toast.makeText(this, R.string.data_switch_started, Toast.LENGTH_LONG).show();
    }

这就好解决了,既然官方默认不公开自己想办法给公开出去就好了,我这里是直接自定义个系统广播,然后应用层直接发送广播进行控制,代码这里就不贴了,留给大佬们来指教。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉念聿辉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值