【转】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整个系统时放进去(就是系统软件)才起作用,手动安装是没有权限的。
代码如下:
<
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整个系统时放进去(就是系统软件)才起作用,手动安装是没有权限的。
相关文章推荐
- Launcher研究之AndroidManifest.xml分析(转)
- Launcher研究1之AndroidManifest.xml分析(转载)
- Launcher2分析(一)---整体结构和配置文件AndroidManifest.xml
- android关于AndroidManifest.xml详细分析
- android关于AndroidManifest.xml详细分析
- android关于AndroidManifest.xml详细分析
- AndroidManifest.xml分析
- android关于AndroidManifest.xml详细分析
- AndroidManifest.xml分析
- android关于AndroidManifest.xml详细分析
- Android研究-Android的init启动到launcher启动-主要分析zygote服务
- 4.1 Android Studio中的AndroidManifest.xml文件分析
- android关于AndroidManifest.xml详细分析【转】
- Android关于AndroidManifest.xml详细分析
- AndroidManifest.xml分析
- android关于AndroidManifest.xml详细分析
- Android研究-Android的init启动到launcher启动-主要分析zygote服务
- AndroidManifest.xml分析
- Android关于AndroidManifest.xml详细分析
- android关于AndroidManifest.xml详细分析