`
hold_on
  • 浏览: 456279 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android系统权限SET_PREFERRED_APPLICATIONS怎么获取

阅读更多
hfgerr ()  发表于:2013-02-20 19:34:49 问题点数:
40

最近自己写个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 目录下也可以获取该权限
分享到:
评论
1 楼 爱在转角处 2015-05-14  
非常好 ~

相关推荐

    DC工具中set_dont_touch和set_size_only的区别.doc

    `set_dont_touch` 和 `set_size_only` 是 DC 中的两个关键命令,它们提供了这样的保护机制,但它们的作用方式有所不同。 首先,`set_dont_touch` 命令用于标记设计中的某些元素(如 cell、net、reference 或 design...

    set_eth.zip_Android ip_android_android 设置mac_binder

    总结来说,"set_eth.zip_Android ip_android_android 设置mac_binder"是一个关于如何在Android系统中通过Binder机制来设置IP和MAC地址的解决方案。这个过程涉及系统权限、服务创建、JNI调用以及安全控制等多方面知识...

    ping_cap_set_proc报错分析.docx

    然后,modify_capability 函数使用 cap_set_flag 函数来设置 capability 的 Flag,从而授予 Ping 命令 RAW SOCKET 权限。 Ping 命令报错分析 - cap_set_proc 错误解决方案是通过授予 Ping 命令 ROOT 权限或 CAP_...

    SET_AHK.exe

    SET_AHK.exe

    TMS320C54x_DSP_Reference_Set_Volume_4_Applications_Guide.pdf

    综上所述,《TMS320C54x_DSP_Reference_Set_Volume_4_Applications_Guide.pdf》是一份非常有价值的资源,不仅为开发者提供了详细的硬件设计指导和软件开发指南,还通过具体案例帮助用户更好地理解和应用TMS320C54x ...

    set_mac.zip_set_mac

    `set_mac`函数可能会使用内核API或者系统调用来修改网卡的MAC寄存器。 3. **Blob autotest**:Blob通常指的是二进制大对象,这里可能指的是用于自动测试的二进制代码或数据。在硬件或驱动程序测试中,Blob autotest...

    SET_AHK按键连发工具

    SET_AHK按键连发工具是一款基于AutoHotkey脚本语言开发的高效自动化工具,主要用于实现游戏或应用程序中的按键自动连续点击功能。AutoHotkey是一种强大的Windows自动化和快捷方式创建工具,用户可以通过编写简单的...

    Android应用 高危权限

    SET_PREFERRED_APPLICATIONS 权限允许一个程序修改列表参数,这个权限可以让恶意程序修改用户的设备设置,危害用户的设备安全。 WRITE_SETTINGS 权限允许程序读取或写入系统设置,这个权限可以让恶意程序修改用户...

    set_user.rar_权限_角色权限

    "set_user.rar_权限_角色权限"这个压缩包文件可能包含了一个用于实现这一功能的PHP脚本和相关文档。下面我们将详细探讨权限和角色权限的概念,以及它们在实际应用中的作用。 首先,权限(Permission)是系统赋予...

    SQL_SET.rar_SetSQL_sql_sql set _sql set connectattr_sql set rouc

    "SQL_SET.rar_SetSQL_sql_sql set _sql set connectattr_sql set rouc"这个标题可能是在暗示一系列关于SQL中的"SET"关键字的教程或者文档集合,包括设置SQL语句、连接属性以及可能涉及到的行计数相关设置。...

    android_audio_HAL.rar_android_android audio_android audio HAL_an

    在Android系统中,Audio HAL(Hardware Abstraction Layer)是操作系统与硬件之间的重要接口,它负责处理音频输入和输出的低级操作。这篇关于"android_audio_HAL"的详细文档,主要涵盖了Android音频HAL的移植和Audio...

    get_system_now.zip_get_system_now_system权限_权限_获取system权限

    在Android系统中,获取SYSTEM权限是一项关键操作,通常涉及到对设备进行深度定制、系统级调试或者安装自定义恢复等高级功能。"get_system_now.zip_get_system_now_system权限_权限_获取system权限"这个压缩包文件...

    snmp_Get_Set_Trap工具

    `snmp_Get_Set_Trap`工具提供了这个功能,用户可以指定OID(对象标识符)来获取相应的网络设备数据。OID是SNMP中的唯一标识符,类似于数据库中的键,用于定位网络设备上的特定信息。 SNMP Set则是另一个关键操作,...

    Android-在Kotlin中处理Android运行时权限的最简单方法

    首先,了解Android的权限系统是至关重要的。运行时权限分为正常权限和危险权限。正常权限对用户隐私影响较小,系统在不询问用户的情况下自动授予。而危险权限可能对用户数据或设备造成潜在风险,因此必须在运行时...

    常用时序分析SDC 命令参考

    * Set_operating_conditions:定义当前设计的控制条件。该命令用于指定分析的类型、控制条件、库名称、工艺资源名称等信息。 * Set_wire_load_model:定义电线负载模型。该命令用于指定电线负载模型的类型和参数。 *...

    Android权限列表permission说明.txt

    - **权限名称**:"android.permission.SET_ACTIVITY_WATCHER" - **应用场景**:通常用于性能分析工具或自动化测试框架。 #### 14. SIGNAL_PERSISTENT_PROCESSES - **定义**:允许应用程序向持久进程发送信号。 - **...

    android 高危权限对照表开发必读

    8. android.permission.SET_PREFERRED_APPLICATIONS:允许一个程序修改列表参数 该权限允许应用程序修改系统的列表参数,这可能会影响系统的稳定性。如果应用程序没有正确地处理列表参数,将可能会导致系统不稳定。...

    STM32 HID复合设备(3 hid),PC端set_idle后返回stallpid错误解决

    通过bus hound 来抓包分析发现 PC 发送set idle命令下去后,从设备没有响应,所以PC变为stall状态。通过分析源代码和HID协议,修补漏洞之后可以在任何电脑上枚举成功。里面有具体的参考文件及修改好的代码,有什么...

    jni.zip_Android jni_android_jni_jni android

    本资源“jni.zip_Android jni_android_jni_jni android”包含了一份关于Android环境下JNI使用的详细指南。 JNI的核心概念主要包括以下几个方面: 1. **本地方法接口**:JNI定义了一套API,使得Java代码可以调用C/...

    Set IDENTITY _INSERTY用法

    `SET IDENTITY_INSERT` 的执行权限默认只授予 `sysadmin` 和 `db_owner` 角色,以及具有 `db_ddladmin` 角色的用户。这意味着只有拥有足够权限的用户才能执行此类操作。 总结而言,`SET IDENTITY_INSERT` 是一个...

Global site tag (gtag.js) - Google Analytics