Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1876|回复: 0
打印 上一主题 下一主题

Android中的Intent和Intent-filter总结

[复制链接]

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
跳转到指定楼层
楼主
发表于 2018-7-25 17:13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一.相关概念
(一)基本概念

     Intent中文意思指”意图”,按照Android的设计理念,Android使用Intent来封装程序的”调用意图”,不管启动Activity、Service、BroadcastReceiver,Android都使用统一的Intent对象来封装这一”启动意图”。此外,Intent也是应用程序组件之间通信的重要媒介。在Android中指定的了具体是某个组件,那么就是显性意图;如果只是提出要求没有指定具体的某个人,在Android中即没有指定某个具体的组件,那么就是隐式意图;所有Intent页面跳转的方式又分为显示跳转和隐式跳转。

(二)Intent和三大组件 

Android应用程序包含三种重要组件:Activity、Service、BroadcastReceiver,应用程序采用一致的方式启动它们,都是依靠Intent来进行启动的,Intent中封装了程序要启动的意图。

      下面是Intent启动不同组件的部分方法:
     Activity组件:
     startActivity(Intent intent);startActivityForResult(Intent intent,int requestCode);
     Service组件:
     startService(Intent intent);bindService(Intent intent,ServiceConnection conn,int flags);
     BroadcastReceiver组件:
     sendBroadcast(Intent intent);sendOrderedBroadcast(Intent intent,String receiverPermission);

    二.Intent的使用

    这里的Intent使用,主要是使用它来执行页面的跳转功能。
    如果Intent对象中包含了目标的class文件,那么就是显示意图的跳转;如果Intent没有包含目标的class文件,就是隐式意图跳转,隐式意图跳转就涉及到比较多的Intent对象的属性值的比较。
    (一)Intent显式跳转页面

    其中实现跳转的java代码非常简单:

        Intent intent = new Intent(this, SecondActivity.class);
        startActivity(intent);

    其中具体实现是通过Intent的属性类Component来实现,不过Component类的方法都封装在Intent的方法里面了,不需要我们过多的去了解。
    这如果要传递数据也可以通过Intent对象使用putExtra方法来传递数据。
    这里的目标文件必须是要在AndroidManifest.xml里面注册。

    (八)几个简单示例的代码

/**
* 跳转到指定的网址页面
*/
public void toView(View v) {
    Intent intent = new Intent();
    //设置Data数据
    intent.setData(Uri.parse("http://www.baidu.com"));
    //设置Action数据
    intent.setAction(Intent.ACTION_VIEW);
    //页面跳转
    startActivity(intent);
}

/**
* 跳转到编辑联系人的信息
* 这里联系人的姓名是:1
*/
public void toEdit(View v) {
    Intent intent = new Intent();
    //设置Data数据
    intent.setData(Uri.parse("content://com.android.contacts/contacts/1"));
    //设置Action数据
    intent.setAction(Intent.ACTION_EDIT);
    //页面跳转
    try {
        startActivity(intent);
    } catch (Exception e) {
        Toast.makeText(this, "找不到该联系人!", Toast.LENGTH_SHORT).show();
    }
}

/**
* 跳转到拨打电话的页面
* Data可以设置电话号码
*/
public void toDial(View v) {
    Intent intent = new Intent();
    //设置Data数据
    intent.setData(Uri.parse("tel:13814236512"));
    //设置Action数据
    intent.setAction(Intent.ACTION_DIAL);
    //页面跳转
    startActivity(intent);
}

https://blog.csdn.net/wenzhi20102321/article/details/52876648

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-26 07:10 , Processed in 0.055872 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表