android权限申请完成后app闪退,Android动态申请Camera权限应用闪退问题
问题:客户反馈他们应用第一次打开申请相机权限,应用退出,需要第二次打开。
分析:先写一个简单的应用测试下
测试结果:
应用在申请完相机权限之后确实会被系统杀掉,日志中打了如下日志
Killing 8269:com.example.android.camera2basic/u0a85 (adj 100): permission grant or revoke changed gids(偷懒往下下载了一个相机的demo)
研究代码发现如下的逻辑:
final int result = permissionsState.grantRuntimePermission(bp, userId);
switch (result) {
case PermissionsState.PERMISSION_OPERATION_FAILURE: {
return;
}
case PermissionsState.PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED: {
final int appId = UserHandle.getAppId(pkg.applicationInfo.uid);
mHandler.post(new Runnable() {
@Override
public void run() {
killUid(appId, userId, KILL_APP_REASON_GIDS_CHANGED);
}
});
}
break;
PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED是个什么东西?
这个flag表示权限授予成功,但是应用的gids改变了,那么就好理解了,因为申请了camera的权限,所以应用的gids改变了,系统认为gids变了就要杀掉应用(系统还有类似的逻辑,比如清除app数据也会导致应用被杀)
我们去frameworks/base/data/etc/platform.xm中看看
原来申请了CAMERA的权限之后就会把该应用加入camera组
再看看其他的权限
读写内部存储是没有引起组变化的
网络权限也会引起组变化,可是网络权限不用动态申请,所以没有这个问题
android权限申请完成后app闪退,Android动态申请Camera权限应用闪退问题相关推荐
- Android Studio 打开Profiler后App闪退
Android Studio 打开Profiler后App闪退 环境 Android Studio 4.1.1 Android 10 错误信息: 2020-12-24 16:06:21.870 300 ...
- 使用Android Profiler连接成功后app闪退中断解决方法
最近使用Android Profiler遇到了一个以前没有的小问题,当Profiler连接app成功之后运行小段时间之后就闪退了,网上查了很多解决办法发现以下办法可行,出处找不到了,如果有找到的帮我加 ...
- Android兼容8.0后APP图标变为原生小机器人图标
从去年谷歌大会正式发布Android 8.0到现在已经差不多也有大半年时间了,越来越多的公司将适配8.0和全面屏提上日程,而上周谷歌又发布了Android9.0预览版去瞅瞅,随着小米,华为等厂商对系统 ...
- (转)Android兼容8.0后APP图标变为原生小机器人图标
原地址:https://blog.csdn.net/qq_34163551/article/details/79523829 从去年谷歌大会正式发布Android 8.0到现在已经差不多也有大半年时间 ...
- android国际化设置语言后不起作用,Android旋转屏幕后国际化语言失效的解决的方法...
本文已同步至个人博客:liyuyu.cn 近期在项目中使用到了国际化多语言(英文+中文),但在使用时发现了一个问题.当屏幕旋转后.APP语言(中文)自己主动转换为了系统语言(英文).设置了Activi ...
- android点击运行后无法显示设备,Android仿真器除了黑屏外什么都不显示,adb设备显示“设备离线”...
我只是想开始在Android中进行开发.因此,问题是当我尝试通过发出命令emulator @ A2来启动仿真器时,屏幕上会出现一个仿真器.但是即使等待了2-3个小时,它所显示的只是一个黑屏.甚至没有a ...
- android的辅助代码,跟App相关的Android辅助类
import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.Pac ...
- android设置透明主题后背景为黑色,android – 设置主题Programmactically导致黑色背景...
当我运行我的 Android应用程序时,我正在调用一种方法来检查应用程序是否在平板电脑上运行: public boolean isTablet(Context context){ boolean xl ...
- android国际化设置语言后不起作用,Android支持国际化多语言那点事(支持8.0+)
起因 我们在开发app可能会拓展国外市场,那么对包含英语在内的其它语言支持就很有必要了. 效果 思路 一:添加相关资源文件,并引用. 二:设置configuration,configuration里面 ...
最新文章
- tensorrt轻松部署高性能dnn推理_NVIDIA Triton推理服务器助力深度学习推理
- 移动端 元素外面使用伪类after加边框 导致其内部元素无法选中
- Python编程基础:第二十八节 随机数Random Numbers
- QEMU-KVM中的多线程压缩迁移技术
- 虚拟机centos7 识别不出网卡的解决方案
- Java基础--继承、this、super、抽象类
- java后端传object给js_【JSON】JSON在前端和后端传递
- 双稀疏主题模型(Dual-Sparse Topic Model)编程实现中的细节 Java
- errorattributes 过时_苹果官方确认:iPhone 5c 已被列为过时产品
- delphi让exe开机自启动
- android中常用的宏,iOS-开发中常用的宏有哪些?
- 白帽子讲web安全笔记
- 传统KTV打入冷宫,全民K歌和唱吧谁是“K歌之王”?
- 深度精简版xp 安装并使用iis【转】
- 3步解决AS提示:Compilation is not supported for following modules
- 代码设置margintop_如何通过代码设置TextView的Margin参数?
- 华为 MA5800设备防盗
- 触动精灵 python_触动精灵远程Log模块
- 深入理解JavaScript箭头函数
- GIT | GIT命令大全
热门文章
- 【教程】解决小米笔记本Pro连接无线网时,出现WiFi闪一下然后无网络问题
- 一场关于数码宝贝的误解
- Win10运行正当防卫2(Just Cause 2),出现“DXGI_ERROR_NOT_FOUND”错误的解决办法。
- excel vlookup函数进阶教程一
- linux强制关闭应用程序,4种强制关闭Ubuntu中无响应应用程序的方法
- 海店湾:食用油中“物理压榨”和“化学浸出”有什么不同?
- 2022-2028全球与中国家用智能健身房市场现状及未来发展趋势
- 机器学习非监督机器学习算法有哪些
- MQTT 协议的基本概念
- 用request和xpath库,爬取PPT素材,(背景、图标、模板)