Android-操作系统拨打电话广播的处理

摘要:
Packages/apps/phone/AndroidManifest在上一篇博客中阅读了xml源代码。Android隐含地打算激活操作系统的调用接口。它解释了如何公开包/apps/phone/AndroidManifest。Android操作系统的xml…等等

Android操作系统的 packages/apps/phone/AndroidManifest.xml源码阅读

在之前的博客,Android-隐式意图激活操作系统通话界面,讲解了,阅读Android操作系统的 packages/apps/phone/AndroidManifest.xml,是如何暴露的

Android-操作系统拨打电话广播的处理第1张

...... 等等


 Android操作系统的 packages/apps/phone/OutgoingCallBroadcaster源码阅读

具体很多细节想不管,因为在 Android-隐式意图激活操作系统通话界面已经介绍过了

现在只关心 OutgoingCallBroadcaster ,OutgoingCallBroadcaster是一个没有布局的Activity,只处理业务逻辑

OutgoingCallBroadcaster --> onCreate()

发送了有序广播,而且明确指定了 接收者

参数一:意图

参数二:谁能接收我的广播(自定义权限)

参数三:明确指定的 接收者

参数四:null

参数五:初始码

参数六:初始值(拨打的号码)

参数七:null(携带的参数)

Android-操作系统拨打电话广播的处理第2张


我的应用:

在AndroidManifest.xml订阅(可以去接收者,专门接收Android操作系统拨号发出的广播)

注意:⚠️ 优先级设置了 1000,此接收者最新接收到拨打电话的信息

     <!--
            订阅(Xml形式订阅接收者)
            订阅接收者:专门接收Android操作系统拨号发出的广播

            android.intent.action.NEW_OUTGOING_CALL 这是系统应用发送的Action
         -->
        <receiver android:name=".br.CustomCallBroadcastReceiver">

            <intent-filter android:priority="1000"> <!-- 优先级设置最大,我先接收(处理) -->

                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />

            </intent-filter>

        </receiver>

在AndroidManifest.xml 必须设置的权限,为什么要设置此权限呢,因为 上面Android操作系统 OutgoingCallBroadcaster 的源码中 -> 参数二:指定了此权限

  <!--
        参数二:谁能接收我的广播(自定义权限) 处理外拨电话的权限
    -->
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />

设置外拨电话,在号码前面+888888

package liudeli.croadcast1.br;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
 * 订阅接收者:专门接收Android操作系统拨号发出的广播
 * 此接收者优先级1000是最高的,最先接收,所以才有机会修改相关操作
 */
public class CustomCallBroadcastReceiver extends BroadcastReceiver {

    private String TAG = "CustomCallBroadcastReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        //  参数六:初始值(拨打的号码)
        String initNumberValue = getResultData();
        Log.d(TAG, "获取Android操作系统初始的值:" + initNumberValue);

        /**
         * 设置初始值
         */
        setResultData("888888" + initNumberValue);
    }
}

Log:

12-17 21:48:02.491 2263-2263/liudeli.croadcast1 D/CustomCallBroadcastReceiver: 获取Android操作系统初始的值:15555

效果:

Android-操作系统拨打电话广播的处理第3张

 


设置电话病毒,永远打不出电话

package liudeli.croadcast1.br;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
 * 订阅接收者:专门接收Android操作系统拨号发出的广播
 * 此接收者优先级1000是最高的,最先接收,所以才有机会修改相关操作
 */
public class CustomCallBroadcastReceiver extends BroadcastReceiver {

    private String TAG = "CustomCallBroadcastReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        /**
         * 无法中断广播
         * 注意:⚠️ 这是无法中断广播的,因为Android操作系统拨号是使用 有序广播(指定接收者)
         */
        // abortBroadcast();

        /**
         * 既然无法中断广播,我就把号码设置为null,就永远打不出去了
         */
        setResultData(null);


    }
}

Android-操作系统拨打电话广播的处理第4张


此接收者是最先接收到拨打电话的信息的,所以此接收者还可以做很多其他的事情

免责声明:文章转载自《Android-操作系统拨打电话广播的处理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MongoDB学习笔记(二)访问权限MicroPython基础知识总汇下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Tomcat模型结构

一、请求过程 Tomca的两大组件:Connecter和Container Connecter组件 1、Connecter将在某个指定的端口上侦听客户请求,接收浏览器的发过来的 tcp 连接请求,创建一个 Request 和 Response 对象分别用于和请求端交换数据,然后会产生一个线程来处理这个请求并把产生的 Request 和 Response...

在ASP.NET Core跨平台应用程序开发中如何捕获并处理全局异常

问题描述 在传统的ASP.NET Web Api 应用程序开发中,我们处理全局异常的方法通常是实现一个ExceptionFilterAttribute的子类,如下: public classErrorHandlingFilter : ExceptionFilterAttribute { public override voidOnException...

TOMCAT原理详解及请求过程(转)

https://www.cnblogs.com/hggen/p/6264475.html TOMCAT原理详解及请求过程 Tomcat: Tomcat是一个JSP/Servlet容器。其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。 Tomcat目录: tomcat|---bin:...

canvas基础绘制矩形(1)

1、canvas基础知识 canvas元素是HTML5中新增的一个重要的元素,专门用来绘制图形,不过canvas本身不具备画图的能力,在页面中放置了canvas元素,就相当于在页面中放置了一块矩形的“画布”,我们可以利用js脚本在“画布”上绘制图形。 1.1canvas元素  在利用canvas绘制图形之前,我们首先需要在页面中放置一个canvas元素,...

Asp.net 使用weboffice实现Word在线编辑

项目中客户需要在页面中实现Word的在线编辑,Word写保护等功能。之前写了篇文章,用的是dsoframer.ocx,参考的都是网络上的资源。用的时候页面卡, 而且word2003和word2007有问题。现在找了个另外一个组件,点聚公司的weboffice,还不错。主要是免费的。 关于weboffice的使用,大家可以看看官网,他那有演示。我这也把我找的...

全局图片防盗链处理

概念:防盗链是指用户不经过我们的网站直接访问我们的图片 我们给他一个错误的图片处理 原理:获取当前与上一次请求的url 对其进行网站域名与端口号比较 如果相同则返回真实图片(如果从别的网站链接过来不可能返回true)否则返回错误图片 过程: 1、新建一个一般处理程序处理 2、在webconfiguration中添加httpHandlers节点信息 pu...