android studio廣播機(jī)制使用詳解
Intent 是一種消息傳播機(jī)制,用于組件之間數(shù)據(jù)交換和發(fā)送廣播消息。通過(guò)本次實(shí)驗(yàn)了解 Android 系統(tǒng)的組件通信原理,掌握利用 Intent 啟動(dòng)其他組件的方法,以及利用 Intent 獲取信息和發(fā)送廣播消息的方法。
1、實(shí)現(xiàn)具有“登錄”按鈕的主界面,輸入用戶(hù)名、密碼,點(diǎn)擊登錄按鈕后,經(jīng)過(guò)判斷進(jìn)入一個(gè)廣播Activity(需要傳遞主界面的用戶(hù)名)
2、在廣播Activity中,輸入信息,點(diǎn)擊發(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="用戶(hù)名"/> ? ? ? ? ? <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ū)ο?
? ? ? ? //獲取用戶(hù)名
? ? ? ? Intent getuser=getIntent();
? ? ? ? String s=getuser.getStringExtra("user");
? ? ? ? text.setText(s);
? ? ? ? //動(dòng)態(tài)注冊(cè)廣播
? ? ? ? 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);
? ? ? ? ? ? ? ? //用戶(hù)輸入的用戶(hù)名密碼
? ? ? ? ? ? ? ? String user=users.getText().toString();
? ? ? ? ? ? ? ? String password=passwords.getText().toString();
? ? ? ? ? ? ? ? //系統(tǒng)內(nèi)包含的用戶(hù)名密碼
? ? ? ? ? ? ? ? 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);//傳遞用戶(hù)名
? ? ? ? ? ? ? ? ? ? startActivity(login);
?
? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? Toast.makeText(MainActivity.this,"用戶(hù)名不存在或密碼錯(cuò)誤",Toast.LENGTH_SHORT).show();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? Button out=(Button)findViewById(R.id.signout);
? ? ? ? out.setOnClickListener(new View.OnClickListener() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onClick(View view) {
? ? ? ? ? ? ? ? finish();
? ? ? ? ? ? }
? ? ? ? });
? ? }
}以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
AndroidUI組件SlidingTabLayout實(shí)現(xiàn)ViewPager頁(yè)滑動(dòng)效果
這篇文章主要介紹了AndroidUI組件SlidingTabLayout實(shí)現(xiàn)ViewPager頁(yè)滑動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
android如何獲取手機(jī)聯(lián)系人的數(shù)據(jù)庫(kù)示例代碼
很多人在做手機(jī)聯(lián)系人的apk時(shí)會(huì)遇到,如何獲取手機(jī)聯(lián)系人數(shù)據(jù)庫(kù)的問(wèn)題,本篇文章主要介紹了android如何獲取手機(jī)聯(lián)系人的數(shù)據(jù)庫(kù)示例代碼,有興趣的可以了解一下。2017-01-01
viewpager實(shí)現(xiàn)自動(dòng)循環(huán)輪播圖
這篇文章主要為大家詳細(xì)介紹了viewpager實(shí)現(xiàn)自動(dòng)循環(huán)輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01
Input系統(tǒng)截?cái)嗖呗缘姆治雠c應(yīng)用詳解
這篇文章主要為大家介紹了Input系統(tǒng)截?cái)嗖呗缘姆治雠c應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Android 進(jìn)度條顯示在標(biāo)題欄的實(shí)現(xiàn)方法
android進(jìn)度條顯示在標(biāo)題欄的實(shí)現(xiàn)方法,大概分文xml文件和java文件,具體代碼內(nèi)容大家可以通過(guò)本文學(xué)習(xí)下2017-01-01
Android實(shí)現(xiàn)文字滾動(dòng)播放效果的代碼
這篇文章主要介紹了Android實(shí)現(xiàn)文字滾動(dòng)播放效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
詳談Android中onTouch與onClick事件的關(guān)系(必看)
下面小編就為大家?guī)?lái)一篇詳談Android中onTouch與onClick事件的關(guān)系(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
Android RecyclerView 滾動(dòng)到中間位置的方法示例
這篇文章主要介紹了Android RecyclerView 滾動(dòng)到中間位置的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03

