Android S新特性介绍-近似定位

精确的近似的
当使用此AppACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATIONACCESS_COARSE_LOCATION
仅本次ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATIONACCESS_COARSE_LOCATION
拒绝无定位权限无定位权限

要确定当前系统赋予了什么权限给App,你可以检查权限请求的返回值。你可以使用下面示例中的Jetpack库,也可以使用平台库进行权限申请和返回值获取。具体可参考:manage the permission request code yourself

val locationPermissionRequest = registerForActivityResult(
ActivityResultContracts.RequestMultiplePermissions()
) { permissions ->
when {
permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
// Precise location access granted.
}
permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
// Only approximate location access granted.
} else -> {
// No location access granted.
}
}
}

// …

// Before you perform the actual permission request, check whether your app
// already has the permissions, and whether your app needs to show a permission
// rationale dialog. For more details, see Request permissions.
locationPermissionRequest.launch(arrayOf(
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION))

用户选择同样可以影响后台定位

如果系统赋予App ACCESS_BACKGROUND_LOCATION,用户在定位权限弹框的选择同样会影响后台定位。 例如,如果用户允许ACCESS_BACKGROUND_LOCATION,但是只允许前台使用近似定位,那么App也只能拥有近似定位权限在后台。

升级为精确定位

近似定位可能影响那些依赖ACCESS_FINE_LOCATION权限的App.
当咨询用户许可精确定位的时候,请务必确认App是否真的需要精度如此之高的定位。如果App需要和附近的蓝牙或者WIFI进行连接,请确认使用companion device pairing或者Bluetooth permissions来替代ACCESS_FINE_LOCATION权限。
要请求用户将你的应用的位置访问从近似升级到精确,请执行以下操作:

  1. 在必要的时刻,澄清为何需要此类权限
  2. 再次同时获取ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION权限。因为用户之前已经允许系统给予近期定位权限给App,本次的权限申请弹框显示不一样,如下图:

image.png image.png

测试App使用近似定位

为了评估是否需要升级app来支持用户定制定位精确度,请完成一下的测试。

处理弹窗近似定位请求

为了确认App是否可以处理用户通过弹窗允许App近期定位权限需求,请执行以下步骤:

  1. 同时申请ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION权限
  2. 在本文图二示例中,选择顶部近似定位选项,然后选择底部的仅在此应用运行时或者仅此次。
  3. 确认App是否工作正常,在只有近期定位的情况下。

从系统设置中降级为近期定位

为了确认App是否可以处理用户从设置中将精确定位降级成近似定位请求,请执行以下步骤:

  1. 同时申请ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION权限
  2. 在本文图二示例中,选择顶部精确定位选项,然后选择底部的仅在此应用运行时或者仅此次。
  3. 打开设置中应用权限界面
  4. 在应用权限界面关闭精确定位,如下图:

image.png
5. 确认App是否工作正常,在只有近期定位的情况下。

从系统设置中升级为精确定位

为了确认App处理用户从设置中将近似定位升级成精确定位,请执行以下步骤:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

愿你有一天,真爱自己,善待自己。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!**

### 小红书 Shield 和 Unidbg 使用教程 #### 一、Shield 的工作原理及其逆向分析 小红书的 `shield` 是一种保护机制,旨在防止未授权访问其 API 接口。此机制通常涉及加密签名和其他安全措施来验证请求的有效性和合法性[^1]。 对于想要理解或绕过这些防护的研究者来说,主要面临两个挑战:一是如何解析出生成有效请求所需的各项参数的具体算法;二是找到稳定可靠的执行环境来进行测试和开发。目前存在两种主流方案可以实现这一目标: - **基于 unidbg 调试工具的第一种方式** 这里提到的是利用名为 "龙哥" 开发者的贡献成果——即借助 unidbg 来模拟 Android 应用运行时环境从而成功加载并操作原生库文件(如 .so 文件),进而达到破解的目的。然而,在实际应用过程中发现这种方法容易引发内存泄漏等问题最终造成应用程序崩溃的情况发生。 ```python from unidbg import Emulator, ARM32 emu = Emulator() # 加载 so 文件 emu.load('path/to/libxyass.so') ``` - **通过 IDA 反编译结合 Python 打包的方式** 另一种更为稳健的选择是从根本上搞清楚那些被混淆处理过的函数内部究竟做了些什么事情。具体而言就是先使用静态分析工具比如IDA Pro 对目标二进制文件进行反汇编得到近似于 C/C++ 源码形式的结果;再依据所得信息重构相应的业务逻辑部分最后将其封装成易于调用的形式以便后续集成到自己的项目当中去。这样做不仅能够规避之前遇到的技术难题而且还提高了代码可读性便于维护更新等工作开展。 ```bash idaq -A -S"path_to_script.py" path_to_binary_file ``` #### 二、常见问题解决方案 当尝试理解和运用上述技术手段解决问题时可能会碰到一些棘手之处如下所示: - 如果采用第一种方法构建仿真器的过程中遇到了诸如“找不到指定模块”之类的错误提示,则可能是由于缺少必要的依赖项或者是路径配置不当所引起的。此时建议仔细检查相关设置确保所有组件都能正常协作。 - 针对由第二种途径衍生出来的困难之一在于如何精准定位所需关注的关键位置以及正确解读复杂的控制结构图谱。对此推荐多参考官方文档资料加深对该领域专业知识的理解程度同时积极参加社区交流分享经验共同进步。 - 此外还有可能出现因版本差异而导致某些特性不兼容的现象。面对这种情况应当及时跟进最新进展适时调整策略以适应不断变化的需求环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值