您的位置:首页 > 移动开发 > Android开发

【转】Launcher研究之AndroidManifest.xml分析

2011-03-22 11:50 465 查看
Launcher的AndroidManifest.xml文件有很多特殊性,分析一下就会理解整个程序的大概结构。

代码如下:

<
manifest

xmlns:android
=
http://schemas.android.com/apk/res/android

  
package
=
"net.sunniwell.launcher"

  
android:versionCode
=
"1"

android:versionName
=
"1.0.1"

>

关于自定义权限,这是很好的例子,其他

apk
程序要想使用

Launcher
的功能必须添加这些权限,而这些权限都是在这里声明的。

这个是安装快捷方式的权限定义:

<
permission

     
android:name
=
"com.android.launcher.permission.INSTALL_SHORTCUT"

     
android:permissionGroup
=
"android.permission-group.SYSTEM_TOOLS"

     
android:protectionLevel
=
"normal"

     
android:label
=
"@string/permlab_install_shortcut"

     
android:description
=
"@string/permdesc_install_shortcut"

/>

这个是卸载快捷方式的权限定义:

<
permission

     
android:name
=
"com.android.launcher.permission.UNINSTALL_SHORTCUT"

     
android:permissionGroup
=
"android.permission-group.SYSTEM_TOOLS"

     
android:protectionLevel
=
"normal"

     
android:label
=
"@string/permlab_uninstall_shortcut"

     
android:description
=
"@string/permdesc_uninstall_shortcut"

/>

这个是读取

launcher.db
内容的权限定义:

<
permission

     
android:name
=
"net.sunniwell.launcher.permission.READ_SETTINGS"

     
android:permissionGroup
=
"android.permission-group.SYSTEM_TOOLS"

     
android:protectionLevel
=
"normal"

     
android:label
=
"@string/permlab_read_settings"

     
android:description
=
"@string/permdesc_read_settings"

/>

这个是修改和删除

launcher.db
内容的权限定义:

<
permission

     
android:name
=
"net.sunniwell.launcher.permission.WRITE_SETTINGS"

     
android:permissionGroup
=
"android.permission-group.SYSTEM_TOOLS"

     
android:protectionLevel
=
"normal"

     
android:label
=
"@string/permlab_write_settings"

     
android:description
=
"@string/permdesc_write_settings"

/>

这些是

Launcher
的权限声明,通过这些就能看出

launcher
的大概功能了:

打电话权限:

<
uses-permission

android:name
=
"android.permission.CALL_PHONE"

/>

使用状态栏权限:

<
uses-permission

android:name
=
"android.permission.EXPAND_STATUS_BAR"

/>

获取当前或最近运行的任务的信息的权限:

<
uses-permission

android:name
=
"android.permission.GET_TASKS"

/>

读取通信录权限

:

<
uses-permission

android:name
=
"android.permission.READ_CONTACTS"

/>

设置壁纸权限:

<
uses-permission

android:name
=
"android.permission.SET_WALLPAPER"

/>

允许程序设置壁纸

hits
的权限:

<
uses-permission

android:name
=
"android.permission.SET_WALLPAPER_HINTS"

/>

使用震动功能权限:

<
uses-permission

android:name
=
"android.permission.VIBRATE"

/>

修改删除

launcher.db
内容权限:

<
uses-permission

android:name
=
"android.permission.WRITE_SETTINGS"

/>

绑定

widget
权限:

<
uses-permission

android:name
=
"android.permission.BIND_APPWIDGET"

/>

读取

launcher.db
内容权限:

<
uses-permission

android:name
=
"net.sunniwell.launcher.permission.READ_SETTINGS"

/>

修改删除

launcher.db
内容权限:

<
uses-permission

android:name
=
"net.sunniwell.launcher.permission.WRITE_SETTINGS"

/>

读写外部存储设备权限:

<
uses-permission

android:name
=
"android.permission.WRITE_EXTERNAL_STORAGE"

>uses-permission
>

<
application

     
android:name
=
"LauncherApplication"

  
activity

应该运行的进程的名字:

android:process
=
"android.process.acore"

     
android:label
=
"@string/application_name"

     
android:icon
=
"@drawable/swicon"

>

<
activity

        
android:name
=
"Launcher"

        

是否

android:launchMode
=
"singleTask"

        
android:clearTaskOnLaunch
=
"true"

        

这个

activity
是否在被杀死或者重启后能恢复原来的状态:

android:stateNotNeeded
=
"true"

        
android:theme
=
"@style/Theme"

        
android:screenOrientation
=
"landscape"

        
android:windowSoftInputMode
=
"stateUnspecified|adjustPan"

>

<
intent-filter
>

<
action

android:name
=
"android.intent.action.MAIN"

/>

<
category

android:name
=
"android.intent.category.LAUNCHER"

/>

桌面应用的标记:

<
category

android:name
=
"android.intent.category.HOME"

/>

<
category

android:name
=
"android.intent.category.DEFAULT"

/>

自动化测试工具

Monkey
的标记,待研究



<
category

android:name
=
"android.intent.category.MONKEY"

/>

intent-filter
>

activity
>

选择壁纸的

activity:

<
activity

        
android:name
=
"WallpaperChooser"

        
android:label
=
"@string/pick_wallpaper"

        
android:icon
=
"@drawable/ic_launcher_gallery"

>

设置壁纸的

intent-filter


<
intent-filter
>

<
action

android:name
=
"android.intent.action.SET_WALLPAPER"

/>

<
category

android:name
=
"android.intent.category.DEFAULT"

/>

intent-filter
>

搜索的

activity


activity
>

<
meta-data

        
android:name
=
"android.app.default_searchable"

        
android:value
=
"*"

/>

安装快捷方式的广播接收器:

<
receiver

        
android:name
=
".InstallShortcutReceiver"

        
android:permission
=
"com.android.launcher.permission.INSTALL_SHORTCUT"

>

<
intent-filter
>

<
action

android:name
=
"com.android.launcher.action.INSTALL_SHORTCUT"

/>

intent-filter
>

receiver
>

<
provider

        
android:name
=
"SWLauncherProvider"

        
android:authorities
=
"net.sunniwell.launcher.settings"

        
android:writePermission
=
"net.sunniwell.launcher.permission.WRITE_SETTINGS"

        
android:readPermission
=
"net.sunniwell.launcher.permission.READ_SETTINGS"

/>

application
>

<
uses-sdk

android:minSdkVersion
=
"4"

/>

manifest
>

说明:

1.

标签头部还应声明:

android:sharedUserId="android.uid.shared"

,作用是获得系统权限,但是这样的程序属性只能在build整个系统时放进去(就是系统软件)才起作用,手动安装是没有权限的。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息