码迷,mamicode.com
首页 > 其他好文 > 详细

源码分析

时间:2015-08-25 18:49:57      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

1.AndroidMainfest.xml文件

<!--  -->是注释用的,注释代码,帮助阅读着理解代码

1.1<permission/>与<uses-permission/>

在android系统的安全模型中,应用程序在默认的情况下不可以执行任何对其他应用程序、系统或者用户带来负面影响的操作。如果应用需要执行某些操作,就需要声明使用这个操作对应的权限

1.1.1<permission/>

是自己定义的权限,就是别人调用这个程序时要用<permission/>来声明

android:decesion:对权限的描述,一半是两句话,第一句话描述这个权限所针对的操作,第二句告诉用户授予app这个权限会带来的后果。

android:label:对权限的一个简短描述

android:name:权限的唯一标识,一般都是使用包名加权限名

android:protectionLevel:权限的等级

normal是最低的等级,声明此权限的app,系统会默认授予此权限,不会提示用户

dangerous权限相应的操作有风险,系统在安装声明此权限的app是会提示用户

siganture权限表明的操作只针对使用同一个证书签名的app开放

signatureOrSystem与signature类似,只是增加了ROM中自带的app声明

android:name属性是必须的,其他的可选,未写的系统会指定默认值

1.1.2<uses-permission/>

android.permission.ACCESS_COARSE_LOCATION

允许应用程序访问CellID或WiFi热点来获取粗略的位置

android.permission.ACCESS_COARSE_UPDATES

 

android.permission.ACCESS_FINE_LOCATION

允许一个程序访问精良位置(如GPS)

android.permission.ACCESS_LOCATION_EXTRA_COMMANDS

允许应用程序访问额外的位置提供命令

android.permission.ACCESS_MOCK_LOCATION

允许应用程序模拟位置用于测试

android.permission.ACCESS_NETWORK_STATE

允许程序访问有关的网络信息

android.permission.ACCESS_WIFI_STATE

郧西程序访问WIFi网络状态信息

android.permission.BAIDU_LOCATION_SERVICE

允许程序用百度地图访问位置

android.permission.CALL_PHONE

允许应用程序初始化一个电话拨号,不需通过拨号用户界面需要用户确认

android.permission.CHANGE_NETWORK_STATE

允许程序改变网络状态

android.permission.READ_EXTERNAL_STORAGE

允许程序读取设备外部存储空间

android.permission.READ_LOGS"

允许程序读取底层系统日志文件

android.permission.READ_PHONE_STATE
允许读取电话的状态

android.permission.RECEIVE_USER_PRESENT

允许用户唤醒机器

android.permission.INTERNET

允许程序打开网络sockets

android.permission.MOUNT_UNMOUNT_FILESYSTEMS

允许挂载和反挂载文件系统可移动存储

android.permission.VIBRATE
允许访问振动设备

android.permission.SYSTEM_ALERT_WINDOW
允许一个程序打开窗口使用 TYPE_SYSTEM_ALERT,显示在其他所有程序的顶层

android.permission.WRITE_SETTINGS
允许程序读取或写入系统设置

android.permission.WAKE_LOCK
允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失

android.permission.WRITE_EXTERNAL_STORAGE
允许应用写(非读)用户的外部存储器

1.2<application/>

1.2.1<activity/>

android:configChanges="orientation|keyboardHidden|screenSize"

当配置了这个属性后,当我们横竖屏进行切换的时候会直接调用onCreate方法中的onConfigurationChanged方法,而不会重新执行onCreate方法

android:windowSoftInputMode="stateVisible|adjustPan|stateHidden"

android:windowSoftInputMode属性

activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,这个属性能影响两件事情:

(1)当有焦点产生时,软键盘是隐藏还是显示

(2)是否减少活动主窗口大小以便腾出空间放软键盘

他的设置必须是下面列表中的一个值,或一个“state。。:值加一个”adjust。。:值的组合,在任一组设置多个值,各个值之间用“|”分开

值的含义:

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

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

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

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

stateVisisble:软键盘通常是可见的

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

adjustUnspecifiled:默认设置,通常由系统自行决定是现实还是隐藏

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

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

1.2.2<service/>

android:editabled=“true“设置是否可编辑,true可编辑,false不可编辑

android:enabled

Android系统是否能够实例化该应用程序的组件,如果为true,每个组件的enabled属性决定那个组件是否可被enabled,如果为false,它覆盖组件指定的值,多有组件都是disabled

android:exported

这个属性用于只是该服务是否能够被其他应用组件调用或跟他交互,如果为true,则能被调用或交互,为false是,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务

android:priority执行优先级,默认为0,值越大优先级越高

1.2.3<meta-data/>

<meta-data/>元素可以作为子元素,被包含在<activity>、<application/>、<sercice/>和<receiver/>元素中,但不同的父元素,在应用时读取的方法也不同

读取:

在<activity>中应用<meta-data/>元素:

ActivityInfo info=this.getPackageManager().getActivityInfo(getComponentName(),

pakageManager.GET_META_DATA);

String msg=info.metaData.getString("data_Name");

Log.d(TAG,"msg=="+msg);

在<application/>中应用<meta-data/>元素:

ApplicationInfo appInfo=this.getPackageManager().getApplicationInfo(getPackageName(),

pakageManager.GET_META_DATA);

String msg=appinfo.metaData.getString("data_Name");

Log.d(TAG,"msg=="+msg);

在<sercice/>中应用<meta-data/>元素:

ComponentName cn=new ComponentName(this,MetaDataService.class);

ServiceInfo info=this.getPackageManager().getServiceInfo(cn,PackageManager.GET_META_DATA);

String msg=info.metaData.getString("data_Name");

Log.d(TAG,"msg=="+msg);

在<receiver/>中应用<meta-data/>元素:

ComponentName cn=new ComponentName(context,MetaDataService.class);

ActivityInfo info=context.getPackageManager().getReceiverInfo(cn,PackageManager.GET_META_DATA);

String msg=info.metaData.getString("data_Name");

Log.d(TAG,"msg=="+msg);

 

2layout

activity_main.xml

<android.support.v4.view.ViewPager
android:id="@+id/main_ViewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0" />

 

源码分析

标签:

原文地址:http://www.cnblogs.com/chhom/p/4758103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!