攔截監聽外撥的電話,并進行處理:
向外撥打電話時系統會發出一個有序廣播,雖然該廣播最終會被拔號器里的廣播接收者所接收并實現電話拔打,但我們可以在廣播傳遞給拔號廣播接收者之前先得到該廣播,然后清除傳遞給拔號廣播接收者的電話號碼,在拔號廣播接收者接收到該廣播時,由于電話號碼為null,因此取消電話拔打。
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:110"));
startActivity(intent);
public class OutCallReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
setResultData(null); //清除電話,廣播被傳給系統的接收者后,因為電話為null,取消電話拔打
// 同樣如果你想修改外拔的電話號碼,可以這樣做
// String phone = getResultData();//得到外拔電話
// setResultData(“12593”+ phone);//在電話前面加上12593
}
}
接收外拔電話廣播Intent,在AndroidManifest.xml文件中的<application>節點里訂閱此Intent:
<receiver android:name=".OutgoingCallReceiver">
<intent-filter android:priority="1">
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>
并且要進行權限聲明:
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>