AndroidIntent意图 : 基本使用

青春须早为,岂能长少年。这篇文章主要讲述AndroidIntent意图 : 基本使用相关的知识,希望能为你提供帮助。
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); } }}

【AndroidIntent意图 : 基本使用】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 voidshowTextView(){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); }}

 

    推荐阅读