记android学习之路----Activity(2)

Activity的注册

具体的直接看代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.example.lk.activityforstudy"
          xmlns:android="http://schemas.android.com/apk/res/android">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
                <data android:scheme="http" android:host="localhost" android:port="80" ></data>
            </intent-filter>
        </activity>
    </application>

</manifest>

解释下各个标签的意义:

AndroidManifest.mxl—-是android应用中的大总管,android四大组件都必须向该文件注册之后才能上台表现自己;在android应用启动时会先加载该文件;


activity的注册必须包含在<application>标签中,根节点为<activity>

activity标签用于表明该注册对象时一个activity以及声明该activity基本特征。的几个属性:
   android:name—-用来表明要为哪一个activity注册;值是包名.activity的名称;
         此处的.MainActivity其实就是com.example.lk.activityforstudy.MainActivity的缩写。
  android:label—-activity对外显示的名称,可以随意设置;
  android:theme—-activity窗口级别的主题样式;可以自定义也可以选择系统样式;


  
<intent-filter>用于描述该activity中各个intent属性的:
  <Action>
    作用:该标签用于用于指定响应的动作名,也就是说这个标签可以声明该activity可以对哪个动作做出响应;
    取值:取值有两种方式:1选取系统提供的标准动作,2自定义动作名称;
    设置:可以在AndroidManifest中设置,也可以通过setAction()设置;

注:如果是选取系统提供的标准动作请看文末附表;       

自定义方式推荐以包名作为前缀,如:android:name=”com.example.lk.activityforstudy.MY_ACTION”

如果是主activity的话为:<action android:name="android.intent.action.MAIN"/>
 
  <Category>
    作用:标签用于指定activity在响应指定动作时的附加条件;系统也提供了一些了标准的条件,请看文末附表
    设置:可以在AndroidManifest中设置,也可以通过addCategory();设置;
     
  <Data>
    作用:标签用于指定该activity能够响应的请求数据类型,参数是url模式的;共有五个属性:这五个属性限制了可以响应的url的类型:

    android:scheme:指定数据协议的部分;指定该activity可以对哪一种请求协议做出响应;
    android:host:指定数据的主机名部分;指定该activity可以在请求指定服务器的时候做出响应;
    android:port:指定数据的端口部分,一般放在android:host后面;指定该activity在请求服务器指定端口的时候可以相应;
    android:path:指定url路径部分;
    android:mimeType:指定该activity可以对指定的请求数据类型进行响应;
    
注:data的前四个属性对应的url为:scheme://host:port/path
  上述四个属性并不是必须的,配置了哪个将会以哪个为标准过滤;
  
  
  设置:可以通过setData()方法向需要访问的activity传递响相应的数据;
    

  <Extras>
    作用:用来传递目标组件所需要的额外的数据;
    设置:可以实用系统提供的标准来设置(文末附表),也可以使用putExtras()方法设置;

一些思考

1:为什么要注册activity?

AndroidManifest是全局的配置文件,在应用启动的时候会首先加载该文件,读取该文件中的相关配置;activity在该文件中注册时会声明该activity的一系列特征;通过在AndroidManifest中注册activity可以让系统在使用该activity的时候读取到该活动以及该活动的特征;

2:不注册可以吗?

不可以,如果不注册将会异常;

3:一个应用程序必须要有主activity吗?

不一定,一个应用不是必须非得要有个主活动的,当一个应用没有一个主活动的时候该应用将在启动器中看到;这种应用一般是作为第三方服务供其他应用在内部调用的;

文末附表

表1:系统提供的标准action动作:

     ACTION_MAIN:Android Application的入口,每个Android应用必须且只能包含一个此类型的Action声明。 

    ACTION_VIEW:系统根据不同的Data类型,通过已注册的对应Application显示数据。

    ACTION_EDIT:系统根据不同的Data类型,通过已注册的对应Application编辑示数据。 

    ACTION_DIAL:打开系统默认的拨号程序,如果Data中设置了电话号码,则自动在拨号程序中输入此号码。 

    ACTION_CALL:直接呼叫Data中所带的号码。 

    ACTION_ANSWER:接听来电。 

    ACTION_SEND:由用户指定发送方式进行数据发送操作。

    ACTION_SENDTO:系统根据不同的Data类型,通过已注册的对应Application进行数据发送操作。 

    ACTION_BOOT_COMPLETED:Android系统在启动完毕后发出带有此Action的广播(Broadcast)。 

    ACTION_TIME_CHANGED:Android系统的时间发生改变后发出带有此Action的广播(Broadcast)。 

    ACTION_PACKAGE_ADDED:Android系统安装了新的Application之后发出带有此Action的广播(Broadcast)。 

    ACTION_PACKAGE_CHANGED:Android系统中已存在的Application发生改变之后(如应用更新操作)发出带有此Action的广播(Broadcast)。 

    ACTION_PACKAGE_REMOVED:卸载了Android系统已存在的Application之后发出带有此Action的广播(Broadcast)。
    

表2:系统提供的标准Category条件: 

    CATEGORY_DEFAULT:Android系统中默认的执行方式,按照普通Activity的执行方式执行。 

    CATEGORY_HOME:设置该组件为Home Activity。

    CATEGORY_PREFERENCE:设置该组件为Preference。 

    CATEGORY_LAUNCHER:设置该组件为在当前应用程序启动器中优先级最高的Activity,通常为入口ACTION_MAIN配合使用。 

    CATEGORY_BROWSABLE:设置该组件可以使用浏览器启动。 

    CATEGORY_GADGET:设置该组件可以内嵌到另外的Activity中
    

表3:系统提供的标准Data 对应常用url格式:    

    tel://:      号码数据格式,后跟电话号码。 

     mailto://:    邮件数据格式,后跟邮件收件人地址。

     smsto://:    短息数据格式,后跟短信接收号码。

     content://:   内容数据格式,后跟需要读取的内容。 

     file://:      文件数据格式,后跟文件路径。

     market://search?q=pname:pkgname:市场数据格式,在Google Market里搜索包名为pkgname的应用。

     geo://latitude, longitude:经纬数据格式,在地图上显示经纬度所指定的位置。

表4:系统提供的Extras常用值:  

    EXTRA_BCC:存放邮件密送人地址的字符串数组。 

    EXTRA_CC:存放邮件抄送人地址的字符串数组。

    EXTRA_EMAIL:存放邮件地址的字符串数组。 

    EXTRA_SUBJECT:存放邮件主题字符串。 

    EXTRA_TEXT:存放邮件内容。 

    EXTRA_KEY_EVENT:以KeyEvent对象方式存放触发Intent的按键。  

    EXTRA_PHONE_NUMBER:存放调用ACTION_CALL时的电话号码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值