android studio广播机制使用详解

Intent 是一种消息传播机制,用于组件之间数据交换和发送广播消息。通过本次实验了解 Android 系统的组件通信原理,掌握利用 Intent 启动其他组件的方法,以及利用 Intent 获取信息和发送广播消息的方法。

1、实现具有“登录”按钮的主界面,输入用户名、密码,点击登录按钮后,经过判断进入一个广播Activity(需要传递主界面的用户名)

2、在广播Activity中,输入信息,点击发送广播按钮发送广播,并且在广播接收器中接收广播并显示。

activity.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_height="match_parent"
    tools:context=".MainActivity">
    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:useDefaultMargins="true"
        android:columnCount="4">
        <TextView
            android:layout_columnSpan="1"
            android:layout_gravity="right"
            android:text="用户名"/>
 
        <EditText
                android:ems="16"
                android:layout_columnSpan="3"
                android:id="@+id/user"/>
        <TextView
            android:layout_columnSpan="1"
            android:layout_gravity="right"
            android:layout_column="0"
            android:text="密码"/>
 
        <EditText
            android:ems="16"
            android:layout_columnSpan="3"
            android:id="@+id/password"/>
        <Button
            android:text="登录"
            android:id="@+id/signin"
            android:layout_column="1"
            android:layout_gravity="fill_horizontal"/>
        <Button
            android:text="退出"
            android:id="@+id/signout"
            android:layout_column="2"
            android:layout_gravity="fill_horizontal"/>
 
    </GridLayout>
 
 
</androidx.constraintlayout.widget.ConstraintLayout>

activity_my_brocast_reveicer.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_height="match_parent"
    tools:context=".MySendBrocastReceiver">
    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:useDefaultMargins="true"
        android:columnCount="4">
        <LinearLayout
            android:layout_columnSpan="1"
            android:orientation="horizontal">
            <TextView
                android:layout_gravity="left"
                android:text="欢迎你"
                android:layout_height="match_parent"
                android:layout_width="match_parent"/>
            <TextView
                android:layout_gravity="left"
                android:id="@+id/name"
                android:layout_height="match_parent"
                android:layout_width="match_parent"/>
        </LinearLayout>
        <EditText
            android:ems="16"
            android:layout_column="0"
            android:layout_columnSpan="3"
            android:id="@+id/text"/>
        <Button
            android:text="发送广播"
            android:id="@+id/send"
            android:layout_column="0"
            android:layout_gravity="fill_horizontal"/>
 
    </GridLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

MyReceiver.java

package com.example.intendbrocastreceiver;
 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
 
public class MyReceiver extends BroadcastReceiver {
 
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.
        String name=intent.getStringExtra("name");
        Toast.makeText(context,name,Toast.LENGTH_LONG).show();
    }
}

MySendBrocastReceiver.java

package com.example.intendbrocastreceiver;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
import org.w3c.dom.Text;
 
public class MySendBrocastReceiver extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_send_brocast_receiver);
 
        TextView text=(TextView)findViewById(R.id.name);//文本框对象
        //获取用户名
        Intent getuser=getIntent();
        String s=getuser.getStringExtra("user");
        text.setText(s);
        //动态注册广播
        MyReceiver myreceicer=new MyReceiver();
        IntentFilter intentfilter=new IntentFilter();
        intentfilter.addAction("com.example.intentdbrocastreceiver.send");
        registerReceiver(myreceicer,intentfilter);
 
        Button but_send=(Button)findViewById(R.id.send);
        but_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EditText text=(EditText)findViewById(R.id.text);
                String te=text.getText().toString();
 
                Intent intent=new Intent();
                intent.setAction("com.example.intentdbrocastreceiver.send");
                intent.putExtra("name",te);//传递
                sendBroadcast(intent);//发送广播
            }
        });
    }
}

MainActivity.java

package com.example.intendbrocastreceiver;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button signin=(Button)findViewById(R.id.signin);
        signin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EditText users=(EditText)findViewById(R.id.user);
                EditText passwords=(EditText)findViewById(R.id.password);
                //用户输入的用户名密码
                String user=users.getText().toString();
                String password=passwords.getText().toString();
                //系统内包含的用户名密码
                String myuser="123";
                String mypassword="666";
                if(user.equals(myuser)&&password.equals(mypassword)){
                    Intent login=new Intent();
                    login.setAction("android.intent.action.sendbrocast");
                    login.putExtra("user",user);//传递用户名
                    startActivity(login);
 
                }else{
                    Toast.makeText(MainActivity.this,"用户名不存在或密码错误",Toast.LENGTH_SHORT).show();
                }
            }
        });
        Button out=(Button)findViewById(R.id.signout);
        out.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android 零基础到精通之广播机制

    目录 广播机制简介 接收系统广播 1. 动态注册监听时间变化 2. 静态注册实现开机启动 发送自定义广播 1. 发送标准广播 2. 发送有序广播 广播机制简介 Android 中的广播主要分为两种类型: 标准广播:一种异步执行的广播,广播发出后,所有的 BroadcasterReceiver 几乎会在同一时刻受到这条广播消息,没有任何时间顺序 有序广播:一种同步执行的广播,广播发出后,同一时刻只有一个 BroadcasterReceiver 能够接受这条广播消息,当该 BroadcasterRe

  • Android BroadcastReceiver广播机制概述

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

  • Android开发之广播机制浅析

    对于了解Android程序设计的人都知道,广播是Android开发中的一个重要的功能,在Android里面有各式各样的广播,比如:电池的状态变化.信号的强弱状态.电话的接听和短信的接收等等,今天本文就来给大家简单介绍一下系统发送.监听这些广播的机制. Android中的广播机制基本如下图所示: 那广播在Android程序中到底是如何运行的呢?下面将以代码的形式给大家好好分析一下: 一.发送广播 Intent是Activity中发送广播的桥梁,通过他我们可以轻松的将广播发送到系统中,具体的实现如下

  • android studio广播机制使用详解

    Intent 是一种消息传播机制,用于组件之间数据交换和发送广播消息.通过本次实验了解 Android 系统的组件通信原理,掌握利用 Intent 启动其他组件的方法,以及利用 Intent 获取信息和发送广播消息的方法. 1.实现具有“登录”按钮的主界面,输入用户名.密码,点击登录按钮后,经过判断进入一个广播Activity(需要传递主界面的用户名) 2.在广播Activity中,输入信息,点击发送广播按钮发送广播,并且在广播接收器中接收广播并显示. activity.xml <?xml ve

  • Android pdf viewer在android studio应用问题说明详解

    之前一直是做.NET开发的,最近需要弄一个新闻app,能力有限,只能借助HTML5 WebAPP+android studio来完成这项工作. android studio主要用WebView来加载发布好的WebApp,打包生产APP. 其中由于显示一些pdf文档,所以研究了一下,记录一下心得,同时也希望帮助到新手们. android 显示网络pdf,基本原理:先将pdf文件通过DownloadManager下载到手机sdk某个文件夹中,然后通过android-pdf-viewer插件进行显示.

  • sweet alert dialog 在android studio应用问题说明详解

    看到这个sweet-alert-dialog很亲切,因为前端开发本人用的提示就是这个js插件,java牛人很厉害,直接弄成一个java包插件,Good! 下面记录如何引用到工程,并使用: sweet-alert-dialog插件可以直接到github上下载 地址:https://github.com/pedant/sweet-alert-dialog 或者直接到发布好的页面下载: https://github.com/pedant/sweet-alert-dialog/releases 我下载的

  • Android事件分发机制的详解

    Android事件分发机制 我们只考虑最重要的四个触摸事件,即:DOWN,MOVE,UP和CANCEL.一个手势(gesture)是一个事件列,以一个DOWN事件开始(当用户触摸屏幕时产生),后跟0个或多个MOVE事件(当用户四处移动手指时产生),最后跟一个单独的UP或CANCEL事件(当用户手指离开屏幕或者系统告诉你手势(gesture)由于其他原因结束时产生).当我们说到"手势剩余部分"时指的是手势后续的MOVE事件和最后的UP或CANCEL事件. 在这里我也不考虑多点触摸手势(我

  • Android Studio中debug功能详解

    本文为大家分享了Android Studio debug功能的具体使用方法,供大家参考,具体内容如下 运行debug模式 1. 进入debug - 点击图中红色圆圈圈起的左边绿色按钮,运行app的debug模式,快捷键Shift+F9 - 点击图中红色圆圈圈起的右边按钮,可以选择正在运行的进程attach debugger 1. 打断点:鼠标点击编辑框左侧,出现红色圆点 断点分类 这张图可以看出断点也有行断点.方法断点.字段断点.异常断点.其实打断点仔细观察也可以发现它们的标识图片是不同的,就是

  • Android View 绘制机制的详解

    View 绘制机制一. View 树的绘图流程 当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw.整个 View 树的绘图流程在ViewRoot.java类的performTraversals()函数展开,该函数所做 的工作可简单概况为是否需要重新计算视图大小(measure).是否需要重新安置视图的位置(layout).以及是否需要重绘(draw),流程图如下: Vie

  • android studio后台服务使用详解

    Service 是 Android 系统的服务组件,适用于开发没有用户界面且长时间在后台运行的功能.通过本次试验了解后台服务的基本原理,掌握本地服务的使用方法. 1.创建一个Service服务用来完成简单的求和和比较大小的数学运算.2.创建Activity并调用该数学Service activity_main.xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.

  • Android Studio OkHttpClient使用教程详解

    本次来记录下OkHttpClient的使用,OkHttpClient是用来完成android 客户端对服务端请求的工具. 首先记住,使用网络的时候一定要加入权限,加入到AndroidMainfest.xml中 <uses-permission android:name="android.permission.INTERNET" /> 在初次使用的时候会出现报错.cannot resolve symbol OkHttpClient 这里需要引入 implementation

  • Android studio 广播的简单使用代码详解

    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="htt

  • Android 广播接收器BroadcastReceiver详解

    目录 一.什么是BroadcastReceiver 1.1.作用 1.2.实现原理 二.创建广播接收器 三.注册广播接收器 3.1.静态注册 注册 发送通知 3.2.动态注册 四.系统广播 总结 一.什么是BroadcastReceiver BroadcastReceiver 是安卓系统中四大组件之一,在Android开发中,BroadcastReceiver的应用场景非常多,Android 广播分为两个角色:广播发送者.广播接收者. 1.1.作用 广播接收器用于响应来自其他应用程序或者系统的广

随机推荐