关于Android App权限问题

Android App权限管理结构

Android3.0以后引入权限管理模块,终端APP在使用访问设备或是访问系统文件时候,不仅要在manifest里声明访问某个设备或文件的权限。在App第一次启动时候也会弹窗提示要用户人为确认是否将该权限分配给该App。
这里对如何记录一下如何修改这权限设置
SetingUi
 在原生的Android系统里,“设置-》安全-》权限设置”可以对APP申请的权限再次定义。同时可以设置权限开关,是否再APP安装后,还有再进行权限的确认。
AppOpsManager
Android系统里通过AppOpsManager管理App权限,该服务没有提供给第三方应用,因此在开发Android应用的时无法调用该服务,当可以通过提取JAR的方式调用该服务。这个如果今后有开发再详细说明。
AppOpsService
在Android系统创建AppOpsManager时,同时生成一个Service对象,该对象用来管理App权限文件。该对象在创建时候会创建App权限文件/data/systen/appops.xml。
该文件描述了不同用户对文件的操作权限,以及各个第三方APP对与权限的描述。为了绕过权限检查,我们可以root终端,将anable value修改成false这样第三方应用就不用担心权限问题了。
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<app-ops>
<enable value="false" />
<pkg n="root">
<uid n="0">
<op n="40" m="0" t="1472895440858" d="2966" />
</uid>
</pkg>
<pkg n="com.android.provision">
<uid n="1000">
<op n="23" m="0" t="1409500828085" />
</uid>
</pkg>
<pkg n="android">
<uid n="1000">
<op n="0" m="0" />
<op n="3" m="0" t="1472892441173" d="7" />
<op n="11" m="0" t="1472895407812" />
<op n="23" m="0" t="1472892445660" />
<op n="24" m="0" t="1472895437937" d="390960" />
<op n="40" m="0" t="1472896161760" d="47" />
<op n="41" m="0" t="1472892442117" d="3825379" />
</uid>
</pkg>
<pkg n="com.android.settings">
<uid n="1000">
<op n="23" m="0" t="1472892447627" />
</uid>
</pkg>
<pkg n="com.android.backup">
<uid n="1000">
<op n="15" m="0" />
</uid>
</pkg>
<pkg n="com.leadcore.scheduledtasks">
<uid n="1000">
<op n="48" m="3" r="1472892446701" />
</uid>
</pkg>
<pkg n="com.android.deskclock">
<uid n="1000">
<op n="23" m="0" t="1472892459159" />
<op n="40" m="0" t="1472892459169" d="116" />
</uid>
</pkg>
<pkg n="com.android.inputdevices">
<uid n="1000">
<op n="48" m="3" r="1472798195340" />
</uid>
</pkg>
<pkg n="com.android.providers.settings">
<uid n="1000">
<op n="48" m="3" r="1409500853798" />
</uid>
</pkg>
<pkg n="com.android.phone">
<uid n="1001">
<op n="4" m="3" r="1472892444053" />
<op n="6" m="3" r="1472892443897" />
<op n="14" m="3" r="1472892442958" />
<op n="15" m="0" />
<op n="23" m="0" t="1472892447713" />
<op n="40" m="0" t="1472896262937" d="10" />
</uid>
</pkg>
<pkg n="com.android.bluetooth">
<uid n="1002">
<op n="15" m="0" />
</uid>
</pkg>
<pkg n="com.android.nfc">
<uid n="1027">
<op n="40" m="0" t="1409500834186" d="5476" />
</uid>
</pkg>
<pkg n="com.android.calendar">
<uid n="10002">
<op n="8" m="0" t="1472892455903" />
<op n="40" m="0" t="1472892455370" d="5161" />
</uid>
</pkg>
<pkg n="com.android.providers.calendar">
<uid n="10002">
<op n="8" m="0" t="1472892459187" />
<op n="9" m="0" t="1472892447179" />
<op n="40" m="0" t="1472892459214" d="37" />
</uid>
</pkg>
<pkg n="com.android.contacts">
<uid n="10003">
<op n="5" m="3" r="1472892447334" />
<op n="11" m="0" t="1472892447301" />
</uid>
</pkg>
<pkg n="com.android.dialer">
<uid n="10005">
<op n="6" m="3" r="1472892447153" />
</uid>
</pkg>
<pkg n="com.android.providers.media">
<uid n="10006">
<op n="23" m="0" t="1409500841503" />
<op n="40" m="0" t="1472892447888" d="103" />
</uid>
</pkg>
<pkg n="com.android.systemui">
<uid n="10008">
<op n="11" m="0" t="1472892442095" />
<op n="40" m="0" t="1472800119068" d="165" />
</uid>
</pkg>
<pkg n="com.android.keyguard">
<uid n="10008">
<op n="3" m="0" t="1472895394841" d="22" />
<op n="6" m="3" r="1472895588224" />
<op n="8" m="0" t="1472895588196" />
<op n="14" m="3" r="1472895588206" />
<op n="40" m="0" t="1472895503401" d="522" />
<op n="43" m="3" r="1472895588211" />
</uid>
</pkg>
<pkg n="com.android.launcher">
<uid n="10009">
<op n="3" m="0" t="1472892448134" d="96" />
<op n="6" m="3" r="1472892462656" />
<op n="8" m="0" t="1472892446306" />
<op n="14" m="3" r="1472892446254" />
<op n="43" m="3" r="1472892446282" />
</uid>
</pkg>
<pkg n="com.android.mms">
<uid n="10010">
<op n="4" m="3" r="1472892446576" />
<op n="14" m="3" r="1472895426873" />
<op n="15" m="0" />
<op n="40" m="0" t="1472892455512" d="116" />
<op n="43" m="3" r="1472892447545" />
<op n="50" m="3" r="1472895423327" />
</uid>
</pkg>
<pkg n="com.android.browser">
<uid n="10022">
<op n="4" m="3" r="1472894281490" />
</uid>
</pkg>
<pkg n="com.iflytek.inputmethod">
<uid n="10060">
<op n="0" m="3" />
<op n="4" m="3" />
<op n="27" m="3" />
<op n="40" m="0" t="1472892477903" d="29532" />
<op n="47" m="3" />
</uid>
</pkg>
</app-ops>
FeatureConfig
这个Class是Android功能开关描述类,文件很短,关于权限的开关是
public static final Boolean SECURE_FEATURE_ENABLE = true;如果程序猿可以定制Android系统,需要关闭权限检查,可以修改该文件达到关闭权限检查的效果。
public final class FeatureConfig {
    //check if feature SECURE_FEATURE_ENABLE is support or not!
    public static final Boolean SECURE_FEATURE_ENABLE = true;
    //check if feature USE_ON2CODEC_V2 is support or not!
    public static final Boolean USE_ON2CODEC_V2 = true;
    //check if feature BROWSER_AUTO_FILL_ENABLE is support or not!
    public static final Boolean BROWSER_AUTO_FILL_ENABLE = true;
    //check if feature BROWSER_INVERT_SCREEN_ENABLE is support or not!
    public static final Boolean BROWSER_INVERT_SCREEN_ENABLE = false;
    //check if feature BROWSER_AUDIO_FILTER_ENABLE is support or not!
    public static final Boolean BROWSER_AUDIO_FILTER_ENABLE = false;
    //check if feature BROWSER_PRIVATE_BROWSING_ENABLE is support or not!
    public static final Boolean BROWSER_PRIVATE_BROWSING_ENABLE = false;
    //check if feature DOUBLE_UDISK_ENABLE is support or not!
    public static final Boolean DOUBLE_UDISK_ENABLE = false;
    //check if feature CAMERA_ADD_API_NEEDFLASH is support or not!
    public static final Boolean CAMERA_ADD_API_NEEDFLASH = false;
    //check if feature LC_MP3_UNWAKELOCK is support or not!
    public static final Boolean LC_MP3_UNWAKELOCK = true;
    //check if feature BUILD_PAD_VERSION is support or not!
    public static final Boolean BUILD_PAD_VERSION = false;
    //check if feature AUDIO_EFFECT_DIRAC is support or not!
    public static final Boolean AUDIO_EFFECT_DIRAC = false;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 12,应用程序的读写权限得到了一些改进和更新。首先,为了保护用户的隐私和数据安全,Android 12引入了更严格的权限控制。在安装应用程序时,用户将收到更详细的权限请求对话框,显示了应用程序所需的各种权限,并允许用户选择是否授予这些权限。 此外,Android 12还引入了Scoped Storage,这是一种更安全和更可靠的文件访问机制。Scoped Storage限制了应用程序对外部存储的直接访问,只允许应用程序访问其私有目录和特定共享目录。这意味着应用程序无法直接访问其他应用程序的私有目录或外部存储的任何文件。这种限制可以防止应用程序访问和读取其他应用程序的敏感数据,提高了隐私保护和数据安全性。 此外,Android 12还改进了用户授权的流程和体验。在应用程序请求权限时,用户可以通过更直观和易于理解的界面来控制和管理权限。用户可以选择在某些情况下临时授予应用程序权限,例如给予相机应用程序单次访问相机的权限。这种改进可以更好地保护用户的隐私,确保应用程序只在必要时才能访问所需的权限。 总体而言,Android 12对应用程序的读写权限进行了改进和增强,以提高用户的隐私保护和数据安全性。通过更详细的权限请求对话框、Scoped Storage和改进的用户授权流程,Android 12确保了应用程序只能在合适的情况下访问所需的权限,并防止应用程序读取其他应用程序的敏感数据。这些改进为用户提供了更可靠和更安全的应用程序体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值