我想停止启动呼叫接收屏幕(默认值,通常当呼叫来时),而不是启动我自己的活动来响应。
smtd7mpg1#
首先创建BroadcastReceiver的子类public class CallReceiver extends BroadcastReceiver {添加到manifest.xml文件中<receiver android:name="com.myapp.calldropper.CallReceiver" > <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver>在onReceive中,根据默认值启动另一个活动屏幕
public class CallReceiver extends BroadcastReceiver {
<receiver android:name="com.myapp.calldropper.CallReceiver" > <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver>
Intent callRejectIntent = new Intent(context, MainActivity.class); callRejectIntent.putExtra("MOBILE_NUMBER", mobNum); callRejectIntent.putExtra("REJECT_COUNT", rejectCount); callRejectIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(callRejectIntent);
你的活动将启动默认的一个。2现在你可以响应来自你的活动的来电,你可以拒绝来电。为此,创建一个名为com.android.internal.telephony的单独包,并在其中创建一个名为ITelephony.aidl的简单文本文件。此文件将包含
com.android.internal.telephony
ITelephony.aidl
package com.android.internal.telephony; import android.os.Bundle; interface ITelephony { boolean endCall(); void dial(String number); void answerRingingCall(); }
在onCreate中添加以下代码
TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); try { // "cheat" with Java reflection to gain access to TelephonyManager's ITelephony getter Class<?> c = Class.forName(tm.getClass().getName()); Method m = c.getDeclaredMethod("getITelephony"); m.setAccessible(true); telephonyService = (ITelephony) m.invoke(tm); } catch (Exception e) { e.printStackTrace(); }
现在你可以通过调用下面的函数来拒绝调用
private void ignoreCall() { try { // telephonyService.silenceRinger(); telephonyService.endCall(); } catch (RemoteException e) { e.printStackTrace(); } moveTaskToBack(true); finish(); }
1条答案
按热度按时间smtd7mpg1#
首先创建BroadcastReceiver的子类
public class CallReceiver extends BroadcastReceiver {
添加到manifest.xml文件中
<receiver android:name="com.myapp.calldropper.CallReceiver" > <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver>
在onReceive中,根据默认值启动另一个活动屏幕
你的活动将启动默认的一个。2现在你可以响应来自你的活动的来电,你可以拒绝来电。
为此,创建一个名为
com.android.internal.telephony
的单独包,并在其中创建一个名为ITelephony.aidl
的简单文本文件。此文件将包含在onCreate中添加以下代码
现在你可以通过调用下面的函数来拒绝调用