android系统权限SET_PREFERRED_APPLICATIONS怎么获取

最近自己写个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 目录下也可以获取该权限

时间: 2024-10-15 02:24:06

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

Android系统权限及签名

Android系统权限及签名 2015-03-23 19:13:33CSDN-chen52671-点击数:50 Android权限及签名 引子 现象:系统中的一个定制Service,服务是对外开放的,使用系统签名 LOCAL_CERTIFICATE := platform 应用层调用这个系统服务,获取底层的一些信息.如果在IDE里进行开发,普通签名,无法调用到该服务, 改成在系统编译环境里编译,并在Android.mk中加入如下语句: LOCAL_CERTIFICATE := platforma

对Android系统权限的认识

Android系统是运行在Linux内核上的,Android与Linux分别有自己的一套严格的安全及权限机制 Android系统权限相关的内容 (一)linux文件系统上的权限 -rwxr-x--x system system 4156 2012-06-30 16:12 test.apk. 代表的是相应的用户/用户组及其他人对此文件的访问权限,与此文件运行起来具有的权限完全不相关. 比如上面的例子只能说明system用户拥有对此文件的读写执行权限:system组的用户对此文件拥有读.执行权限:其

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

获取系统音量 通过程序获取android系统手机的铃声和音量.同样,设置铃声和音量的方法也很简单! 设置音量的方法也很简单,AudioManager提供了方法:publicvoidsetStreamVolume(intstreamType,intindex,intflags)其中streamType有内置的常量,去文档里面就可以看到. JAVA代码:AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO

Android系统权限管理

权限分级? Android系统中包含一般的权限和URI权限. 传统Android权限按照危险程度分为normal, dangerous, signature和signatureOrSystem.其中不同的权限根据签名或是否系统应用分配给第三方程序. URI权限用于权限临时分配,让其直接用户处理特定敏感数据.如电子邮件程序需要图片浏览器查看图片,而用户的电子邮件是用户隐私,不能使用传统的方式直接分配权限,只想让图片浏览器暂时只能读取特定图片. 权限如何添加和验证? Android权限通过两种方式声

Android系统权限

android.permission.ACCESS_CHECKIN_PROPERTIES//允许读写访问"properties"表在checkin数据库中,改值可以修改上传android.permission.ACCESS_COARSE_LOCATION //允许一个程序访问CellID或WiFi热点来获取粗略的位置android.permission.ACCESS_FINE_LOCATION //允许一个程序访问精良位置(如GPS)android.permission.ACCESS_

Android 获取手机的厂商、型号、Android系统版本号、IMEI、当前系统语言等工具类

最近在开发中,需要用到一些系统信息,这里我把这些方法写成一个工具类方便以后复用,该工具类有以下6个功能: 1.获取手机制造厂商 2.获取手机型号 3.获取手机系统当前使用的语言 4.获取Android系统版本号 5.获取手机IMEI串号 6.获取手机中的语言列表 SystemUtil类 [java] view plain copy /** * 系统工具类 * Created by zhuwentao on 2016-07-18. */ public class SystemUtil { /**

android 6.0之后动态获取权限

Android 6.0 动态权限申请 1. 概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予,运行时应用不再需要询问用户.在 Android 6.0 或更高版本对权限进行了分类,对某些涉及到用户隐私的权限可在运行时根据用户的需要动态授予.这样就不需要在安装时被强迫同意某些权限. 2. 正常权限 和 危险权限 Android系统权限分为几个保护级别.需要了解的两个最重要保护级别是 正常权限 和 危险权限: (1)正常权限: 涵盖应用需要访问其沙盒外部数据或资源,但对用

[转]通过apk签名使应用程序有系统权限

[转]通过apk签名使应用程序有系统权限 (2013-01-08 13:40:50) 转载▼ it 分类: Android 出处:http://blog.csdn.net/doom66151/article/details/7085464 问题: 系统预装软件,需要访问一些配置文件,配置文件的owner都是设置为system.所以应用程序需要有授权才可以读写. google搜索找到以下文章,解决了这个问题. 以下内容解释了: android系统权限规则? 如何使应用程序获取系统权限? apk签名

Android动态权限申请

从Android 6.0开始,权限不再是在manifest文件中粘贴一下即可,这时候权限也正式走进大家的视野.项目的6.0适配就是我做的,当时没有仔细总结,最近在另一个项目添加权限的时候发现,同一个功能都没有添加申请权限的代码,一个会挂一个不会,花了几个小时在这个小问题上.因此多花点时间总结一下权限问题. Android系统权限的概念 Android是一个权限分隔的操作系统,每个应用都有独特的系统标识.一般情况下,应用没有权限执行对其它应用.系统.用户可能有不利影响的操作.每个应用都在应用沙盒中