我不想成为默认的拨号器应用。
我只想在用户拨打默认拨号应用中的特定号码(例如1234)时启动我的应用。
这可能吗?
场景:航空公司有一个应用程序可以进行预订并提供许多客户支持功能。它还有一个客户服务热线。但是,它希望减少热线的流量(昂贵的代理商),并希望尽可能地看到应用程序提供的大多数请求。因此,当用户拨打航空公司热线号码时,会启动航空公司应用程序(如果已安装)。
答案 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