为什么这些权限被拒绝了?

34

只是出于好奇,我申请了我的应用程序(hello world)的所有权限,想看看授予了哪些权限以及拒绝了哪些权限!令我惊讶的是,我发现有大约40个权限没有被授予!其中两个被返回为未知权限。

这里是我被拒绝的所有权限的日志 -

W/PackageManager(   61): Not granting permission android.permission.ACCESS_CHECKIN_PROPERTIES to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.ACCESS_SURFACE_FLINGER to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.ACCOUNT_MANAGER to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.BIND_APPWIDGET to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.BIND_DEVICE_ADMIN to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.BIND_INPUT_METHOD to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.BIND_WALLPAPER to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.BRICK to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.BROADCAST_PACKAGE_REMOVED to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.BROADCAST_SMS to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.BROADCAST_WAP_PUSH to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.CALL_PRIVILEGED to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.CHANGE_COMPONENT_ENABLED_STATE to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.CLEAR_APP_USER_DATA to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.CONTROL_LOCATION_UPDATES to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.DELETE_CACHE_FILES to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.DELETE_PACKAGES to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.DEVICE_POWER to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.DIAGNOSTIC to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.FACTORY_TEST to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.FORCE_BACK to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.GLOBAL_SEARCH to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.HARDWARE_TEST to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.INJECT_EVENTS to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.INSTALL_LOCATION_PROVIDER to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.INSTALL_PACKAGES to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.INTERNAL_SYSTEM_WINDOW to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.MANAGE_APP_TOKENS to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.MASTER_CLEAR to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.READ_FRAME_BUFFER to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Unknown permission android.permission.READ_HISTORY_BOOKMARKS in package com.robosoft.linuxtop
W/PackageManager(   61): Not granting permission android.permission.READ_INPUT_STATE to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.REBOOT to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.SET_ACTIVITY_WATCHER to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.SET_ORIENTATION to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.SET_PREFERRED_APPLICATIONS to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.SET_TIME to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.STATUS_BAR to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.UPDATE_DEVICE_STATS to package com.robosoft.linuxtop (protectionLevel=2 flags=0x8444)
W/PackageManager(   61): Not granting permission android.permission.WRITE_GSERVICES to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)
W/PackageManager(   61): Unknown permission android.permission.WRITE_HISTORY_BOOKMARKS in package com.robosoft.linuxtop
W/PackageManager(   61): Not granting permission android.permission.WRITE_SECURE_SETTINGS to package com.robosoft.linuxtop (protectionLevel=3 flags=0x8444)

我知道第二级权限不会授予第三方应用程序开发人员,只保留给原始设备制造商。但我很惊讶,因为我被拒绝了很多三级权限(如果不是全部的话!)。因此我的问题是为什么会这样,我需要在清单文件中添加其他内容才能接受这些权限吗?此外,系统不应该授予模拟器上的权限吗?毕竟这是用于开发的?并且它是否聪明到会拒绝它认为不合理的应用程序权限?Android系统那么先进,它能理解代码吗?

如果您能用几句话解释这个概念,而不是指向常规的权限和安全文档,我将不胜感激。我已经阅读了几遍,但从某些角度来看我的理解还有欠缺。因此,我更希望阅读其他人尝试解释它的文章。谢谢


不是安卓专家,但我作为一位在嵌入式系统领域有点经验的人来说,很多看起来相当危险。如果它们永远不会在真实设备上可用,那么允许它们进入模拟器就没有太大意义了——这将成为开发者浪费时间的好方法,因为他必须在没有设备的情况下进行开发,并无意中依赖于他无法拥有的权限。 - Nicholas Knight
我同意你的观点,但从研究人员的角度来看,我认为这些应该是允许的。实际上,这使我们能够测试安卓系统的影响范围,从而更好地了解其对设备的影响程度。 - Shouvik
1
我假设模拟器与SDK的其余部分一样是开源的,因此应该可以重建它以允许您访问权限。不过我不知道这会有多难。 - Nicholas Knight
@Nicholas 有一个想法..就像我说的,我的工作描述给了我很多时间去做那种工作...;-)。不过你有任何建议从哪里开始吗?(除了获取源代码并构建自己的SDK之外。在这种情况下,我特别想构建自己的模拟器) - Shouvik
3个回答

36

Android权限分为四个组:

  • 普通权限
  • 危险权限
  • 系统或已签名权限
  • 已签名权限

前两个组的权限可以被任何应用程序获得。

后两个组的权限只能被“系统”应用程序获取 - 这些应用程序预装在设备的固件中或使用“平台密钥”进行签名,即与固件签名时使用的相同密钥。


2
我怎么知道这些组是什么?谷歌没有提到权限属于四个组中的哪一个。http://developer.android.com/reference/android/Manifest.permission.html - Someone Somewhere
如果我将应用程序放在/system/app中,理论上该应用程序将成为“系统”应用程序,因此我将获得使用INSTALL_PACKAGES的特权,对吗?但似乎不起作用。 - Zorb
@某人某地:这里显示了四个安全组:http://developer.android.com/guide/topics/manifest/permission-element.html。被接受的答案还提供了一个链接,其中提到了签名和signatureOrSystem保护级别。 - Theo
现在还有一个“开发”权限,必须在安装后通过pm grant授予:http://developer.android.com/reference/android/content/pm/PermissionInfo.html - domen
是否有一个包含所有内置权限及其安全组的列表? - android developer

9

谢谢,这个链接确实有点帮助,但又回到了文档问题!:D - Shouvik

0

我发现了OEM应用程序的类似问题。但对于我来说,这是设备特定的。这是一个与框架相关的问题。一些设备没有问题。新的设备有问题。此外,这取决于应用程序的签名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接