android界面跳转,Intent介绍

上一章我们讲了activity基本界面的实现。可是,上次讲的只有一个界面,在大部分APP中都是很多界面相互跳转的!那么,我们如何实现在不同的Activity或其他组件中进行跳转或者其他操作呢,带着这个疑问,今天给大家带来一个android开发中非常重要的组件,Intent。

         Intent负责对应用中的个大组件进行交互,每一次交互,我们将它视为一个动作,这个动作可能实际数据,附加数据。android则根据Intent的携带的数据,找到相应的组件,将Intent传递给他!那么在这里Intent就起到了一个媒介的作用!她为两个组件中通讯搭建了桥梁,为两个或多个组件提供互相调用的信息!

         Intent主要由两个分类,显式意图和隐式意图

 

1.      显式意图:多用于本应用将Activity间的通讯,调用Intent.setClass()方法为明确指定组件名是显式意图!明确指定了应该传递数据到哪个组件!

2.      隐式意图:没有明确指定组件名的为隐式意图,多用于跨应用启动Activity,如打电话什么的!

显式意图就不多说了,大家到网上一搜一大堆,我在这说一下隐式意图!

隐式意图包括:Action(动作),category(附加数据),Data(数据),Type(类型),其实这就跟我们上面说的差不多,隐式意图通过这几项构成了一个动作!举个小例子吧,在一些重要场合下,各种大拿见了女士要亲吻对方的手。首先亲吻的整个过程就是一个Action(动作),这位女士代表了Data,而Type就代表了这位女士的性别(这样写有点尴尬了,本来就是个女的),而亲吻过后在告诉这位女士欢迎你这就是category(附加数据)!好了,就这样吧!下面直接上实例!

拨打电话(调用的是SDK提供的方法),一定要AndroidMenifest文件里加上这个权限:<uses-permission android:name="android.permission.CALL_PHONE" />

package com.example.administrator.myapplication;

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

/**
 * Created by Administrator on 2017/3/11.
 */

public class DemoActivity extends Activity {

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

    private void initView() {
       Button playphone = (Button) findViewById(R.id.playphone);
        playphone.setOnClickListener(new Myplayphoneclick());

    }
    class Myplayphoneclick implements View.OnClickListener{

        @Override
        public void onClick(View v) {
            //拨打电话按钮的点击事件
            //实现拨打电话
            //实现方法隐式意图调用框架层提供的拨打点话功能
            //实例化Intent
            Intent intent = new Intent();
            //告诉应用我要干什么,
            intent.setAction(Intent.ACTION_DIAL);
            //创建Data,被执行对象
            Uri data = Uri.parse("tel"+"135076369xx");
            //设置被执行对象
            intent.setData(data);
            //开始拨打电话
            startActivity(intent);

        }
    }
}


有的哥们说,这么久了,一直都是调用系统提供的方法(可否自己实现一下,装一波),OK,没问题,下面实现自定义Intent隐式意图!



1.设置清单文件过滤器

 <activity android:name=".DemoActivity2">
            <!--过滤器-->
            <intent-filter>
                
                <!--自定义动作-->
                <action android:name="com.example.xxx"></action>
                <!--自定义(Scheme)与(host)-->

                <data android:host="www.baidu.com"
                    android:path="/person"
                    android:scheme="Demoxxx"></data>
                <!--自定义类型-->
                <data android:mimeType="person/people" />
                <!--附加类型-->
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
2.触发事件中实现,这个只是一个简单的样例,实际开发中,除非由特殊需求,否则很少用到自定义的!
 public void click(View v){
        Intent intent = new Intent();
        intent.setAction("com.example.xxx");
        intent.addCategory("android.intent.category.DEFAULT");
        intent.setDataAndType(Uri.parse("Demoxxx://www.baidu.com/person"),
                "person/people");
        startActivity(intent);
    }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值