• android学习五 Intent


    1.Intent是组件间调用的桥梁。
    2.Android系统定义了很多Intent
       http://developer.android.com/guide/components/intents-common.html
    3.Intent
       Intent包括的内容可以有以下一个或多个
    •    操作
    •    数据
    •    extra数据
    •    组件名称
       包含组件名称的Intent叫显示Intent,否则
       叫隐式Intent。显示Intent在做目标活动匹配时会忽略掉除组件名称的其他部分内容。

        new Intent(Intent.ACTION_DIAL)  //操作
        intent.setData(Uri.parse("http://www.google.com")); //数据
        putExtra(String name,...);//extra数据
        intent.setComponent(new ComponentName("com.android.contacts","com.android.contacts.DialContactsEntryActivity"));//组件名称
     
    4.数据是对URI进行解析的结果,可能是http网页,也可能是ContentProvider...这根据数据模式来确定例如:content:,file:等。
       接收的Intent需要通过Intent过滤器来声明是否能处理这种数据模式。
    5.预定义的操作
       http://developer.android.com/guide/topics/manifest/data-element.html
    6.extra数据可以给目标组件提供更多的信息。 extra data通过android.os.Bundle表示,就是键值对的形式,键通常以包名开头,值是任意对象。需要实现android.os.Parcelable接口。
       putExtra方法是复制操作。
    7.使用组件名称直接调用组件。包名和类名需要完全限定。
    8.组件的类别。
       预定义的category
       http://developer.android.com/reference/android/content/Intent.html#CATEGORY_ALTERNATIVE
    9.Intent包括的4部分内容中,如果没有指定组件名称,则为隐式Intent,对于使用隐式Intent来启动其他组件,则对目标组件的确定就是通过剩下3部分综合作用来确定的。
       应用应该在声明文件中编写Intent过滤器,用于android系统确定Intent与应用是否匹配。Intent过滤器的格式
     
         如果设置Intent时设置了data(uri),则数据类型应被设置
       <intent-filter>
              <action android:value="android.intent.action.MAIN" />
              <category android:value="android.intent.category.HOME" />
              <category android:value="android.intent.category.DEFAULT />
              ....
       </intent-filter>
     
       匹配的基本规则:操作(action),类型(category),数据特征(data android:name 和 data andriod.mimeType)必须与过滤器匹配。
       具体的规则:
       操作:过滤器不包含则匹配所有操作,如果包括则必须匹配。
       数据:过滤器没有指定数据特征则不匹配任何包括数据特征的Intent调用,如果包括则必须匹配。
       数据类型 (data android:mimeType):必须匹配。 数据类型的确定有两种方式
                                        a.传入的URI是内容或文件URI,这由ContentProvider或android来确定
                                        b.显示获取intent.getType()。这个需要在客户端构造Intent的时候调用setType(),调用setType就不应该设置URI,因为setType会自动设置。
       数据模式,数据授权,数据路径协同匹配,即最长匹配。
       Intent类别:调用intent中的所有type必须包含在intent过滤器中。调用intent如果没有包含任何类别则当做default类别,所以希望通过隐式Intent调用的组件必须声明DEFAULT类别。
     
     
  • 相关阅读:
    计算机中丢失MSVCP110.dll
    应用程序无法正常启动0xc000007b
    查看80端口被占用
    重装系统后搭建php环境
    修改、设置root密码
    安装虚拟机时出现The Microsoft Runtime DLL
    linux网络配置
    Java拾遗
    哈希中的那些序问题
    笔记本电脑安装jupyterthemes
  • 原文地址:https://www.cnblogs.com/manziluo/p/5800376.html
Copyright © 2020-2023  润新知