拨打拦截号码

时间:2017-10-31 12:11:32

标签: android

我不想成为默认的拨号器应用。

我只想在用户拨打默认拨号应用中的特定号码(例如1234)时启动我的应用。

这可能吗?

场景:航空公司有一个应用程序可以进行预订并提供许多客户支持功能。它还有一个客户服务热线。但是,它希望减少热线的流量(昂贵的代理商),并希望尽可能地看到应用程序提供的大多数请求。因此,当用户拨打航空公司热线号码时,会启动航空公司应用程序(如果已安装)。

1 个答案:

答案 0 :(得分:1)

是的,它可能。请参阅"收听拨出电话请求"来自here

在手机负载上运行您的应用。 这是在app的清单文件中声明的示例广播接收器:

<manifest>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />  
<application>
    ...
    <receiver android:name=MyOutgoingCallHandler">
        <intent-filter>
            <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>
    ...
</application>
</manifest>

相应广播接收器的实现看起来像这样:

public class MyOutgoingCallHandler extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    // Extract phone number reformatted by previous receivers
        String phoneNumber = getResultData();
        if (phoneNumber == null) {
        // No reformatted number, use the original
            phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
        }
        // My app will bring up the call, so cancel the broadcast
        setResultData(null);
        // Start my app to bring up the call
    ...
  }
}

所以你可以从

查看号码
phoneNumber