最近自己写个demo,需要用到SET_PREFERRED_APPLICATIONS权限
在网上找了半天,大概有两种方式:
1、 将手机root后,把apk强行push到system/app目录下,重启手机
2、SET_PREFERRED_APPLICATIONS是系统权限,需要有系统的shareUserID和签名
第一种尝试过,不行
第二种方式,因为用的是自己公司的手机,知道一种shareUserId和签名,
但是发现只有一部手机可用,其他手机都不能用
提示错误:
java.lang.SecurityException: Neither user 10020 nor current process has android.permission.SET_PREFERRED_APPLICATIONS
那么在心里产生几个疑问:
1、 系统签名 的作用是什么,最主要的作用是为了获取系统权限?
假如是的话,那么我所知道的shareUserId和签名应该权限不够,不足以获取到
SET_PREFERRED_APPLICATIONS 权限
2、 root之后将第三方签名的apk,强行push到system/app目录下和安装在data/app有什么不同?据我了解拥有系统签名和shareUserId的apk会安装在system/app目录下,那么没有系统签名的apk安装到system/app目录下功能是否和拥有系统签名和shareUserId的apk安装后的功能一样?
3、 比如说静默安装,需要系统权限吧(具体什么权限我也不知道,后续去google),想360手机助手、 豌豆夹等市场都有在手机root之后可以实现静默安装的功能,那么它们的系统权限(静默安装)是怎么获取的?(为了获取SET_PREFERRED_APPLICATIONS,我特意将手机root,但运行有发现也没有弹框请求权限)

hfgerr () 发表于:2013-02-21 11:11:04 1 楼

今天Google了下,又学到知识了
android权限等级分为四种:
["normal" | "dangerous" | "signature" | "signatureOrSystem"]
其中normal 和dangerous是一般apk都在Mainifest中声明即可获取的
signature必须要有系统级别的签名才能够获取到
signatureOrSystem 有系统级别签名或者有系统权限
系统权限应该是安装在/system/app的apk获取,(而具有系统级别的签名也会安装在/system/app目录下,)
如果要用到第三种 "signature"权限,那么即使你root之后强制吧apk push到/system/app
目录下重启手机后也是无法获取到该权限的(这种方式可以获取到第四种权限"signatureOrSystem",具体权限3和4之间是交集关系还是包含关系,我也没弄懂 :( )
现在我怀疑 SET_PREFERRED_APPLICATIONS 权限属于 第三种--"signature" 权限,必须得有系统的签名才能获取,我想验证下我猜想的是否正确,但苦于现在还没找到如何查看 SET_PREFERRED_APPLICATIONS 权限等级办法

hfgerr () 发表于:2013-02-21 15:18:21 2 楼

终于找到了查看permission 具体信息的方法了
在Android源码 frameworks/base/core/res /AndroidManifest.xml中

Java code

?

1

2

3

4

5

6

7

8

<!-- @deprecated No longer useful, see

{@link android.content.pm.PackageManager#addPackageToPreferred}

for details. -->

<permission android:name="android.permission.SET_PREFERRED_APPLICATIONS"

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

android:protectionLevel="signature"

android:label="@string/permlab_setPreferredApplications"

android:description="@string/permdesc_setPreferredApplications" />

果然 SET_PREFERRED_APPLICATIONS 等级为 signature
PS:
1、 静默安装也可通过获取root权限,然后再代码中通过调用执行命令行的语句:pm install /sdcard/**.apk 来实现,
2、 安装需要的权限:android.permission.INSTALL_PACKAGES 经过查实 等级确实为signature|system,
也就是说在无系统签名的情况下,强制将apk, push到/system/app 目录下也可以获取该权限

android系统权限SET_PREFERRED_APPLICATIONS怎么获取的更多相关文章

  1. Android系统权限及签名

    Android系统权限及签名   2015-03-23 19:13:33CSDN-chen52671-点击数:50     Android权限及签名 引子 现象:系统中的一个定制Service,服务是 ...

  2. 对Android系统权限的认识

    Android系统是运行在Linux内核上的,Android与Linux分别有自己的一套严格的安全及权限机制 Android系统权限相关的内容 (一)linux文件系统上的权限 -rwxr-x--x ...

  3. Android系统权限和root权限

    Android系统权限和root权限http://www.verydemo.com/demo_c189_i277.html

  4. [转]android系统各种音量的获取与设置

    获取系统音量 通过程序获取android系统手机的铃声和音量.同样,设置铃声和音量的方法也很简单! 设置音量的方法也很简单,AudioManager提供了方法:publicvoidsetStreamV ...

  5. android系统各种音量的获取与设置

    获取系统音量 通过程序获取android系统手机的铃声和音量.同样,设置铃声和音量的方法也很简单! 设置音量的方法也很简单,AudioManager提供了方法: publicvoidsetStream ...

  6. Android 系统日期时间的获取

    import java.text.SimpleDateFormat; SimpleDateFormat formatter = new SimpleDateFormat ("yyyy年MM月 ...

  7. Android系统权限和root权限大全

    tyle="margin:20px 0px 0px; font-size:14.285714149475098px; line-height:26px; font-family:Arial; ...

  8. Android——系统权限

    Android是一个特权分隔的操作系统,每一个应用程序运行在不同的系统身份中(Linux的user ID和group ID).系统部分和不同的身份被隔离开来.因此,Linux隔离了应用程序(与其它程序 ...

  9. android系统权限的管理

    被权限搞了好久,决定好好的研究一下: 参考资料 http://blog.csdn.net/xieyan0811/article/details/6083019?reload http://blog.c ...

随机推荐

  1. cocos2d 中使用jni Java 调用 C++ 方法

    1.首先是LoadLibrary cocos2d中的C++代码会编译成一个.so文件.放在安卓文件夹下的libs/armeabi 下,然后java会load进来,这步我们不用做了,由于cocos2d已 ...

  2. nohu和&

    在第一家公司工作的时候, 我认识了&,在第二家公司工作的时候, 我认识了nohup,  这就是渊源.  随后, 我就一直糊涂用他们, 但并不懂这两个东西. 网上很多地方是乱扯, 瞎复制, 为什 ...

  3. python3+spark2.1+kafka0.8+sparkStreaming

    python代码: import time from pyspark import SparkContext from pyspark.streaming import StreamingContex ...

  4. 字符集导致乱码问题,gi安装问题

    今天是2014-4-24,今天中午收到一个天津网友问的一个安装gi的问题,和一个网友问的字符集问题:在此整理一下 问题一: gi安装问题: 问题描写叙述: 在安装gi的时候提示:"INS-2 ...

  5. Android——问题解决之adb not responding;adb不是内部或外部命令;path变量的默认值为多少

    adb not responding 恩,这是出现的问题.我们开始来解决它吧! 出现这种问题大多是因为adb端口被占用导致这个问题,所以只要找到占用端口号程序,结束即可!就是这么简单(adb运行端口号 ...

  6. flume中Source

    Spooling Directory Source: 以下2组参数解释: fileHeader及fileHeaderKey:fileHeader是个布尔值,可配置为true或者false,表示在flu ...

  7. struts2 OGNL ValueStack概念理解 # % $ 的区别

    http://blog.csdn.net/tjujacob/article/details/8117659 —————————————————————————————————————————————— ...

  8. 2015 Multi-University Training Contest 3 1002 RGCDQ

    RGCDQ Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5317 Mean: 定义函数f(x)表示:x的不同素因子个数. 如:f ...

  9. 实践jQuery Easyui后本地化有感

    这个星期在忙着easyui的例子中的大部分功能的本地化.一开始给我的感觉就是把jquery easyui中的每个demo的代码粘贴复制一遍. 可是,真正在做的过程中,我才发现,我错了. 在仿写easy ...

  10. PHPmailer发送邮件时的常见问题及解决办法

    来源:http://www.chinastor.com/a/jishu/mailserver/0G392262014.html 使用PHPmailer发送邮件时的常见问题总结: 一,没有定义发送邮箱$ ...