`

(转)关于androidManifest.xml的概叙以及intent-filter的详细分析

阅读更多

转自:http://www.cnblogs.com/wytings/p/4083463.html

 

AndroidManifest.xml配置文件对于Android应用开发来说是比较细但又很重要的基础知识,本文旨在总结该配置文件中常用到的几个属性,以便日后查阅,至于那些比较细的属性,主要是平时开发比较少用便不列举,如果自己有需要直接在eclipse中直接“alt+/”就好了……

下面是一个比较通用的AndroidManifest.xml文件样例(所建的工程目录是Test),

复制代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test"
    android:versionCode="1"
    android:versionName="1.0" >

    <!-- SDK版本的要求 -->
    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="21" />
    
    <!-- 获取系统相关的权限配置 如果不知道系统有多少属性,不用那么麻烦去搜,直接在name便签的双引号里alt+/就好,多直接~ -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    
    <!-- 应用配置细节 
      icon是图标;
      label是程序名称显示在titlebar中的
      theme是整个程序的主题,这里是自己文件定义的主题,如果想用android的就是@android:style/Theme再加alt+/就可以随便选了
   -->
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <!-- Activity配置 -->
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <data android:host="MainActivity"/>
            </intent-filter>
        </activity>
        
        <!-- Service配置 -->
        <service >
            <intent-filter >
                <action />
                <category />
                <data />
            </intent-filter>
        </service>
        
        <!-- Receive配置 -->
        <receiver >
            <intent-filter />
            <meta-data />
        </receiver>
        
        <!-- Provider配置 -->
        <provider >
            <grant-uri-permission />
            <meta-data />
            <path-permission />
        </provider>
        
        <!-- 程序需要的外部库 -->
        <uses-library />
        
    </application>

</manifest>
复制代码

 

     纵观上面的各个系统组件配置,基本都有一个Intent-filter属性,来对系统中各种乱七八糟的intent进行过滤处理。因为android系统中会时时刻刻发送着各种消息各种intent,有些是系统发的有些是各个程序发的,怎么从那么多的消息中获取自己想要的?那就过滤,Intent-filter就是起这个作用。下面我们来详细问题一下这个Intent-filter的相关属性,虽然各个组件的Intent-filter有差别,但是了解大概后,基本都差不多,举一反三,触类旁通嘛。

     Intent消息还包含有名称、动作、数据、类别几个重要属性,同时这几个点因过滤的标签的不同而有一些差别。

  <action>标签用于描述具体消息的名称;

  <category>标签用于表示能处理消息组件的类别;

  <data>标签则用于描述消息需要处理的数据格式,支持使用正则表达式来限定数据来源;

例如以下是一个activity的intent-filter:

<intent-filter>  
    <action android:name="wytings msg" />  
    <category android:name="android.intent.category.DEFAULT" />  
    <data mimeType="*/*" />  
</intent-filter>  

只要系统中有程序发出的intent的action为wytings msg这个activity就可以收到。

category设置的是默认配置,一般category主要就是android.intent.category.DEFAULT和android.intent.category.LAUNCHER两个(前者是默认配置,看action怎么设置,就怎么启动,后者是代表的第一个启动的基本都得和<action android:name="android.intent.action.MAIN" />一起用),其他的看自己需求,要是还是不知道还是alt+/就好了。

 

data中设置了处理类型,意思就是消息我收到了,如果不是我处理的类型,我依然不干活。比如我们把上面的action设置为android.intent.action.SEND(意思是当我们点发送的时候,系统就会调用这个activity,还有个前提是发送的文件得是它支持的,这里是什么都文件类型都支持)

分享到:
评论

相关推荐

    Androidmanifest.xml文件分析

    一、关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和...

    点击浏览器中的URL链接,启动特定的App。

    首先在AndroidManifest.xml的MAIN Activity下追加以下内容。(启动Activity时给予) ※必须添加项 &lt;intent-filter&gt; &lt;action android:name="android.intent.action.VIEW"/&gt; &lt;category android:name="android.intent....

    SipDroid客户端源码

    在AndroidManifest.xml中, &lt;intent-filter&gt; &lt;actionandroid:name="android.intent.action.MAIN" /&gt; &lt;categoryandroid:name="android.intent.category.LAUNCHER" /&gt; &lt;/intent-filter&gt; 表明了哪个Activity先启动。 ...

    Service开机自动启动

    3.在AndroidManifest.xml中,首先加入&lt;uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"&gt;&lt;/uses-permission&gt;来获得BOOT_COMPLETED的使用许可,然后注册前面重构的IntentReceiver类,在其...

    Android状态保存、用户偏好设置保存、通过universal_image_loder网络加载图片并做图片缓存处理Demo

    4、在AndroidManifest.xml文件中加入权限 &lt;uses-permission android:name="android.permission.INTERNET" /&gt; &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&gt; 和 android:name=".My...

    新版Android开发教程.rar

    也有分析认为,谷歌并不想做一个简单的手机终端制造商或者软件平台开发商,而意在一统传统互联网和 移 动互联网。----------------------------------- Android 编程基础 4 Android Android Android Android 手机新...

    android_通话处理流程

    1、contacts的androidmanifest.xml android:process="android.process.acore"说明此应用程序运行在acore进程中。 DialtactsActivity的intent-filter的action属性设置为main,catelog属性设置为launcher,所以此...

    可扩展的文件选择器NoNonsense-FilePicker

    // This works if you defined the intent filter // Intent i = new Intent(Intent.ACTION_GET_CONTENT); // Set these depending on your use case. These are the defaults. i.putExtra(FilePickerActivity.EXTRA...

    android的服务

    最常见的例子如:媒体播放器程序,它可以在转到后台运行的时候仍然能保持播放歌曲;或者如文件下载程序,它可以在后台执行文件的下载。 让我们来看下如何创建Service: 创建一个Service Android中已经定义了一个 ...

    验证:验证React Native Application

    Auth0 React Native样本-登录关于 的...仅Android应用程序打开android/app/src/main/AndroidManifest.xml文件,然后找到Intent Filter声明。 您必须更新android:host属性,才能使用上述步骤中的Auth0域。 &lt; data a

    Google Android SDK开发范例大全(完整版)

    Java 代码通过编译后,Android Developer Tools 可确保适当地将它打包,包括 AndroidManifest.xml 文件。 虽然没有 Eclipse 和 Android Developer Tools 插件也可以开发 Android 应用程序,但是那样就需要熟悉 ...

    Android 开机广播的使用及配置

    相关文章 Android 4.0 无法接收开机广播的问题 在配置文件AndroidManifest.xml中向系统注册receiver,子节点 intent-filter 表示接收android.intent.action.BOOT_COMPLETED消息 代码如下: ”...&lt;intent&gt; ”android....

    谈谈Android里的Context的使用

    其实我们应用启动的时候会启动Application这个类,这个类是在AndroidManifest.xml文件里其实是默认的 android:icon="@drawable/ic_launcher" android:label="@string/app_name" &gt; android:name="....

    MapView的使用

    Intent intent = new Intent(); intent.setClass(SendCityName.this, ShowGmapView.class); if(edt.getText().length()!= 0) { String data = edt.getText().toString(); String name="data"; intent.putExtra...

    Android应用内调用第三方应用的方法

    自己的应用A调用自己的应用B,有比较多的方法,例如,在被调用的应用B的Activity内,设置Intent-filter,然后直接使用Intent调用。这些后面再讲,本讲先讲如何调用第三方应用,例如:百度云盘。 调用第三方应用需要...

    adb1.0.26包含fastboot.exe

    -t 允许安装 AndroidManifest.xml 里 application 指定 android:testOnly="true" 的应用 -s 将应用安装到 sdcard -d 允许降级覆盖安装 -g 授予所有运行时权限 运行命令后如果见到类似如下输出(状态为 Success)代表...

    android实习报告(1).doc

    在注册Activity是加入 &lt;intent-filter&gt; &lt;action android:name="android.intent.action.MAIN" /&gt; &lt;category android:name="android.intent.category.LAUNCHER" /&gt; &lt;/intent-filter&gt; 可指定当前的Activity为主Activity...

    Android BroadcastReceiver广播注册方式总结

    在AndroidManifest.xml里通过标签声明 ...//默认值是由receiver中有无intent-filter决定的:如果有intent-filter,默认值为true,否则为false android:exported=[true | false] android:icon=draw

    HOME-ING_Android

    回家 :house: 챌린지챌린스서비스 :red_exclamation_mark: :sweat_droplets: 闪屏视图AndroidManifest.xml &lt; activity xss=removed xss=removed&gt; &lt; intent&gt; &lt; action xss=removed&gt; &lt; category xss=removed&gt; &lt;...

Global site tag (gtag.js) - Google Analytics