android studio廣播機制使用詳解
Intent 是一種消息傳播機制,用于組件之間數(shù)據(jù)交換和發(fā)送廣播消息。通過本次實驗了解 Android 系統(tǒng)的組件通信原理,掌握利用 Intent 啟動其他組件的方法,以及利用 Intent 獲取信息和發(fā)送廣播消息的方法。
1、實現(xiàn)具有“登錄”按鈕的主界面,輸入用戶名、密碼,點擊登錄按鈕后,經(jīng)過判斷進入一個廣播Activity(需要傳遞主界面的用戶名)
2、在廣播Activity中,輸入信息,點擊發(fā)送廣播按鈕發(fā)送廣播,并且在廣播接收器中接收廣播并顯示。


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="發(fā)送廣播" ? ? ? ? ? ? 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);//文本框?qū)ο?
? ? ? ? //獲取用戶名
? ? ? ? Intent getuser=getIntent();
? ? ? ? String s=getuser.getStringExtra("user");
? ? ? ? text.setText(s);
? ? ? ? //動態(tài)注冊廣播
? ? ? ? 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);//發(fā)送廣播
? ? ? ? ? ? }
? ? ? ? });
? ? }
}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();
? ? ? ? ? ? ? ? //系統(tǒng)內(nèi)包含的用戶名密碼
? ? ? ? ? ? ? ? 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();
? ? ? ? ? ? }
? ? ? ? });
? ? }
}以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
AndroidUI組件SlidingTabLayout實現(xiàn)ViewPager頁滑動效果
這篇文章主要介紹了AndroidUI組件SlidingTabLayout實現(xiàn)ViewPager頁滑動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10
android如何獲取手機聯(lián)系人的數(shù)據(jù)庫示例代碼
很多人在做手機聯(lián)系人的apk時會遇到,如何獲取手機聯(lián)系人數(shù)據(jù)庫的問題,本篇文章主要介紹了android如何獲取手機聯(lián)系人的數(shù)據(jù)庫示例代碼,有興趣的可以了解一下。2017-01-01
viewpager實現(xiàn)自動循環(huán)輪播圖
這篇文章主要為大家詳細介紹了viewpager實現(xiàn)自動循環(huán)輪播圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-01-01
Input系統(tǒng)截斷策略的分析與應(yīng)用詳解
這篇文章主要為大家介紹了Input系統(tǒng)截斷策略的分析與應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02
詳談Android中onTouch與onClick事件的關(guān)系(必看)
下面小編就為大家?guī)硪黄斦凙ndroid中onTouch與onClick事件的關(guān)系(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
Android RecyclerView 滾動到中間位置的方法示例
這篇文章主要介紹了Android RecyclerView 滾動到中間位置的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03

