zoukankan      html  css  js  c++  java
  • Android Intent

    1.  Intent可以启动Activity,Service,Broadcast,Intent有以下几部分组成:动作,数据,分类,类型,组件,扩展信息,Intent在寻找目标组件时有两种方法:第一通过组件名称直接决定,第二通过Intent Filter过滤指定.

    2. Intent提供了多个重载的方法来携带额外的数据,最终数据都是放在Bundle中:
      • putExtras(Bundle data):向Intent中放入所需要携带的数据包
      • Bundle getExtras():获取Intent所携带的数据包
      • putExtras(String name, XXX value):向Intent中按key-value对的形式存入数据
      • getXxxExtra(String name):从Intent中按key取出指定类型的数据,Xxx:是不同的数据类型,如char,int等

    3. Bundle是一个简单的数据携带包,该对象中包含了多个方法来存入数据
      • putXxx(String key,Xxx data):向Bundle中放入Int,Long等各种类型的数据
      • putSerizlizable(String key,Serializable data):向Bundle中放入一个可序列化的对象
      • getXxx(String key):从Bundle中取出Int,Long等各种类型的数据
      • getSerializable(String key,Serializable data):从Bundle中取出一个可序列化的对象

    4. Intent中包含的信息主要有:
      • Action:是Intent要完成的动作,是个字符串常量,可以自定义,Intent.SetAction设置Action,系统有很多自定义Action,一个Intent只能包含一个Action
        Action常量 对应字符串 简单说明
        ACTION_MAIN android.intent.action.MAIN 应用程序入口
        ACTION_VIEW
        android.intent.action.VIEW
        显示指定数据
        ACTION_ATTACH_DATA
        android.intent.action.ATTACH_DATA
        指定某块数据将被附加到其他地方
        ACTION_EDIT
        android.intent.action.EDIT
        编辑指定数据
        ACTION_PICK
        android.intent.action.PICK
        从列表中选择某项并返回所选的数据
        ACTION_CHOOSER
        android.intent.action.CHOOSER
        显示一个Activity选择器
        ACTION_GET_CONTENT
        android.intent.action.GET_CONTENT
        让用户选择数据,并返回所选数据
        ACTION_DIAL
        android.intent.action.DIAL
        显示拨号面板
        ACTION_CALL android.intent.action.CALL
        直接向指定用户打电话
        ACTION_SEND
        android.intent.action.SEND
        向其他人发送数据
        ACTION_SENDTO
        android.intent.action.SENDTO
        向其他人发送消息
        ACTION_ANSWER
        android.intent.action.ANSWER
        应答电话
        ACTION_INSERT
        android.intent.action.INSERT
        插入数据
        ACTION_DELETE
        android.intent.action.DELETE
        删除数据
        ACTION_RUN
        android.intent.action.RUN
        运行数据
        ACTION_SYNC
        android.intent.action.SYNC
        执行数据同步
        ACTION_PICK_ACTIVITY
        android.intent.action.PICK_ACTIVITY
        用于选择Activity
        ACTION_SEARCH
        android.intent.action.SEARCH
        执行搜索
        ACTION_WEB_SEARCH
        android.intent.action.WEB_SEARCH
        执行Web搜索
        ACTION_FACTORY_TEST
        android.intent.action.FACTORY_TEST
        工厂测试的入口点

      • Data:是执行动作的URI和MIME类型,不同的Action有不同的Data数据指定,如在一个Intent中设置Action_View,Data设为www.baidu.com,StartActivity(intent)时就会打开baidu网站.MIME的格式为abc/xyz: 其中abc为数据的大类型,xyz为数据的具体类型,常一起使用的Action和data:
        • ACTION_VIEW content://contacts/people/1:显示identifier是1的person的信息
        • ACTION_DIAL content://contacts/people/1:显示电话拨号程序并填入该person的号码
        • ACTION_VIEW tel:123 :显示电话拨号程序并填入指定号码
        • ACTION_DIAL tel:123  :显示电话拨号程序并填入指定号码
        • ACTION_EDIT content://contacts/people/1:编辑指定person的信息
        • ACTION_VIEW content://contacts/people:显示people列表
      • Category:一个执行Action的附加信息,标准category有:
        Category常量 对应字符串 简单说明
        CATEGORY_DEFAULT android.intent.category.DEFAULT 默认的Category
        CATEGORY_BROWSABLE
        android.intent.category.BROWSABLE
        指定该Activity能被浏览器安全调用
        CATEGORY_TAB
        android.intent.category.TAB
        指定该Activity作为TabActivity的Tab页
        CATEGORY_LAUNCHER
        android.intent.category.LAUNCHER
        Activity显示顶级程序列表中
        CATEGORY_INFO
        android.intent.category.INFO
        用于提供包信息
        CATEGORY_HOME
        android.intent.category.HOME
        设置该Activity随系统启动而运行
        CATEGORY_PREFERENCE
        android.intent.category.PREFERENCE
        该Activity是参数面板
        CATEGORY_TEST
        android.intent.category.TEST
        该Activity是一个测试
        CATEGORY_CAR_DOCK
        android.intent.category.CAR_DOCK
        指定手机被插入汽车底座(硬件)时运行该Activity
        CATEGORY_DESK_DOCK
        android.intent.category.DESK_DOCK
        指定手机被插入桌面底座(硬件)时运行该Activity
        CATEGORY_CAR_MODE            
        android.intent.category.CAR_MODE
        设置该Activity可在车载环境下使用
      • Extras:添加一些组件的附加信息
      • Type:表示Data所指定Uri对应的MIME类型,type类型通常是从Data的Uri中隐式推导的,如果显示指定了type,隐式推导就不会进行。type与Data可能会相互覆盖,除非调用Intent的setDataAndType方法.在AndroidManifest.xml中为组件声明data,type属性都通过<data>元素,如下所示,mimeType表示该组件所匹配的intent的type属性
        <Activity>
        <intent-filter>
                         <action android:name="android.intent.action.GET_CONTENT" />
                         <category android:name="android.intent.category.DEFAULT" />
                         <data android:mimeType="vnd.android.cursor.item/vnd.google.note" />
        </intent-filter>
        </Activity>
      • Flag: 通常用Activity.launchMode属性替代Flag的作用
        public void startSite(View source) {
                Uri uri = Uri.parse("http://baidu.com");
                Intent it = new Intent(Intent.ACTION_VIEW, uri);
                startActivity(it);
            }
        
            public void startCalldial(View source) {
                Uri uri = Uri.parse("tel:0800000123");
                Intent it = new Intent(Intent.ACTION_DIAL, uri);
                startActivity(it);
            }
        
            public void startSms(View source) {
                Uri uri = Uri.parse("content://contacts/people/1");
                Intent it = new Intent(Intent.ACTION_VIEW, uri);
                it.putExtra("sms_body", "The SMS text");
                it.setType("vnd.android-dir/mms-sms");
                startActivity(it);
            }

    5. 当系统通过Intent启动指定的Activity时,如果系统没有找到合适的Activity,会导致程序异常,但通过Intent激发BroadcastReceiver时,如果找不到合适的BroadcastReceiver组件,应用不会有任何问题

    6. PendingIntent类是一种特殊的Intent,主要区别是Intent是立即执行,而PendingIntent不是立刻执行,pendingintent 执行的操作实际是参数传来的Intent操作,使用pendingintent的目的在于它所包含的Intent的操作的执行时需要满足某些条件的,主要使用的地方有:通知Notification的发送,短信SmsManager的发送和警报器AlarmManager的执行等,Intent与PendingIntent的区别如下:
      • Intent是立即使用的,PendingIntent可以等到事件发生后出发,比如当用户点击了通知栏的nocation的时候才会跳转到 应用的某一个activity,PendingIntent可以cancel
      • Intent在程序结束后终止,pendingIntent在程序结束后依然有效
      • Pending自带Context,而Intent需要再某个Context中运行
      • Intent在原Task中运行,PendingIntent在新的Task中运行
     
  • 相关阅读:
    04_远程管理常用命令
    03_文件和目录常用命令
    02_Linux 终端命令格式
    01_常用 Linux 命令的基本使用
    test
    centOS 7 更改root密码
    安装 centos7
    1
    IO模型
    使用git连接到Github
  • 原文地址:https://www.cnblogs.com/phenixyu/p/3969132.html
Copyright © 2011-2022 走看看