AndroidMainfest详解

基于TV settings和SettingsProvider

Android启动模式对activity行为的影响

AndroidManifest.xml文件详解

Manifest文件中,application和activity标签属性详解

android之manifest.xml内provider详解

coreApp

<manifest
    ···
    coreApp="true"
    ···
</manifest>
  • 在manifest中增加该属性,其实并不是代表该APP具有系统权限,而是把该类app归类为核心APP,核心app其实也是最小Android framework系统。

android:supportsRtl

<application
    ···
    android:supportsRtl="true"
    ··· >
  • 声明你的application是否愿意支持从右到左(原来RTL就是right-to-left的缩写...)的布局。如果设置为true,targetSdkVersion设置为17或更高,各种RTL的API将被激活,系统使用您的应用程序可以显示RTL布局。如果targetSdkVersion设置为16或更低的设置为false,RTL的API将被忽略或没有影响您的应用程序将具有相同的行为无论对用户现场的选择相关的布局方向(你的布局会从左至右)。此属性的默认值是false。
  • Android 4.1(Jelly Bean)在 TextView 和 EditText 元素里对双向文字顺序提供了有限的功能支持,允许应用程序在编辑和显示字符的时候,能够同时支持从左到右(LTR)以及从右到左(RTL)的排列格式。

android:configChanges

<activity
    ···
    android:configChanges="keyboard|keyboardHidden|navigation"
    ··· >
  • android中的组件Activity在manifest.xml文件中可以指定参数android:ConfigChanges,用于捕获手机状态的改变。
  • 在Activity中添加了android:configChanges属性,在当所指定属性(Configuration Changes)发生改变时,通知程序调用onConfigurationChanged()函数。
  • 设置方法:将下列字段用|符号分隔开,例如:locale|navigation|orientation

    mcc 移动国家号码,由三位数字组成,每个国家都有自己独立的MCC,可以识别手机用户所属国家

    mnc 移动网号,在一个国家或者地区中,用于区分手机用户的服务商

    locale 所在地区发生变化

    touchscreen 触摸屏已经改变。(这不应该常发生)

    keyboard 键盘模式发生变化,例如:用户接入外部键盘输入

    keyboardHidden 用户打开手机硬件键盘

    navigation 导航型发生了变化。(这不应该常发生)

    orientation 设备旋转,横向显示和竖向显示模式切换

    fontScale 全局字体大小缩放发生改变

android:priority

<intent-filter
    ···
    android:priority="3"
    ··· >
</intent-filter>
  • Android:priority执行优先级,默认为0,值越大优先级越高。

    • 优先级的概念用于描述控件的 intent的filter的类型。这个属性只对activity和 receivers是有意义的。
    • 隐式调用activity的情况下:如果多个activity满足响应的条件,系统只会触发 priority高的那个activity。
    • 有序广播发出的情况下:如果多个receiver满足响应的条件,系统会优先触发prioriyt搞的那个receiver。
    • priority必须是整数,默认是0,范围是[-1000, 1000]

Android:clearTaskOnLaunch

<activity
    ···
    android:clearTaskOnLaunch="true"
    ··· >
</activity>
  • 假设有A,B两个Activity,在AndroidManifest.xml中将A Activity的设置了android:clearTaskOnLaunch="true"

    然后A中的操作启动了B,进入了B:

    (1)如果此时用户按了Home键回到主屏幕上,然后又点击了主屏幕上的A的icon图标启动应用。那么此时不是进入B,而是进入了A

    (2)如果用户按了屏幕下方的”最近任务列表“键,调出最近任务列表中,出现的是B,用户点击,此时又进入的是B

    以上就是设置了android:clearTaskOnLaunch="true"后的Activity运行的细微差别。属性android:clearTaskOnLaunch,顾名思义,就是说,当设置此属性为true时候,每一次启动此Activity后,将清空以此Activity为根的Task

android:exported

<activity
    ···
    android:exported="true"
    ··· />
  • android:exported 是Android中的四大组件ActivityServiceProviderReceiver四大组件中都会有的一个属性

    总体来说它的主要作用是:是否支持其它应用调用当前组件。

    默认值:如果包含有intent-filter默认值为true;没有intent-filter默认值为false

excludeFromRecents

<activity
    ···
    android:excludeFromRecents="true"
    ··· >
</activity>
  • android:excludeFromRecents="true",设置为true后,当用户按了最近任务列表时候,该Task不会出现在最近任务列表中,可达到隐藏应用的目的

android:windowSoftInputMode

<activity
    ···
    android:windowSoftInputMode="stateVisible"
    ··· >
</activity>
  • activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性。

    这个属性能影响两件事情:

    【一】当有焦点产生时,软键盘是隐藏还是显示

    【二】是否减少活动主窗口大小以便腾出空间放软键盘

    它的设置必须是下面列表中的一个值,或一个state…值加一个adjust…值的组合。在任一组设置多个值——多个”state…”values,例如&mdash有未定义的结果。各个值之间用"|"分开。例如:

    <activity Android:windowSoftInputMode="stateVisible|adjustResize". . . >

    在这设置的值(除stateUnspecifiedadjustUnspecified以外)将覆盖在主题中设置的值

    各值的含义:

    【A】stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置

    【B】stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示

    【C】stateHidden:用户选择activity时,软键盘总是被隐藏

    【D】stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的

    【E】stateVisible:软键盘通常是可见的

    【F】stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态

    【G】adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示

    【H】adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间

    【I】adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分

android:noHistory

<activity
    ···
    android:noHistory="true"
    ··· >
</activity>
  • noHistory:如果设置true,当离开activity并不可见时,此activity会从栈中移除并不留下记录
  • 默认值为false

android:enabled

<activity-alias
    ···
    android:enabled="false"
    ··· >
</activity-alias>
  • Android 系统能否实例化应用程序中的各组件 — true表示可以,false表示不允许。 如果此值设为true,则由每个组件的 enabled 属性确定自身的启用或禁用。 如果此值设为false,则覆盖组件的设置值;所有组件都将被禁用
  • 默认值是true

android:targetActivity

<activity-alias
    ···
    android:targetActivity=".users.RestrictedProfileActivity"
    ··· >
</activity-alias>
  • 这个属性用于设置通过别名所能够激活的那个Activity的名字。这个名字必须跟它前面的<activity>元素的name属性匹配。

android:finishOnCloseSystemDialogs

<activity
    ···
    android:finishOnCloseSystemDialogs="true"
    ··· >
</activity>
  • 关闭系统窗口请求出现时是否销毁Activity,true为销毁

android:launchMode

<activity
    ···
    android:launchMode="singleTop"
    ··· >
</activity>
  • launchMode在多个Activity跳转的过程中扮演着重要的角色,称之为启动模式。有如下四种:

    standard:不管有没有已存在的实例,都生成新的实例

    singleTop:如果发现有对应的Activity实例正位于栈顶,则重复利用,不再生成新的实例

    singleTask:如果发现有对应的Activity实例,则使此Activity实例之上的其他Activity实例统统出栈,使此Activity实例成为栈顶对象,显示到幕前

    singleInstance:比较复杂,详见延伸阅读

    延伸阅读:Activity的四种launchMode

android:killAfterRestore

<application
    ···
    android:killAfterRestore="false"
    ··· >
</application>
  • 在执行全系统的恢复操作时,配置恢复后相关的应用程序是否要被终止。 单个包的恢复操作不会导致程序被关闭。 全系统的恢复操作一般只会发生一次,即第一次配置手机时。 第三方应用程序通常不需要用到本属性
  • 默认值是true,表示全系统恢复过程中,应用程序在处理完数据后将被关闭

android:process

<application
    ···
    android:process="system"
    ··· >
</application>
  • 通过在声明文件中设置android:process属性,我们可以让组件(例如Activity, Service等)和应用(Application)创建并运行于我们指定的进程中

android:allowClearUserData

<application
    ···
    android:allowClearUserData="false"
    ··· >
</application>
  • 是否给以用户删除用户数据的权限
  • 如果为true应用管理者就拥有清除数据的权限;false没有
  • 默认为true

android:backupAgent

<application
    ···
    android:backupAgent="SettingsBackupAgent"
    ··· >
</application>
  • 实现应用的备份代理的类名,BackupAgent的子类。这个属性的名称因该是全限定类名(如,com.example.project.MyBackupAgent)。但是,如果名称的首字母被设置为点号,也可以为类名(如,.MyBackupAgent), 他将被追加到在< manifest />元素中定义的包名后
  • 没有默认值

android:multiprocess

<application
    ···>
    <provider
        ···
        android:multiprocess="false"
        ··· >
</application>
  • 该属性表示Activity的实例是否可以运行在启动它的组件所在的应用程序进程中。如果可以,则为true,否则为false
  • 默认值是false

android:authorities

<application
    ···>
    <provider
        ···
        android:authorities="settings"
        ··· >
</application>
  • 标识内容提供器范围内的数据URI的授权列表,有多个授权时,要用分号来分离每个授权

android:writePermission

<application
    ···>
    <provider
        ···
        android:writePermission="android.permission.WRITE_SETTINGS"
        ··· >
</application>
  • 这个属性用于设置修改内容提供器的数据时,客户端所必须要有的权限

android:singleUser

<application
    ···>
    <provider
        ···
        android:singleUser="true"
        ··· >
</application>
  • 表示单用户,所有用户使用的Activity是同一个,和singletop,singletask的区别是,无论如何启动,他总是一个

android:initOrder

<application
    ···>
    <provider
        ···
        android:initOrder="100"
        ··· >
</application>
  • 这个属性用于定义内容提供器应该被实例化的顺序,这个顺序是相对与相同进程所拥有的其他内容提供器的。当内容提供器间有相互的依赖时,就需要设置这个属性,以确保它们能够按照其依赖的顺序被创建。这个属性值是一个简单的整数,大的数字要被优先初始化

原文地址:https://www.cnblogs.com/cj5785/p/9893156.html

时间: 2024-10-02 17:07:01

AndroidMainfest详解的相关文章

Android:ViewPager扩展详解——带有导航的ViewPagerIndicator(附带图片缓存,异步加载图片)

大家都用过viewpager了, github上有对viewpager进行扩展,导航风格更加丰富,这个开源项目是ViewPagerIndicator,很好用,但是例子比较简单,实际用起来要进行很多扩展,比如在fragment里进行图片缓存和图片异步加载. 下面是ViewPagerIndicator源码运行后的效果,大家也都看过了,我多此一举截几张图: 下载源码请点击这里 ===========================================华丽的分割线==============

Android_Intent详解

androidactionjavaschemefilterstring 目录(?)[+] 目录 Intent 详解... 1 一. Intent 作用... 1 二. Intent的构成... 1 三. intent的解析... 2 1.动作测试... 2 2.类别测试... 3 3.数据测试... 3 4.简单例子说明... 3 三.Intent的构造函数... 4 5. 总结说明... 5 实 例... 7 Intent 详解 一. Intent 作用 Intent 是一个将要执行的动作的抽

Android中Activity运行时屏幕方向与显示方式详解

现在我们的手机一般都内置有方向感应器,手机屏幕会根据所处位置自动进行横竖屏切换(前提是未锁定屏幕方向).但有时我们的应用程序仅限在横屏或者竖屏状态下才可以运行,此时我们需要锁定该程序Activity运行时的屏幕方向.还有就是在我们用手机观看视频时,随意的进行横竖屏切换,但播放进度不会随着屏幕的转换而从头开始播放,为了实现这个功能,我们就需要在Activity转换时对当前数据进行保存. 现在根据以上两种需求,个人提出以下解决方案: 一.锁定Activity运行时屏幕方向,如下图(演示锁定横屏):

Android相机开发详解(一)

Android相机开发详解(一) 请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客) Android相机开发能够实现打开相机,前后摄像头切换,摄像预览,保存图片,浏览已拍照图片等相机功能. Android相机开发详解(一)主要实现打开相机,摄像预览,前后置摄像头切换,保存图片等四个功能. Android相机开发详解(二)主要实现翻页浏览相片,触控缩放浏览图片,删除图片,发送图片等四个功能. Andro

第6章 数据存储全方案,详解持久化技术

第6章 数据存储全方案,详解持久化技术 所有的App都可以说是与数据打交道的,离开数据它们什么都不是.那么平时我们怎么存储一些关键的数据呢? 1 持久化技术简介 数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则是提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换. Android系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件

Android application 和 activity 标签详解

extends:http://blog.csdn.net/self_study/article/details/54020909 Application 标签 android:allowTaskReparenting Android:allowTaskReparenting=["true" | "false"] 表明了这个应用在 reset task 时,它的所有 activity 是否可以从打开它们的 task 栈中迁移到它们声明的 taskAffinity 亲和

android基础总结篇之五:BroadcastReceiver应用详解

一.概述 broadcastReceiver  顾名思义,广播接收者,他是用来接收来自系统和应用中的广播. 在android系统中,广播体现在方方面面,例如开机完成后,系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能:当网络状态改变时,系统会产生一条广播,接收到这条广播就能及时的作出提示和保存数据等操作:当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户及时保存进度,等等. 什么是广播? 广播,我的理解就是系统中消息的一个变种:就是当一个事件发生时,如系统濡染

Android转载二:工程目录详解

REF:http://blog.csdn.net/dianfusoft/article/details/7422540       可以看出这个工程由src,gen,Android2.3.3 jar包,assets,bin,res,AndroidManifest.xml,proguard.cfg,project.properties这几个文件(夹)组成,具体作用如下所示: 下面分层次详解几个重要的文件(夹) ● src文件夹 展开这个文件夹如下所示 可以看出,这个文件夹主要用来存放源文件 ●ge

Android 中的 Service 全面总结详解【下】

上一篇文章Android 中的 Service 全面总结详解[下] 介绍了Service的一些知识以及本地Service的使用,如果对Service还不太了解的建议先看下上篇文章:本文主要接着上一篇讲下远程服务的使用: 在说到远程服务的时候,我们需要先了解一些预备的知识: 首先来了解一下AIDL机制: AIDL的作用 由于每个应用程序都运行在自己的进程空间,并且可以从应用程序UI运行另一个服务进程,而且经常会在不同的进程间传递对象.在Android平台,一个进程通常不能访问另一个进程的内存空间,