Android自动拦截与接听功能APK黑白名单

自动接听与挂断调用关系如下

1. 首先在启动apk初始界面的activity中,启动service服务,开始监听通话状态(InCallService)

   //启动通话状态监听服务
    private void startCallListen() {
        Intent intent = new Intent(CallAndMessageEntranceActivity.this, InCallService.class);
        startService(intent);
}
 

2. 在通话监听服务中,监听通话状态,当通话状态为CALL_STATE_RINGING时处理通话。

public class InCallService extends Service {
    private TelecomManager mTelecomManager;
    private TelephonyManager mTelephonymanager;
    MyPhoneStateListener mMyPhoneStateListener = new MyPhoneStateListener();

    @Override
    public void onCreate() {
        Log.e("InCallService", "onCreate()");
        super.onCreate();

        //获取电话服务
        mTelecomManager = (TelecomManager) getSystemService(Context.TELECOM_SERVICE);
        mTelephonymanager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
   }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (mTelephonymanager == null) {
            mTelephonymanager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        }
        mTelephonymanager.listen(mMyPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
        return super.onStartCommand(intent, flags, startId);
    }

    //监听通过话
    public class MyPhoneStateListener extends PhoneStateListener {

        @RequiresApi(api = Build.VERSION_CODES.P)
        @Override
        public void onCallStateChanged(int state, final String incomingNumber) {
            super.onCallStateChanged(state, incomingNumber);
            switch (state) {
                case TelephonyManager.CALL_STATE_IDLE:
                    //通话空闲状态
                    break;
                case TelephonyManager.CALL_STATE_RINGING:
                    //通话来电状态
                    try {
                        Log.e("C_M_BlackCallService", "Monitor incoming calls");
                        //拦截来电判断来电时黑名单or白名单
                        splitWhiteAndBlack(incomingNumber);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    break;
                case TelephonyManager.CALL_STATE_OFFHOOK:
                    //电话挂起状态
                    break;
            }

        }
    }
    //incomingNumber:来电号码 依据来电号码判断黑白名单
    private void splitWhiteAndBlack(String incomingNumber) {
        //1.黑名单自动挂断
        mTelecomManager.endCall();
        //2.白名单自动接听
        mTelecomManager.acceptRingingCall();
    }
    @Override
    public void onDestroy() {
        super.onDestroy();

}

到此这篇关于Android自动拦截与接听功能APK黑白名单的文章就介绍到这了,更多相关Android拦截与接听内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android来电拦截的实现方法

    本文实例为大家分享了Android来电拦截的方法,供大家参考,具体内容如下 权限 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android

  • Android中Home键的监听和拦截示例

    首先大家应该先了解一种情况,就是Android在应用中是无法拦截Home键的,今天我们带大家看一下Home键的三种情况. 1.在应用中按下Home键的逻辑处理 当我们在应用中按下Home键时界面会启动到桌面,我们在frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.Java类中可以看到其实现原理,其不外乎就是调用了以下代码. Intent mHomeIntent; mHomeIntent =

  • Android自动拦截与接听功能APK黑白名单

    自动接听与挂断调用关系如下 1. 首先在启动apk初始界面的activity中,启动service服务,开始监听通话状态(InCallService) //启动通话状态监听服务 private void startCallListen() { Intent intent = new Intent(CallAndMessageEntranceActivity.this, InCallService.class); startService(intent); } 2. 在通话监听服务中,监听通话状态

  • Android自动文本框输入识别提示功能代码

    自动提示文本框(AutoCompleteTextView)可以加强用户体验,缩短用户的输入时间(百度的搜索框就是这个效果). 相信大家都熟悉自动识别提示吧,在我们的生活中随处可见,今天就让我为大家简单介绍一下它是如何设计的. 所谓自动识别输入即是根据用户输入的已有信息,为用户提示可能的值,方便用户完成输入.在Android设备上这种功能分为:AutoCompleteTextView和MultiAutoCompleteTextView,前者为单个的自动识别,类似与搜索引擎的输入框提示:后者为多个值

  • Android自动获取短信验证码功能

    先给大家展示下效果图,如果大家感觉不错,请参考实现代码. 1.自定义监听类 /** * 短信监听器,用于自动填充验证码 */ public class SMSContentObserver extends ContentObserver { public final String SMS_URI_INBOX = "content://sms/inbox";//收信箱 private Activity activity = null; private String smsContent

  • Android开发实现自动切换文字TextSwitcher功能示例

    本文实例讲述了Android开发实现自动切换文字TextSwitcher功能.分享给大家供大家参考,具体如下: 介绍: 1.TextSwitcher是ViewSwicher的一个子类,继承了ViewSwicher的所有方法 2.与ViewSwitcher的另一个子类类似,TextSwitcher也有 3.ImageSwitcher不同的是:TextSwitcher的ViewFactory方法的 makeVieW() 必须放回一个TextXiew组件. 具体效果: 放射思维: 如果将其和轮播图(h

  • android studio 打包自动生成版本号与日期,apk输入路径详解

    一. 打开项目选择如图示1 (build.gradle 项目位置) 二. 1. build.gradle 文件添加内容如下.gradle是[com.android.tools.build:gradle:3.0.0 以下版本] android{ defaultConfig {...} 自动追加版本号和版本名称 android.applicationVariants.all { variant->variant.outputs.each { output-> output.outputFile =

  • Android自动填充短信验证码功能(demo)

    项目需求: Android开发中用户登录往会用到短信验证的功能,如果让用户先查看短信,然后再回到界面填写验证码,用户体验不是很好,有时就需要实现验证码的自动填写功能. 做法: 我以前的做法是先创建一个广播接收器,接受短信变化的广播,收到广播时,再把验证码提取出来. 那时有用户测试反馈他的手机安装了其他一些短信应用或者手机本身限制了权限的情况下,这种方式可能起不了作用,即使把优先级设高,也不能保证不会被别的应用抢先. 以前用户卸载掉第三方软件后,就没再追究了. 现在发现可以通过监听短信数据库的方式

  • Android Studio 3.0 新功能全面解析和旧项目适配问题

    简介: Android Studio是Android的官方IDE.它是专为Android而打造,可以加快您的开发速度,帮助您为每款Android设备构建最优应用. 它提供专为Android开发者量身定制的工具,其中包括丰富的代码编辑.调试.测试和性能分析工具. 上周四,Google 终于在经历大半年的打磨锤炼之后正式发布 Android Studio 3.0 版本,给广大安卓开发人员一份满意的答卷.如往常一样,每次新版开发工具的发布,很多谨慎点的朋友仍担心稳定性.是否存在坑等问题,选择隔岸观火,

  • Android实现发送短信功能实例详解

    本文实例分析了Android实现发送短信功能的方法.分享给大家供大家参考,具体如下: 短信和打电话一样,都是android手机的基本功能,下面以实例说明android如何实现发送短信的功能. 程序如下所示: import java.util.regex.Matcher; import java.util.regex.Pattern; import android.app.Activity; import android.app.PendingIntent; import android.cont

  • Android开发中滑动分页功能实例详解

    本文实例讲述了Android开发中滑动分页功能.分享给大家供大家参考,具体如下: android UI 往右滑动,滑动到最后一页就自动加载数据并显示 如图: Java代码: package cn.anycall.ju; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import andro

  • Android开发微信APP支付功能的要点小结

    基本概念 包名值得是你APP的包,在创建工程时候设置的,需要在微信支付平台上面设置. 签名指的是你生成APK时候所用的签名文件的md5,去掉:全部小写,需要在微信支付平台上面设置. 调试阶段,签名文件可以使用调试用的debug.keystore,签名可以直接在eclipse上面查看,或者用工具查看 ,安装打开输入包名即可查看. 发布的时候一定需要在微信支付平台上面设置成发布用的签名值. 官方的Demo里面的内容并不是全是必须的,甚至只需要有libammsdk.jar就够了,AndroidMani

随机推荐