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意图 : 基本使用的主要内容,如果未能解决你的问题,请参考以下文章

Intent的基本使用

Android显式意图和隐式意图

Android学习笔记 Intent

Android--Intent(意图)

Android 之 Intent(意图)

Android intent传输数据intent通过bundle传输数据