Android Intent意图 : 基本使用
Posted Gatsby
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 Intent意图 : 基本使用的主要内容,如果未能解决你的问题,请参考以下文章