【发布时间】:2011-05-04 14:34:51
【问题描述】:
目前,可以在 android 上拦截呼叫吗?达到打电话时可以得到电话号码的程度。
【问题讨论】:
标签: android phone-number intercept
目前,可以在 android 上拦截呼叫吗?达到打电话时可以得到电话号码的程度。
【问题讨论】:
标签: android phone-number intercept
是的,您可以 .... 扩展 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>
【讨论】:
您可以将PhoneStateListener 与自定义broadcast receiver 一起使用,从而获得onCallStateChanged(int state, String incomingNumber)。
(您的 AndroidManifest 中还需要 <uses-permission android:name="android.permission.READ_PHONE_STATE" />。)
【讨论】:
CallLog.Calls 和@ 987654326@ 为您提供最后被叫号码。