本文实例为大家分享了Android来电拦截的方法,供大家参考,具体内容如下权限
package com.example.administrator.endcall;
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager;import android.util.Log;
public class PhoneStateReceiver extends BroadcastReceiver {@Override public void onReceive(Context context, Intent intent) {if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);Log.i("BlockCallHelper", "BlockCallHelper------->>>>" + phoneNumber);}}}
来电挂断
BlockCallHelperpackage com.example.administrator.endcall;
import android.content.Context;import android.content.SharedPreferences;import android.database.Cursor;import android.net.Uri;import android.os.RemoteException;import android.telephony.PhoneStateListener;import android.telephony.TelephonyManager;import android.util.Log;
import com.android.internal.telephony.ITelephony;
import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;
public final class BlockCallHelper {private static final String TAG = "BlockCallHelper";
private Context mContext;
private TelephonyManager tManger;
private List
private BlockCallBack bcb;
////////////////////////////////////////// private static final class Factory {private static final BlockCallHelper instance = new BlockCallHelper();}
public static BlockCallHelper getInstance() {return Factory.instance;}
/*** 初始化上下文以及数据* @param context*/ public BlockCallHelper init(Context context) {if (context == null) {throw new NullPointerException("context == null!");}
this.mContext = context;this.tManger = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);tManger.listen(new PhoneCallListener(), PhoneCallListener.LISTEN_CALL_STATE);return this;}
/*** 注入需要拦截的手机号* @param phoneL*/ public BlockCallHelper injectBlockPhoneNum(ArrayList
private final class PhoneCallListener extends PhoneStateListener {@Override public void onCallStateChanged(int state, String incomingNumber) {if (state == TelephonyManager.CALL_STATE_RINGING) {if (phones.contains(incomingNumber)) {Log.i("BlockCallHelper", "contains contains contains");endCall();if (bcb != null) {bcb.callBack(incomingNumber);}} else {Log.i("BlockCallHelper", "contains not-------");}}}}
public BlockCallHelper setBlockCallBack(BlockCallBack back) {this.bcb = back;return this;}
public interface BlockCallBack {void callBack(String incomingNum);}}
看主界面MainActivitypackage com.example.administrator.endcall;
import android.app.Activity;import android.app.NotificationManager;import android.os.Bundle;import android.util.Log;import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ArrayList
BlockCallHelper.getInstance().init(this).injectBlockPhoneNum(blockCalls).setBlockCallBack(new BlockCallHelper.BlockCallBack() {@Override public void callBack(String incomingNum) {Log.i("BlockCallHelper", "incomingNum-----------" + incomingNum);}});}}最后看AIdl层面
ITelephony.aidlpackage com.android.internal.telephony;
interface ITelephony {void dial(String number);void call(String number);boolean showCallScreen();boolean showCallScreenWithDialpad(boolean showDialpad);boolean endCall();void answerRingingCall();void silenceRinger();boolean isOffhook();boolean isRinging();boolean isIdle();boolean isRadioOn();boolean isSimPinEnabled();void cancelMissedCallsNotification();boolean supplyPin(String pin);boolean handlePinMmi(String dialString);void toggleRadioOnOff();boolean setRadio(boolean turnOn);void updateServiceLocation();void enableLocationUpdates();void disableLocationUpdates();int enableApnType(String type);int disableApnType(String type);boolean enableDataConnectivity();boolean disableDataConnectivity();boolean isDataConnectivityPossible();
Bundle getCellLocation();List
int getCallState();int getDataActivity();int getDataState();}NeighboringCellInfo.aidl// NeighboringCellInfo.aidl package android.telephony;parcelable NeighboringCellInfo;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:Android 自定义来电秀实现总结Android仿通话来电界面效果Android8.1 通过黑名单屏蔽系统短信和来电功能Android如何帮助用户自动接听或者挂断来电Android监听系统来电并弹出提示窗口Android来电监听和去电监听实现代码Android之来电秀实战示例
