?
介绍一下android的各种权限。
代码如下:
- < manifestxmlns:android manifestxmlns:android = "http://schemas.android.com/apk/res/android" ??
- ??????package = "net.sunniwell.launcher" ??
- ??????android 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-permissionandroid:name uses-permissionandroid:name = "android.permission.CALL_PHONE" /> ??
使用状态栏权限:
?
- < uses-permissionandroid:name uses-permissionandroid:name = "android.permission.EXPAND_STATUS_BAR" /> ??
获取当前或最近运行的任务的信息的权限:
?
- < uses-permissionandroid:name uses-permissionandroid:name = "android.permission.GET_TASKS" /> ??
读取通信录权限:
?
- < uses-permissionandroid:name uses-permissionandroid:name = "android.permission.READ_CONTACTS" /> ??
设置壁纸权限:
- < uses-permissionandroid:name uses-permissionandroid:name = "android.permission.SET_WALLPAPER" /> ??
允许程序设置壁纸hits的权限:
- < uses-permissionandroid:name uses-permissionandroid:name = "android.permission.SET_WALLPAPER_HINTS" /> ??
使用震动功能权限:
- < uses-permissionandroid:name uses-permissionandroid:name = "android.permission.VIBRATE" /> ??
修改删除launcher.db内容权限:
- < uses-permissionandroid:name uses-permissionandroid:name = "android.permission.WRITE_SETTINGS" /> ??
绑定widget权限:
- < uses-permissionandroid:name uses-permissionandroid:name = "android.permission.BIND_APPWIDGET" /> ??
读取launcher.db内容权限:
- < uses-permissionandroid:name uses-permissionandroid:name = "net.sunniwell.launcher.permission.READ_SETTINGS" /> ??
修改删除launcher.db内容权限:
- < uses-permissionandroid:name uses-permissionandroid:name = "net.sunniwell.launcher.permission.WRITE_SETTINGS" /> ??
读写外部存储设备权限:
- < uses-permissionandroid:name uses-permissionandroid: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 > ??
- ??
- < actionandroid:name actionandroid:name = "android.intent.action.MAIN" /> ??
- ??
- < categoryandroid:name categoryandroid:name = "android.intent.category.LAUNCHER" /> ??
桌面应用的标记:
- < categoryandroid:name categoryandroid:name = "android.intent.category.HOME" /> ??
- ??
- < categoryandroid:name categoryandroid:name = "android.intent.category.DEFAULT" /> ??
自动化测试工具Monkey的标记,待研究…
- < pre ? class = "html" ? name = "code" > < categoryandroid:name categoryandroid:name = "android.intent.category.MONKEY" /> ??
- ??
- </ intent-filter > ??
- ??
- </ activity > </ pre > ??
选择壁纸的activity:
<activity
android:name="WallpaperChooser"
android:label="@string/pick_wallpaper"
android:icon="@drawable/ic_launcher_gallery" >
设置壁纸的intent-filter:
?
- < intent-filter > ??
- ??
- < actionandroid:name actionandroid:name = "android.intent.action.SET_WALLPAPER" /> ??
- ??
- < categoryandroid:name categoryandroid: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 > ??
- ??
- < actionandroid:name actionandroid: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 > ??
- ??
- < actionandroid:name actionandroid:name = "com.android.launcher.action.UNINSTALL_SHORTCUT" /> ??
- ??
- </ intent-filter > ??
- ??
- </ receiver > ??
声明ContentProvider,用于对launcher.db操作:
- <!--?The?settings?provider?contains?Home's?data,?like?the?workspacefavorites?--> ??
- ??
- < 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-sdkandroid:minSdkVersion uses-sdkandroid:minSdkVersion = "4" /> ??
- ???
- </ manifest > ??
说明:
1.
<manifest标签头部还应声明:
android:sharedUserId="android.uid.shared",作用是获得系统权限,但是这样的程序属性只能在build整个系统时放进去(就是系统软件)才起作用,手动安装是没有权限的。