• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 安卓第十一天笔记-Intent与inter-filter配置,intentfilter

安卓第十一天笔记-Intent与inter-filter配置,intentfilter

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了安卓intentfilter,安卓intent,安卓intent传值,安卓intent页面跳转,安卓intent跳转等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

安卓第十一天笔记-Intent与inter-filter配置,intentfilter


安卓第十一天笔记-Intent与inter-filter配置

Intent与inter-filter配置

1.Intent对象简述

Android应用中有包含三种重要组件:Activity,Service,BroadcastReceiver(另外还有一个ContextProvider)应用程序采用了一致的方式来启动它们---都是依靠Intent来启动的,Intent就是封装了程序想要启动的程序的意图,不仅如些,Intent还可用于与被启动组件交换信息

Activity:

  startActivity(Intent intent)
     startActivityForResult(Intent intent,int requestCode)

 

Service:

    ComponentName startService(Intent intent)
    boolean bindServcie(Intent intent,ServiceConnection conn,int flags)

 

BroadcastReceiver

   sendBroadcast(Intent intent)
    sendBroadcast(Intent intent,String receiverPremission)
    sendOrderedBroadcast(Intent intent,String receiverPremission,BroadcastReceiver resultReceiver,Handler scheduler,int initiaCode,String initialData,Bundle initiaExtras)
    sendOrderBroadcast(Intent intent,String receiverPermission)
    sendStickyBroadcast(Intent intent),
    sendStickyOrderdBroadcast(Intent intent,BroadcastReceiver resultReceiver,Handler scheduler,int initiaCode,String initialData,Bundle initiaExtras)

 

2.Intent对象的属性

大致包含:Component,Action,Category,Data,Type,Extra,Flag这7种属性,其中Component用于明确指定需要启动的目标组件,而Extra用于携带需要交换的数据

3.Component属性

Intent的Component属性需要接受一个ComponentName对象,ComponentName包含如下构造器

ComponentName(String pkg,String cls)
//创建PKG据在包下的cls类所对应的组件
ComponentName(Context pkg,String cls)
//创建PKG据在包下的cls类所对应的组件
ComponentName(Context pkg, Class<?> cls)
//创建PKG据在包下的cls类所对应的组件

 

同时还有如下三个方法

setClass(Context packageContext,Class<?> cls)
//设置该 Intent将要启动的组件对应的类
setClassName(Context packageContext,String className)
//设置该Intent将要启动的组件对应 的类名,要全路径
setClassName(String packageContext,String className)
//设置该Intent将要启动的组件对应 的类名,要全路径

 

Context代表访问应用环境信息的接口,而Android应用的包名则作为应用的唯一标识,因此 Android应用的Context对象与该应用的包名有一一对应的关系 Component属性的Intent已经明确了它将要启动哪个组件,因此这种Intent也被称为显示意图 常用来启动同一个应用程序中组件 而没有指定Componet属性的Intent被称为隐式意图,隐式意图没有明克指定去启动哪个组件,就用将会根据Intent指定的规则去启动符合条件的组件,具体是哪个不确定

*使用显示意图启动另一个Activity

 /**
 * 显示意图打开第二个Activity
 * @param v
 */
public void open02(View v){
     //创建一个Compon对象
    ComponentName comp = new ComponentName(this,SecondActivity.class);

    Intent intent = new Intent();
    //为Intent设置Compon属性
    intent.setComponent(comp);
    //启动
    startActivity(intent);
}

 

第二个Activity

tv = (TextView) findViewById(R.id.tv);
    //得到Intento
    Intent intent = getIntent();

    //获取Componet
    ComponentName comp = intent.getComponent();

    tv.setText("包名" + comp.getPackageName() + ",组件名称:" + comp.getClassName());

 

更改启动Intent的写法

/**
 * 显示意图打开第二个Activity
 * @param v
 */
public void open02(View v){


    Intent intent = new Intent();
    //为Intent设置属性
    intent.setClass(this,SecondActivity.class);
    //启动
    startActivity(intent);
}

 

下面这种写法更加简单明了

4.Action,Category属性与intent-filter

Action与Category属性的值都是一个普通的字符串 其中Action代表该Intent所要完成的动作(抽象)而Category刚用于Action增加额外的附加类别信息.通常Action会与Category属性结合使用

隐式意图启动一个Activity

<!--注册SecondActivity-->
    <activity android:name=".SecondActivity">
        <intent-filter>
            <!--添加动作名称可以随便写-->
            <action android:name="com.hello.SECOND"/>
            <!--类别如果是这个默认DEFAULT可以不写,但建议写上-->
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
    </activity>

 

启动一个Activity

    Intent intent = new Intent();
    //为Intent设置属性
    intent.setAction("com.hello.SECOND");
    intent.addCategory("android.intent.category.DEFAULT");
    //启动
    startActivity(intent);

 

*其中Action与Category都可以有多个值

//获取Action与Category的值
    String action = intent.getAction();

  Set<String> categories = intent.getCategories();

 

5.指定特定的Action与Category调用系统的Activity

Android系统内部提供了大量的标准的Action与Category常量

*返回桌面

 /*
返回桌面
 */
public void goDesk(View v){
    Intent intent = new Intent();
    //写字符串
    intent.setAction("android.intent.action.MAIN");
    //写字符串
    intent.addCategory("android.intent.category.HOME");
    //启动
    startActivity(intent);

}

 

*使用系统提供好的

    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    startActivity(intent);

 

6.Data Type与intent-filter配置

Data属性常用于向Action属性提供操作的数据.Data属性接收一个URI的对象,一个uri对象通常通过如下字符串的形式

content://com.android.contacts/contacts/1 tel://110

*uri字符串满足以下格式

schema://host:prot/path

content:是schema部分 com.android.contacts是host部分 port是80省略了 /contacts/1是path部分

Type属性用于指定该Data所指定的URI对应 的MIME类型,这种MIME类型可以是任意任何自定义的MIME类型只要符合ABC/XYZ格式的字符即可

Data属性与Type属性关系比较微妙,这两个属性相互覆盖

  • 如果为Intent先设置Data属性,后设置Type属性,那么Type属
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 安卓第十一天笔记-Intent与inter-filter配置,intentfilter

相关文章

  • 2017-05-26linux命令之tcpdump
  • 2017-05-26Android中ListView实现图文并列并且自定义分割线(完善仿微信APP),androidlistview
  • 2017-05-26Apache Cordova开发Android应用程序——番外篇,cordovaandroid
  • 2017-05-26Android简单的ListViewDemo及每个控件的点击事件,listview控件点击事件
  • 2017-05-26ListView添加头布局和脚布局,listview添加布局
  • 2017-05-26菜单(Menu)的三中创建方式——Android开发之路2,menuandroid
  • 2017-05-26翻翻git之---一个丰富的通知的工具库 NotifyUtil
  • 2017-05-26did not call through to super.onCreate(),didsuper.oncreate
  • 2017-05-26SDK manager.exe 运行时报错:系统找不到指定的文件 android.bat,sdkmanager.bat
  • 2017-05-26Android 学习之路,android学习之路

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 7.3.2 Android 文件下载(1)
    • Android Studio混淆打包错误
    • Android之TextView,androidtextview
    • Android第四天,神秘封印礼盒第四天
    • Android中使用Notification实现普通通知栏(Notification示例一),rest示例java实现
    • 安卓开发 第一篇 关于依赖注入框架dagger2的使用和理解
    • Android Studio多渠道打包
    • Android:让WebView支持&lt;input type=”file”…&gt;元素,androidwebview
    • 一个现代化的JSON库Moshi针对Android和Java,jsonandroid
    • Linux目录与文件权限的意义

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有