如何在双卡设备的通话/短信接收器中获取 simId?

发布于 2025-01-15 13:40:52 字数 1636 浏览 2 评论 0原文

我实现了用于挂钩来电和短信的接口 BroadcastReceiver。我想要获取来电或短信的 simId。怎么做呢?

我的接收器呼叫和短信代码:

public class SmsAndCallReceiver extends BroadcastReceiver {

    public void _onReceive(Context context, Intent intent) {
        // here I define incoming call or sms
        // here I get simId !!!
    }
}

我还在 AndroidManifest.xml 中注册了类:

<receiver android:name=".receivers.SmsAndCallReceiver" android:exported="true">
    <intent-filter>
       <action android:name="android.intent.action.PHONE_STATE"/>
    </intent-filter>
</receiver>

并且我还添加了权限:

<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS"/>

我看到了此选项,但它在我的设备上不起作用:

public class MyCallReceiver extends BroadcastReceiver {
    
    @Override
    public void onReceive(Context context, Intent intent) {
        String callingSIM = "";
        callingSIM = intent.getExtras().getInt("simId", -1);
        if(callingSIM == "0"){
            //SIM1
        }
        else if(callingSIM =="1"){
            //SIM2
        }
    }

}

我的设备: Samsung SM -J260F

版本 android: 8.1.0 (API 27)

根设备:

I implemented interface BroadcastReceiver for hook incoming call and sms. I want get simId to which the incoming call or sms comes. How to do it?

My code for receiver calls and sms:

public class SmsAndCallReceiver extends BroadcastReceiver {

    public void _onReceive(Context context, Intent intent) {
        // here I define incoming call or sms
        // here I get simId !!!
    }
}

I also registered class in AndroidManifest.xml:

<receiver android:name=".receivers.SmsAndCallReceiver" android:exported="true">
    <intent-filter>
       <action android:name="android.intent.action.PHONE_STATE"/>
    </intent-filter>
</receiver>

And also I add permissions:

<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS"/>

I saw this option, but it doesn't work on my device:

public class MyCallReceiver extends BroadcastReceiver {
    
    @Override
    public void onReceive(Context context, Intent intent) {
        String callingSIM = "";
        callingSIM = intent.getExtras().getInt("simId", -1);
        if(callingSIM == "0"){
            //SIM1
        }
        else if(callingSIM =="1"){
            //SIM2
        }
    }

}

My device: Samsung SM-J260F

Version android: 8.1.0 (API 27)

Root device: no

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文