Android之Intent

图片.png

一、显式意图和隐式意图

图片.png

1.1 显式

Android之Intent_第1张图片
图片.png
package com.example.jony.appdemo1;

import android.content.ComponentName;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private Button btn_one;
    private Button btn_two;
    private Button btn_three;
    private Button btn_four;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn_one = (Button) findViewById(R.id.btn_one);
        btn_two = (Button) findViewById(R.id.btn_two);
        btn_three = (Button) findViewById(R.id.btn_three);
        btn_four = (Button) findViewById(R.id.btn_four);

        btn_one.setOnClickListener(this);
        btn_two.setOnClickListener(this);
        btn_three.setOnClickListener(this);
        btn_four.setOnClickListener(this);

//        btn_one.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//                System.out.println("点击按钮1");
//                Intent intent = new Intent();
//                intent.setClass(MainActivity.this, Activity1.class);
//                startActivity(intent);
//            }
//        });

    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn_one:
                Intent intent1 = new Intent();
                intent1.setClass(this, Activity1.class);
                startActivity(intent1);
                break;

            case R.id.btn_two:
                Intent intent2 = new Intent();
                intent2.setClassName(this, "com.example.jony.appdemo1.Activity1");
                startActivity(intent2);
                break;

            case R.id.btn_three:
                Intent intent3 = new Intent();
                //可以打开其他应用的Activity
                intent3.setClassName("com.example.jony.appdemo1", "com.example.jony.appdemo1.Activity1");
                startActivity(intent3);
                break;

            case R.id.btn_four:
                Intent intent4 = new Intent();
                intent4.setComponent(new ComponentName(this, Activity1.class));
                startActivity(intent4);
                break;

            default:
                break;
        }

    }
}

1.2 隐式

作用:可用于分享给与自身配置了同样的intent-filter的应用程序

        
            
                
                
            
        
         case R.id.btn_five:
                Intent intent5 = new Intent();
                intent5.setAction("com.appdemo1.activity2");
                intent5.addCategory(Intent.CATEGORY_DEFAULT);
                startActivity(intent5);
                break;

二、 Intent Filter

startActivity(intent5)
-->将intent传给所有的Activity组件
-->s首先排除没有配置Intent Filter的Activity组件
-->过滤器对Intent Filter的内容进行匹配(所有的程序)
-->如果没有匹配的则报错,匹配的显示,让用户选择

图片.png

你可能感兴趣的:(Android之Intent)