網站首頁 編程語言 正文
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();
? ? ? ? ? ? }
? ? ? ? });
? ? }
}
原文鏈接:https://blog.csdn.net/qq_57171795/article/details/125195248
相關推薦
- 2022-10-01 Golang?中的?unsafe.Pointer?和?uintptr詳解_Golang
- 2022-11-09 LyScript實現Hook隱藏調試器的方法詳解_python
- 2022-06-28 ASP.NET一次性對GridView批量更新多行數據_實用技巧
- 2022-12-30 解決React報錯Style?prop?value?must?be?an?object_React
- 2022-05-28 C語言數據結構超詳細講解單向鏈表_C 語言
- 2022-05-01 Python數據類型轉換匯總_python
- 2022-10-01 Android11及以上文件讀寫權限申請詳細介紹_Android
- 2022-07-10 css選擇器優先級問題
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支