码迷,mamicode.com
首页 > 移动开发 > 详细

Android Intent意图(一) : 基本使用

时间:2020-05-21 19:23:58      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:put   intent   指定   state   ble   tcl   隐式   manifest   case   

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意图(一) : 基本使用

标签:put   intent   指定   state   ble   tcl   隐式   manifest   case   

原文地址:https://www.cnblogs.com/crushgirl/p/12932624.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!