【问题标题】:call intercept on androidandroid上的呼叫拦截
【发布时间】:2011-05-04 14:34:51
【问题描述】:

目前,可以在 android 上拦截呼叫吗?达到打电话时可以得到电话号码的程度。

【问题讨论】:

    标签: android phone-number intercept


    【解决方案1】:

    是的,您可以 .... 扩展 BroadcastReceiver 并覆盖 onReceive,如下所示

    public class CallListener extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
    
            if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
                String phoneNumber = intent.getExtras().getString(Intent.EXTRA_PHONE_NUMBER);
                System.out.println(phoneNumber);
    
                if (phoneNumber != null&& CallService.phoneNumber.equals("ANY_NUMBER_YOU_WANNA_INTERCEPT_ON")) {
    
                    //do what you want to do :)
                }
            }
    
        }
    

    您需要在 AndroidManifest.xml 中添加您的 BroadcastReceiver,如下所示

    <receiver android:name=".CallListener" android:permission="android.permission.PROCESS_OUTGOING_CALLS">
            <intent-filter>
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            </intent-filter>
     </receiver>
    

    【讨论】:

      【解决方案2】:

      您可以将PhoneStateListener 与自定义broadcast receiver 一起使用,从而获得onCallStateChanged(int state, String incomingNumber)

      (您的 AndroidManifest 中还需要 &lt;uses-permission android:name="android.permission.READ_PHONE_STATE" /&gt;。)

      【讨论】:

      • 谢谢 Ben Williams,我想在用户拨打电话时获取号码。拨打电话的号码。
      • 我不确定你是否可以直接,但如果你正在监听电话状态的变化,你应该能够知道通话何时结束和结束,然后立即CallLog.Calls 和@ 987654326@ 为您提供最后被叫号码。
      • 又是坦克。我将对此进行研究。但我真正想要的是在通话处于活动状态或通话按钮处于标签状态时获取号码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      相关资源
      最近更新 更多