Android apk 获取系统权限的方式

Android系统中,权限等级分为

["normal" | "dangerous"| "signature" | "signatureOrSystem"]

normal 、dangerous是一般apk都在Mainifest中声明即可获取的

signature必须要有系统级别的签名才能够获取到

signatureOrSystem 有系统级别签名或者有系统权限

以SET_PREFERRED_APPLICATIONS为例

使用signapk为APK签名

addPreferredActivity需要权限 android.permission.SET_PREFERRED_APPLICATIONS(权限等级为【signature】)

使用该权限需要signapk进行签名,所需要的工具

源码包中

1)..\out\host\linux-x86\framework\signapk.jar

2)..\build\target\product\security\platform.pk8

3)..\build\target\product\security\platform.x509.pk8

将以上3个文件以及需要签名的APK放到同一个目录中

cmd -> java -jar signapk.jarplatform.x509.pem platform.pk8 LauncherDemo.apk Launcher_sign.apk

该权限以需要具有系统权限的应用,所以需要使用源码编译该应用

完成后可使用普通install方法安装应用,并可使用zipalign对APK进行优化

zipalign目录 android-sdk\tools\zipalign.exe

l  优化对齐APK

cmd ->zipalign -v 4 old.apk new.apk

l  验证对齐

cmd ->zipalign -c -v 4 new.apk

以上最张输出 Verification succesful 则表示优化对齐成功

源码编译APK共享系统UID

这种方法无需声明权限SET_PREFERRED_APPLICATIONS

1)在Mainfest文件中增加

android:sharedUserId="android.uid.system"

2)Android.mk文件中增加

LOCAL_CERTIFICATE := platform

编译完成后,使用push方式安装应用

Android.mk:

#Copyright 2007-2008 The Android Open Source Project
LOCAL_PATH:=$(call my-dir)
include$(CLEAR_VARS)
LOCAL_SRC_FILES:= $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME:= LauncherDemo
LOCAL_CERTIFICATE:= platform
include$(BUILD_PACKAGE)
# Use thefolloing include to make our test apk.
include$(call all-makefiles-under,$(LOCAL_PATH))

Android apk 获取系统权限的方式

时间: 2024-10-31 11:24:51

Android apk 获取系统权限的方式的相关文章

Android如何通过shareduserid获取系统权限

转载:http://my.oschina.net/zhoulc/blog/119282 android会为每个apk进程分配一个单独的空间(比如只能访问/data/data/自己包名下面的文件),一般情况下apk之间是禁止相互访问数据的.通 过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是可以互相访问任意数据. 也可以配置成运行成不同的进程, 同时可以访问其他APK的数据目录下的数据库和文件.就像访问本程序的数据一样(使用IPC机制,

[转载]如何使Android应用程序获取系统权限来修改系统时间

在 android 的API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中总会得到"Unable to open alarm driver: Permission denied ".这个函数需要root权限或者运行与系统进程中才可以用. 本来以为就没有办法在应用程序这一层改系统时间了,后来在网上搜了好久,知道这个目的还是可以达到的. 第一个方法简单点,不过需要在

Android开发之深入理解Android 7.0系统权限更改相关文档

摘要: Android 6.0之后的版本增加了运行时权限,应用程序在执行每个需要系统权限的功能时,需要添加权限请求代码(默认权限禁止),否则应用程序无法响应:Android 7.0在Android 6.0的基础上,对系统权限进一步更改,这次的权限更改包括三个方面: APP应用程序的私有文件不再向使用者放宽 Intent组件传递file://URI的方式可能给接收器留下无法访问的路径,触发FileUriExposedException异常,推荐使用FileProvider DownloadMana

android中获取root权限的方法以及原理(转)

一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. 二. Root 的介绍 1. Root 的目的 可以让我们拥有掌控手机系统的权限,比如删除一些system/app下面的无用软件,更换开关机铃声和动画,拦截状态栏弹出的广告等. 2. Root的原理介绍 谷歌的android系统管理员用户就叫做root,该帐户拥有整个系统至高无上的权利,它可以访问和修改你手机几乎所有的文件,只有root才具备最高级别的管理权限

Android如何获取系统高度、标题栏和状态栏高度

在android应用中,有时需要计算个View的位置,导致需要计算状态栏高度,标题栏高度等信息.为以后方便,在此做个简单记录. 晒代码前先了解一下android屏幕区域的划分,如下图(该图引用自此文http://www.iteye.com/topic/828830 ) 1. 屏幕区域的获取 [java] view plaincopy activity.getWindowManager().getDefaultDisplay(); 2.应用区域的获取 [java] view plaincopy R

Android O 获取应用权限 Demo案例

1. 通过 aapt 工具查看 APK权限 C:\Users\zh>adb pull /system/priv-app/Settings . /system/priv-app/Settings/: 3 files pulled. 10.8 MB/s (48840608 bytes in 4.325s) C:\Users\zh>aapt d permissions C:\Users\zh\Settings\Settings.apk package: com.android.settings us

Android之——利用系统权限实现手机重启

在应用开发时经常会有这样的需求,如何在应用里用代码让手机重启,另外,我们知道在重启之后,我们的应用可以注册广播接收者,以保证我们的应用会第一个将我们的服务开启起来,这样我们的代码就可以第一个接收到接收短信的广播事件.好了,现在就让我们一起来实现一个利用系统权限实现手机重启的示例吧. 一.实现 我们实现很简单,就是给界面一个按钮,然后设置按钮的点击事情,在点击事件里完成手机重启操作. 1.布局文件 布局文件很简单,就是放置了一个Button按钮,设置点击事件. 具体代码如下: <LinearLay

android apk 的root 权限和USB adb 权限的区别

USB adb 权限是指,当adb 连接手机时,手机中的守护进程adbd 的权限为root 权限,从而它的子进程也具有root 权限,通常如果adb shell 看到是: Android 4.0 以后版本: C:\Users\mtk29\Desktop>adb shell [email protected]:/ # Android 2.3 版本: C:\Users\mtk29\Desktop>adb shell 即表明adb 的连接是root 权限的,相反如果看到是$ 即表明是shell 权限

Android开发 - 获取系统输入法高度的正确姿势

问题与解决 在Android应用的开发中,有一些需求需要我们获取到输入法的高度,但是官方的API并没有提供类似的方法,所以我们需要自己来实现. 查阅了网上很多资料,试过以后都不理想. 比如有的方法通过监听布局的变化来计算输入法的高度,这种方式在Activity的配置中配置为"android:windowSoftInputMode="adjustResize""时没有问题,可以正确获取输入法的高度,因为布局此时确实会动态的调整. 但是当Activity配置为"