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 ><!-- Enable system-default search mode for any activity in Home -->< meta-data             android:name = "android.app.default_searchable"             android:value = "*" />

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

<!-- Intent received used to install shortcuts from other applications -->< 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 ><!-- Intent received used to uninstall shortcuts from other applications -->

卸载快捷方式的广播接收器:

< receiver             android:name = ".UninstallShortcutReceiver"             android:permission = "com.android.launcher.permission.UNINSTALL_SHORTCUT" >< intent-filter >< action android:name = "com.android.launcher.action.UNINSTALL_SHORTCUT" /></ intent-filter ></ receiver >

声明 ContentProvider ,用于对 launcher.db 操作:

<!-- The settings provider contains Home's data, like the workspace favorites -->< 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.
<manifest 标签头部还应声明:
android:sharedUserId="android.uid.shared" ,作用是获得系统权限,但是这样的程序属性只能在build整个系统时放进去(就是系统软件)才起作用,手动安装是没有权限的。

更多相关文章

  1. android 自定义圆形的ImageView
  2. wheelView自定义android日期时间选择器
  3. Android根据属性值自定义改变图片颜色
  4. android 自定义toggle Button按钮
  5. android 自定义View 滚动选择器PickerView
  6. Android中的访问权限
  7. Android自定义进度条的简单使用
  8. Android、IOS 获取剪切板内容

随机推荐

  1. Android(安卓)BaseExpandableListAdapter
  2. android Dialog的确定按钮点击后不取消对
  3. 如何修改android开机启动默认横竖屏
  4. vs xamarin android 读取rest
  5. Android(安卓)Studio配置Android(安卓)an
  6. android tabhost学习
  7. android 判断 wifi 是否是 5G
  8. Android相机、图册demo
  9. android鎵嬫満閿佸睆鍚巗ervice宸ヤ綔
  10. android自定义ProgressBar