Android Intent意图(一):基本使用
Intent(意图)主要是解决Android应用的各项组件之间的通讯。
对于intent主要的分类主要包括隐式意图和显式意图。显式意图通常主要是启动本应用中的Activity之间的数据,而隐式意图则常见于启动系统中的某些特定的动作,比如打电话,或者是跨应用的Activity启动。
通常来说:
显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。
一、显示意图: 数据传递、跳转Activity、跳转ThirdApk
1.1 Send
AndroidManifest.xml 注册SecondActivity
<activity android:name=".SecondActivity" android:label="SecondActivity"> </activity>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="btn1" android:textSize="32sp" /> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="btn2->senddata" android:textSize="32sp" /> <Button android:id="@+id/btn3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="btn3" android:textSize="32sp" /> <Button android:id="@+id/btn4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="btn4" android:textSize="32sp" /> </LinearLayout>
MainActivity.java
package com.gatsby.send; import android.content.ComponentName; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button btn1, btn2, btn3, btn4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } public void initView() { btn1 = (Button) findViewById(R.id.btn1); btn2 = (Button) findViewById(R.id.btn2); btn3 = (Button) findViewById(R.id.btn3); btn1.setOnClickListener(this); btn2.setOnClickListener(this); btn3.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn1: //显示意图 跳转Activity startActivity(new Intent(MainActivity.this, SecondActivity.class)); break; case R.id.btn2: //显示意图 跳转第三方应用 Intent传递数据 Intent intent2 = new Intent(); intent2.setClassName("com.gatsby.recevier", "com.gatsby.recevier.MainActivity"); intent2.putExtra("name", "路明非"); intent2.putExtra("age", 25); intent2.putExtra("fight", 800.65); startActivity(intent2); break; case R.id.btn3: //显示意图 跳转第三方应用 ComponentName Intent intent3 = new Intent(); ComponentName componentName = new ComponentName("com.gatsby.recevier", "com.gatsby.recevier.MainActivity"); intent3.setComponent(componentName); startActivity(intent3); } } }
1.2 Recevier
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="thirdApk" android:textSize="64sp" /> </LinearLayout>
MainActivity.java
package com.gatsby.recevier; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { TextView tv1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); showTextView(); } public void initView(){ tv1 = (TextView)findViewById(R.id.tv1); } public void showTextView(){ Intent intent = getIntent(); String name = intent.getStringExtra("name"); int age = intent.getIntExtra("age", 18); double fight = intent.getDoubleExtra("fight", 0.0); tv1.setText("name:" + name + " ,age:" + age + " ,fight:" + fight); } }
分类:
Android Basics
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】