IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android app权限整改 -> 正文阅读

[移动开发]Android app权限整改

权限整改中,重点是定位权限,当你的app已经检查过了,使用定位的权限了,又被整改退回来了,是不是觉得脑子不够用了?

检测机构出问题了?

当然不是.因为有其它地方,间接地使用了它.

其它像相机,通讯录这些权限就不说了,不够特殊,今天说一说定位权限.

手机系统中,有一项检查隐私保护->查看应用行为记录,里面记录着app访问了哪些权限,你也许会很奇怪,我明明没有了定位操作,也没有地图为何还会访问定位权限?

首先,要看文档:

官方文档权限变更:

https://developer.android.com/about/versions/marshmallow/android-6.0-changes#behavior-hardware-id

https://developer.android.com/guide/topics/connectivity/wifi-scan#wifi-scan-restrictions

这是官方文档,写明了为何调用wifi相关操作会需要定位权限.

从6.0以来的权限操作更新后越来越严格了.

通过源码查阅:

当发生权限检查时,在context.checkPermission()方法,会最终调用AppOpsManager.java: noteOpNoThrow()方法.

AppOpsManager这个类是AppOpsService对外暴露的类 , AppOpsService本身是不对外暴露的.

AppOpsService是干什么的,Android6.0以后加的用于权限处理.

它调用AppOpsService.java里面的noteOperation()方法.这个方法判断是否需要记录.当你访问权限,查看是否申请时,就有可能发生记录,然后在隐私保护中的行为记录就有了.要是因为这个原因被下线,不过审,你说冤不?

返回判断:

permInfo.getProtection() == PROTECTION_DANGEROUS

|| (permInfo.getProtectionFlags() & PROTECTION_FLAG_APPOP) != 0;

危险权限与受保护的权限要记录.定位就属于危险权限了.至少5.0以后是.

这一步一步到了AppOpsService.java中:

private int noteOperationUnchecked(int code, int uid, @NonNull String packageName,

@Nullable String attributionTag, int proxyUid, String proxyPackageName,

@Nullable String proxyAttributionTag, @OpFlags int flags,

boolean shouldCollectAsyncNotedOp, @Nullable String message,

boolean shouldCollectMessage) {

...... //这里是否要记录,就是前面的判断结果了.

if (shouldCollectAsyncNotedOp) {

collectAsyncNotedOp(uid, packageName, code, attributionTag, flags, message,

shouldCollectMessage);

}

}

app中未使用定位,被记录了有使用定位权限了,就要检查一下,是否使用了与定位相关的权限.每访问一次都会被记录.

其它被映射为定位权限的权限声明

从源码中看到:AppOpsManager.java里面声明了:

OP_COARSE_LOCATION, // COARSE_LOCATION

OP_COARSE_LOCATION, // FINE_LOCATION

OP_COARSE_LOCATION, // GPS

这些都是同样的定位权限.

OP_COARSE_LOCATION, // WIFI_SCAN

OP_COARSE_LOCATION, // NEIGHBORING_CELLS

OP_COARSE_LOCATION, // BLUETOOTH_SCAN

OP_COARSE_LOCATION, // MONITOR_LOCATION

OP_COARSE_LOCATION, // MONITOR_HIGH_POWER_LOCATION

wifi也需要,打电话,蓝牙也需要.

当用到WifiManager,获取ssid,网络类型,扫描等这些操作,它自动触发了定位权限.冤死了啊.

方法

权限

触发此次

WifiManager.getConnectionInfo

定位权限

1

WifiManager.getConfiguredNetworks

定位权限

1

WifiManager.getScanResults

定位权限

1

ConnectivityManager.getActiveNetworkInfo

电话权限

1

TelephonyManager.getCellLocation

定位权限

1

TelephonyManager.getAllCellInfo

定位权限

1

TelephonyManager.getLine1Number

电话权限

2

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 12:13:24  更:2021-08-13 12:16:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 23:34:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码