首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dual Sim Android

Dual Sim Android
EN

Stack Overflow用户
提问于 2011-11-05 14:25:34
回答 4查看 12.9K关注 0票数 11

有没有办法在我的安卓系统中使用另一个SIM卡?我有一个安卓樱桃移动轨道,这是一个双卡安卓手机。我想为我的手机开发一个短信应用程序,但只有第一个SIM卡将被访问。我想访问另一个SIM卡,这样当我按回车键发送消息时,会有一个提示,那就是发送消息的SIM卡。我知道这很简单,但手机制造商对此没有任何反馈。还有别的办法吗?调整还是怎么的?

EN

回答 4

Stack Overflow用户

发布于 2013-11-24 14:28:17

我认为你可以使用dex2jar或者apktool来逆转那些运行在双SIM卡设备上的应用,一旦你找到了相关的“服务管理器”,“电话管理器”,一些接口存根,或者像"Gemini“这样的关键词,你就可以使用Java反射来反映这个类的所有方法。然后你就可以实现这个目标了。

票数 3
EN

Stack Overflow用户

发布于 2020-11-27 05:25:29

此方法可用于从两个SIM卡中选择一个SIM卡!

代码语言:javascript
复制
//above Android API 22
if (Build.VERSION.SDK_INT > 22) {
    //for dual sim mobile
    SubscriptionManager localSubscriptionManager = SubscriptionManager.from(this);

    if (localSubscriptionManager.getActiveSubscriptionInfoCount() > 1) {
     //if there are two sims in dual sim mobile
        List localList = localSubscriptionManager.getActiveSubscriptionInfoList();
        SubscriptionInfo simInfo = (SubscriptionInfo) localList.get(0);
        SubscriptionInfo simInfo1 = (SubscriptionInfo) localList.get(1);

        final String sim1 = simInfo.getDisplayName().toString();
        final String sim2 = simInfo1.getDisplayName().toString();

    }else{
     //if there is 1 sim in dual sim mobile
        TelephonyManager tManager = (TelephonyManager) getBaseContext()
                .getSystemService(Context.TELEPHONY_SERVICE);

        String sim1 = tManager.getNetworkOperatorName();

    }

}else{
    //below android API 22
            TelephonyManager tManager = (TelephonyManager) getBaseContext()
                    .getSystemService(Context.TELEPHONY_SERVICE);

            String sim1 = tManager.getNetworkOperatorName();
}

然后,您可以使用以下方法发送SMS

代码语言:javascript
复制
    public static boolean sendSMS(Context context, String smsText) {
    SmsManager smsMan = SmsManager.getDefault();

    SharedPreferences prefs = context.getSharedPreferences("uinfo", MODE_PRIVATE);
    String sim = prefs.getString("sim", "No name defined");
    String simName = prefs.getString("simName", "No name defined");
    String toNum = "";

    try {

        if (Build.VERSION.SDK_INT > 22) {

            SubscriptionManager localSubscriptionManager = SubscriptionManager.from(context);
            if (localSubscriptionManager.getActiveSubscriptionInfoCount() > 1) {

                int simID  = Integer.parseInt(sim);

                List localList = localSubscriptionManager.getActiveSubscriptionInfoList();
                SubscriptionInfo simInfo = (SubscriptionInfo) localList.get(simID);
                ArrayList<String> parts = smsMan.divideMessage(smsText);
                SmsManager.getSmsManagerForSubscriptionId(simInfo.getSubscriptionId()).sendMultipartTextMessage(toNum, null, parts, null, null);
            }else{
                ArrayList<String> parts = smsMan.divideMessage(smsText);
                smsMan.sendMultipartTextMessage(toNum, null, parts, null, null);
            }
            return true;
        }else{
            ArrayList<String> parts = smsMan.divideMessage(smsText);
            smsMan.sendMultipartTextMessage(toNum, null, parts, null, null);
        }
    } catch (Exception e) {

    }
    return false;
}
票数 1
EN

Stack Overflow用户

发布于 2011-11-05 15:46:23

官方目前还没有支持这一点的API,你必须联系设备制造商。

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

https://stackoverflow.com/questions/8018565

复制
相关文章

相似问题

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