android几个自定义广播和系统广播的用法

uniapp和安卓的广播发布和接收机制 背景:app需要监听第三方app的广播获取应用凭证和用户凭证简介:广播注册主要分静态广播注册和动态广播注册,由于静态广播注册需要修改AndroidManifest.xml,所以uniapp上就没有采用静态注册。本人主要是参考安卓的广播机制,来实现uniapp的原生写法的广播机制(动态广播)。动态注册广播:它跟随 Activity 的生命周期。需要在 Activity 结束前,移除广播接收器。静态注册广播:当应用程序关闭后,如果有广播过来,程序也会被系统调用自动运行。... 阅读详情

1.无序广播和有序广播

    1.首先定义一个写发送内容的控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent" tools:context="com.example.android_sender.MainActivity">

   <EditText
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:hint="请输入要发送的广播:"
       android:id="@+id/rs_EditText"
       />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送"
        android:onClick="send"
        />
</LinearLayout>
    2.首先在java类里拿到要发送的内容,给这个广播定义一个名字加入Intent,选择发送类型即可。

     //无序广播
    sendBroadcast(intent);//发送无序广播

     可以把无序的替换成有序的,有序的可以设置接收广播的先后顺序
     intentFilter.setPriority(-100); 取值在-1000到1000大的先接收广播

    //有序广播
    //sendOrderedBroadcast(intent,null);//发送有序广播
package com.example.android_sender;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText) findViewById(R.id.rs_EditText);
    }
    public void send(View view){
       String content= editText.getText().toString();
        Intent intent=new Intent();
        //广播内容
        intent.putExtra("content",content);
        //广播名字
        intent.setAction("com.example.android_sender_Hug");
        //无序广播
        sendBroadcast(intent);//发送无序广播
    }
}
 3.接收广播写一个类继承 BroadcastReceiver 实现一个onCreate方法。
    接收广播有两种类型:一种是静态,另一种是动态,以下的是动态接收
package com.example.android_sender_received01;

import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    private Myreceived01 myreceived01;
    private IntentFilter intentFilter;

    //动态接收
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       myreceived01 = new Myreceived01();//自己写的类
        intentFilter = new IntentFilter();
        intentFilter.addAction("com.example.android_sender_Hug");
        intentFilter.setPriority(-100);//设置先后顺序
    }

    @Override
    protected void onResume() {
        super.onResume();
        //注册广播
        registerReceiver(myreceived01,intentFilter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //销毁
        unregisterReceiver(myreceived01);
    }
}
package com.example.android_sender_received01;

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

/**
 * Created by Administrator on 2017/7/11 0011.
 */

public class Myreceived01 extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if("com.example.android_sender_Hug".equals(intent.getAction())){
            //拿到广播内容
            String Scontent=  intent.getStringExtra("content");
            Log.i("text","1     "+Scontent.toString());
        }
    }
}

3.1以下的是静态接收

package com.example.android_sender_received02;

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

/**
 * Created by Administrator on 2017/7/11 0011.
 */

public class Myreceived02 extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if("com.example.android_sender_Hug".equals(intent.getAction())){
            String Scontent=intent.getStringExtra("content");
            Log.i("text","2     "+Scontent);
        }
    }
}




注意配置xml (动态不用配置)
  <receiver android:name=".Myreceived02">
    <intent-filter
        android:priority="1000"//设置先后顺序
        >//获取广播的名字
        <action android:name="com.example.android_sender_Hug"></action>
    </intent-filter>
</receiver>

2.监控接收来电和接受短信

1.接受来电
package com.example.android_phone;

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

/**
 * Created by Administrator on 2017/7/11 0011.
 */

public class Myphone extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {//打电话

            if("android.intent.action.PHONE_STATE".equals(intent.getAction())){
                TelephonyManager thm = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE);
                //拿到对方的手机号
            String phone=intent.getStringExtra("incoming_number");
                //获取当前状态
             int state=thm.getCallState();
                switch (state){
                    case TelephonyManager.CALL_STATE_RINGING://响铃 0
                        Log.i("text","响铃 "+phone);
                        break;
                    case TelephonyManager.CALL_STATE_IDLE://通话结束  2
                        Log.i("text","通话结束 "+phone);
                        break;
                    case TelephonyManager.CALL_STATE_OFFHOOK://接听  1
                        Log.i("text","接听 "+phone);
                        break;
                }
            }
    }

配置Xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android_phone">

    <!--读取电话状态的权限-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

    <application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true" android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name=".Myphone">
            <intent-filter><action android:name="android.intent.action.PHONE_STATE"></action></intent-filter>
        </receiver>
    </application>

</manifest>

2.接收短信

package com.example.android_sms;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;

/**
 * Created by Administrator on 2017/7/13 0013.
 */

public class Mymsm extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if("android.provider.Telephony.SMS_RECEIVED".equals(intent.getAction())){
            Bundle bundle=intent.getExtras();
            Object object[] = (Object[]) bundle.get("pdus");//拿到短信 
            SmsMessage sms[]=new SmsMessage[object.length];//处理短信的类
            for (int i = 0; i < object.length; i++) {
                sms[i]= SmsMessage.createFromPdu((byte[]) object[i]);//把拿到的短信内容加入处理短信的类
            }
            //遍历信息
            for (SmsMessage sm : sms) {
               String phone=sm.getDisplayMessageBody();//获取发送人
               String content= sm.getDisplayOriginatingAddress();//获取短信内容
                Log.i("text",phone+":="+content);
            }
        }
    }
}

配置Xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android_sms">
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
    <application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true" android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name=".Mymsm">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
            </intent-filter>
        </receiver>
    </application>

</manifest>
【android开发-15】android中广播broadcast用法详解 android中broadcast的详细用法说明和参考代码用例 阅读详情

相关推荐

vins-mono保存、重载地图、evo工具测试

下面咱们来对vins-mono的重定位vins-mono官方源码地址:https://github.com/HKUST-Aerial-Robotics/VINS-Mono https://blog.csdn.net/learning_tortosie/article/details/83182258 运行这条: roslaunch benchmark_publisher publish.launc...

追 1万+

Android中Intent详解

Intent简述: (一)、Intent基本介绍: 1、Intent 用于封装程序的”调用意图“。两个Activity之间,可以把需要交换的数据封装成Bundle对象,然后使用Intent携带Bundle对象,实现两个Activity之间的数据交换; 2、Intent还是各种应用程序组件之间通信的重要媒介。不管想启动一个Acitivity、Service还是BroadcastReceiver

lzy_tinyjoy 1912

逆向拆解dy接口a_bogus 1.0.1.19版本核心算法(纯算版)第二部分

本文深入解析了dy接口a_bogus 1.0.1.19版本的核心算法,重点介绍了逆向分析的基础方法论、魔改Base64编码识别与还原、随机数生成与位运算解析等关键技术。通过详细的代码示例和实用技巧,帮助开发者掌握逆向工程中的关键步骤,特别是针对a_bogus参数的生成逻辑和混淆处理。

weixin_29288313的博客 408

Andriod 广播

《第一行代码》,Broadcast广播的使用

m0_71045803的博客 206

芯片设计中的STA实战:如何避免时序违例(含常见问题解析)

本文深入探讨了芯片设计中静态时序分析(STA)的实战应用,重点解析了如何避免时序违例。文章从STA的核心逻辑与约束制定出发,强调了将时序意识植入RTL编码与综合阶段的重要性,并详细介绍了后端物理实现中的时序收敛策略。同时,针对跨时钟域路径误报、多工艺角违例等常见问题提供了深度解析与调试技巧,旨在帮助IC设计工程师系统性地掌握时序分析与优化方法。

open4的博客 513

飞牛fnNAS搭建私有云音乐库

本文介绍了在飞牛NAS上部署Navidrome音乐服务器的完整流程。首先创建音乐存储目录并安装Navidrome应用,然后配置管理员账号、语言设置和音乐路径。接着详细说明使用"音乐标签"软件刮削音乐元数据的方法,包括获取软件、导入音乐文件和自动匹配标签。针对远程访问需求,推荐使用ZeroTier实现内网穿透,并给出注册、创建网络及设备加入的具体步骤。最后介绍移动端使用"音流"APP连接Navidrome服务器的配置方法,实现手机端音乐播放。通过这套方案,用户可以搭建专

dgnankai的专栏 1823

Android——BroadcastReceiver广播机制(自定义广播)

普通广播可见: Android——广播 1. 概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。 广播作为Android组件间的通信方式,可以使用的场景如下: 1.同一app内部的同一组件内的消息通信(单个或多个线程之间); 2.同一app内部的不同组件之间的消息通信(单个进程); 3.同一app具有多个进程的不同组件之间的消息通信; 4.不同app之间的组件之间消息通信; 5.Android系统在特定情况下与Ap

Yawn 6125

树莓派 5 AI 套件(Hailo)示例

该用户自定义类作为输入传递给回调函数,该函数在管道输出上运行。它用于主程序与回调函数之间的通信。它对 hailo_rpi_common::app_callback_class 进行了扩展,并可根据应用程序的具体情况定制附加变量和方法。

机器人控制与仿真应用 4115

Android - 自定义广播

   自定义广播,为了方便各个组件之间的通信,有时我们会采用类似系统广播的机制来进行通信,因此就需要自定义一个特定的广播,当接收者收到广播后就会产生相应的动作。    以下简单演示一个自定义的广播,以及通过配置指定权限和代数据的方法。    首先创建 MainActivity 的 类,然后再创建 onCreate 和 click 这两种方法,其中 click 方法,主要通过意图过滤器去实现发送自定义广播。    创建 MyReceiver 的类,并继承 BroadcastReceiver这个类。添

weixin_48591974的博客 2752

LLaMA Factory多卡微调的实战教程(持续更新)

本文主要介绍了LLaMA Factory多卡微调的实战教程(持续更新),希望对学习大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 配置环境 2.1 安装虚拟环境 2.2 安装依赖库 2.3 模型选型与下载 2.4 配置多卡环境 3. 运行代码 3.1 构建训练数据 3.2 修改配置文件 3.3 微调 3.3.1 zero3微调 3.3.2 启动API 3.3.3 模型测试

herosunly的博客 25万+

如何使用 Python 爬虫获取猫眼电影数据:电影评分与评论分析

随着互联网的快速发展,越来越多的人开始使用各种在线平台来了解电影信息,猫眼电影作为一个非常流行的在线电影票务平台,提供了详细的电影评分、评论和票房数据。本篇博客将详细介绍如何使用 Python 爬虫技术获取猫眼电影平台上的电影数据,重点关注电影评分和用户评论的爬取,分析其背后的数据处理和反爬虫技术。如果你对数据分析、电影评论分析等话题感兴趣,可以根据本文的示例进一步深入挖掘更多的数据,为决策提供支持,或为电影产业的相关研究提供有价值的分析依据。有些猫眼电影的页面数据是动态加载的,使用。

2201_76125261的博客 1623

安卓广播机制讲解(标准广播和有序广播)

安卓广播机制讲解 广播分为标准广播和有序广播 标准广播(Normal broadcasts)是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序可言。这种广播的效率会比较高,但同时也意味着它是无法被截断的。标准广播的工作流程如图所示。 有序广播(Ordered broadcasts )则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。所以此时

天行健 君子以自强不息,地势坤 君子以厚德载物。 5131

手把手教你学Simulink——基于经典PID控制的电机系统场景实例:步进电机PID位置控制系统的实现

步进电机(Stepper Motor)是一种将电脉冲信号转化为角位移的执行元件,具有结构简单、控制方便、定位精度高等优点,广泛应用于数控机床、机器人、打印机、3D打印机等需要精确定位的场合。传统的步进电机多采用开环控制,但在高速或负载变化较大的情况下容易出现丢步、振荡等问题。为提高控制精度与响应性能,闭环PID控制被引入步进电机的位置控制中,通过编码器或旋转变压器等反馈装置,实现高精度、高稳定性的位置控制。本教程将带你使用构建一个基于PID控制的步进电机位置控制系统仿真模型步进电机建模。

MHD0815的博客 9688

Android 发送系统广播与自定义广播

android系统会发送许多系统级别的广播,比如屏幕关闭,电池电量低等广播。同样应用可以发起自定义“由开发者定义的”广播。 (1)发送自定义的广播package com.hmkcode.android;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.

u010410851的博客 1930

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android发送自定义广播

在Android中,自定义广播(Custom Broadcasts)主要用于应用程序内部或不同应用程序之间的通信。它们是Android四大组件之一——BroadcastReceiver——的主要功能之一。组件间通信:应用程序的不同部分(如不同的Activity、Service或BroadcastReceiver)之间可以使用自定义广播来传递信息。例如,当一个Activity需要通知另一个Activity某个事件发生时,可以发送一个自定义广播。系统事件监听。

全栈 2098

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android studio中广播的用法

目录 1、动态方法: 2、静态注册广播 3、发送和接收自定义广播 4、跨程序接收广播 广播有两种,静态广播和动态广播。 1、动态方法: 重写广播接收器,用来接受广播,并根据接受到的广播进行操作。可以在上下文中重写,或者重写在一个新的文件中。 class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context conte

weixin_42536406的博客 4706

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

安卓发送广播和接收广播

1,发送广播 Log.i("MyTag", "onClick: 发送广播"); Intent intent = new Intent(); intent.setAction("yangLiWei"); intent.setComponent(new ComponentName("com.exampl...

Yangliwei的博客 4673

Android O Android P 自定义开机广播

背景 一般来说,我们都是用的监听android.intent.action.BOOT_COMPLETED。 但凡稍有些经验的开发者都知道,这个广播很慢,非常慢。因为它是一个有序广播,根据优先级来的,而且监听这个广播的apk又非常多。打个log感受一下,这个广播开始到结束在我司的机器上持续了30s! 关键是你把优先级调高了,即便你是前几个收到android.intent.action.BO...

Mis_wenwen的博客 5540

安卓自定义权限广播

安卓发送自定义权限广播与接收

qq_34453595的博客 1960

【Android】安卓四大组件之广播

【Android】安卓四大组件之广播 前言 这一大章节学习的是Android的广播事件,用来发送广播或者监听广播。 1、什么是广播 Broadcast是android中的四大组件之一,是在组件之间传播数据(Intent)的一种机制。广播的发送者和接收者事先是不需要知道对方的存在的。这样带来的好处便是,系统的各个组件可以松耦合地组织在一起,这样系统就具有高度的可扩展性,容易与其它系统进行集成。 广播具有以下特性: 广播接收者的生命周期是非常短暂的,在接收到广播的时候创建,onReceive()方法结束之后销

woodwhale的博客 2507

【Android】自定义广播和有序广播、截断广播

一、自定义广播 1、继承于广播接收器 新建一个类,继承于BroadcastReceiver,并且重写onReceive()方法,在此方法里实现自己的业务逻辑 public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, In...

冰冷的希望的博客 1943

【Android】安卓四大组件之广播知识总结

Override// 获取布局中的按钮并设置点击事件监听器@Override// 创建一个 Intent,指定广播的动作// 设置广播只发送给当前应用的接收器// 发送广播});@OverrideToast.makeText(context, "在 MyBroadcastReceiver 中接收", Toast.LENGTH_LONG).show();@Override。

Patrick_yuxuan的博客 1367

Android监听系统广播 和自定义广播遇到的问题

现在有一个项目需要做一个开机自启动的功能,这个怎么实现呢?一顿咔咔咔百度,发现很多推荐 使用监听系统开机广播BOOT_COMPLETED,CONNECTIVITY_CHANGE 来实现。那好吧  我也这么来做。先写一个RootReceiver  extends BroadcastReceiver   ,在onReceiver中  做自己想做的逻辑   ,然后在mianfest中注册 BOOT_C

qq_26645065的博客 2268

【Android】系统广播

这是因为Android中的每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会收到自己所关心的广播内容,这些广播可能是来自于系统的,也可能是来自于其他应用程序的。Android提供了一套完整的API,允许应用程序自由地发送和接收广播。发送广播的方法其实之前稍微提到过,如果你记性好的话,可能还会有印象,就是借助我们第3章学过的Intent。而接收广播的方法则需要引入一个新的概念——BroadcastReceiver。

2303_79296612的博客 1241

Android发送自定义广播

Android发送自定义广播

Android应用开发工程师 1671
上一篇: android系统广播大全
下一篇: android内容提供者
殇丶
博客等级 码龄10年 35粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值