第五章 Android应用核心Intent

1 初识Intent

intent的作用就类似于快递员,在Activity之间传送信息。

第五章 Android应用核心Intent_第1张图片

 intent将联系人的信息带到了“联系人详情页”中第五章 Android应用核心Intent_第2张图片

 intent工作流程:

第五章 Android应用核心Intent_第3张图片

intent的基本作用:

  • 开启下一个Activity
  • 启动一个Service
  • 传递广播 

2 Intent对象的属性

2.1 Component name 

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                ComponentName componentName = new ComponentName("com.example.intent",
                        "com.example.intent.DetailActivity");
                intent.setComponent(componentName);
                startActivity(intent);
            }
        });

2.2 Action和Data

左边是Action,右边是Data。

第一行的意思是打开编辑联系人第一条的信息

第二行的意思是拨打电话10086

第三行的意思是打开mingribook.com网站

第五章 Android应用核心Intent_第4张图片

 第五章 Android应用核心Intent_第5张图片

 

package com.example.actiondata;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.media.Image;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

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

        ImageView phone = findViewById(R.id.phone);
        ImageView email = findViewById(R.id.email);

        View.OnClickListener cl = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ImageView imageView = (ImageView)v;
                Intent intent = new Intent();
                switch(imageView.getId()) {
                    case R.id.phone:
                        intent.setAction(Intent.ACTION_DIAL);
                        intent.setData(Uri.parse("tel:123456789"));
                        startActivity(intent);
                        break;
                    case R.id.email:
                        intent.setAction(Intent.ACTION_SENDTO);
                        intent.setData(Uri.parse("smsto:5554"));
                        startActivity(intent);
                        break;
                    default:
                        break;
                }
            }
        };
        phone.setOnClickListener(cl);
        email.setOnClickListener(cl);

    }
}
    
    

2.4 Action和Category

第五章 Android应用核心Intent_第6张图片

 

package com.example.actioncategory;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;

public class MainActivity extends AppCompatActivity {

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

        ImageButton imageButton = findViewById(R.id.imageButton);
        imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_MAIN);
                intent.addCategory(Intent.CATEGORY_HOME);
                startActivity(intent);
            }
        });
    }
}

2.5 Extras和Flags

Extras:就像前面的putExtras()和getExtras()一样,可以在Activity之间传递信息

Flags:emmm,啥栈啊啥玩意儿的,如下设置后可以不保存历史。

public class MainActivity extends AppCompatActivity {

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

        Button button = findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, DetailActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                startActivity(intent);
            }
        });
    }
}

2.6 Intent种类

2.6.1 显示Intent

明确知道要显示的是啥

第五章 Android应用核心Intent_第7张图片

 2.6.2 隐式Activity

第五章 Android应用核心Intent_第8张图片

 第五章 Android应用核心Intent_第9张图片

package com.example.implicitintent;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

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

        Button btn = findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("http://www.mingrisoft.com"));
                startActivity(intent);
            }
        });
    }
}

 2.7 Intent过滤器

第五章 Android应用核心Intent_第10张图片

在 Manifest文件中编写intent-filter

 第五章 Android应用核心Intent_第11张图片

 一般通过action+category或者action+data这两种方式来进行过滤第五章 Android应用核心Intent_第12张图片

 第五章 Android应用核心Intent_第13张图片

 

        
            
                
                
            
        
public class MainActivity extends AppCompatActivity {

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

        Button btn = findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_VIEW);
                intent.addCategory(Intent.CATEGORY_DEFAULT);
                startActivity(intent);
            }
        });

    }
}

你可能感兴趣的:(android,android)