问题:客户反馈他们应用第一次打开申请相机权限,应用退出,需要第二次打开。

分析:先写一个简单的应用测试下

测试结果:

应用在申请完相机权限之后确实会被系统杀掉,日志中打了如下日志

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权限应用闪退问题相关推荐

  1. Android Studio 打开Profiler后App闪退

    Android Studio 打开Profiler后App闪退 环境 Android Studio 4.1.1 Android 10 错误信息: 2020-12-24 16:06:21.870 300 ...

  2. 使用Android Profiler连接成功后app闪退中断解决方法

    最近使用Android Profiler遇到了一个以前没有的小问题,当Profiler连接app成功之后运行小段时间之后就闪退了,网上查了很多解决办法发现以下办法可行,出处找不到了,如果有找到的帮我加 ...

  3. Android兼容8.0后APP图标变为原生小机器人图标

    从去年谷歌大会正式发布Android 8.0到现在已经差不多也有大半年时间了,越来越多的公司将适配8.0和全面屏提上日程,而上周谷歌又发布了Android9.0预览版去瞅瞅,随着小米,华为等厂商对系统 ...

  4. (转)Android兼容8.0后APP图标变为原生小机器人图标

    原地址:https://blog.csdn.net/qq_34163551/article/details/79523829 从去年谷歌大会正式发布Android 8.0到现在已经差不多也有大半年时间 ...

  5. android国际化设置语言后不起作用,Android旋转屏幕后国际化语言失效的解决的方法...

    本文已同步至个人博客:liyuyu.cn 近期在项目中使用到了国际化多语言(英文+中文),但在使用时发现了一个问题.当屏幕旋转后.APP语言(中文)自己主动转换为了系统语言(英文).设置了Activi ...

  6. android点击运行后无法显示设备,Android仿真器除了黑屏外什么都不显示,adb设备显示“设备离线”...

    我只是想开始在Android中进行开发.因此,问题是当我尝试通过发出命令emulator @ A2来启动仿真器时,屏幕上会出现一个仿真器.但是即使等待了2-3个小时,它所显示的只是一个黑屏.甚至没有a ...

  7. android的辅助代码,跟App相关的Android辅助类

    import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.Pac ...

  8. android设置透明主题后背景为黑色,android – 设置主题Programmactically导致黑色背景...

    当我运行我的 Android应用程序时,我正在调用一种方法来检查应用程序是否在平板电脑上运行: public boolean isTablet(Context context){ boolean xl ...

  9. android国际化设置语言后不起作用,Android支持国际化多语言那点事(支持8.0+)

    起因 我们在开发app可能会拓展国外市场,那么对包含英语在内的其它语言支持就很有必要了. 效果 思路 一:添加相关资源文件,并引用. 二:设置configuration,configuration里面 ...

最新文章

  1. tensorrt轻松部署高性能dnn推理_NVIDIA Triton推理服务器助力深度学习推理
  2. 移动端 元素外面使用伪类after加边框 导致其内部元素无法选中
  3. Python编程基础:第二十八节 随机数Random Numbers
  4. QEMU-KVM中的多线程压缩迁移技术
  5. 虚拟机centos7 识别不出网卡的解决方案
  6. Java基础--继承、this、super、抽象类
  7. java后端传object给js_【JSON】JSON在前端和后端传递
  8. 双稀疏主题模型(Dual-Sparse Topic Model)编程实现中的细节 Java
  9. errorattributes 过时_苹果官方确认:iPhone 5c 已被列为过时产品
  10. delphi让exe开机自启动
  11. android中常用的宏,iOS-开发中常用的宏有哪些?
  12. 白帽子讲web安全笔记
  13. 传统KTV打入冷宫,全民K歌和唱吧谁是“K歌之王”?
  14. 深度精简版xp 安装并使用iis【转】
  15. 3步解决AS提示:Compilation is not supported for following modules
  16. 代码设置margintop_如何通过代码设置TextView的Margin参数?
  17. 华为 MA5800设备防盗
  18. 触动精灵 python_触动精灵远程Log模块
  19. 深入理解JavaScript箭头函数
  20. GIT | GIT命令大全

热门文章

  1. 【教程】解决小米笔记本Pro连接无线网时,出现WiFi闪一下然后无网络问题
  2. 一场关于数码宝贝的误解
  3. Win10运行正当防卫2(Just Cause 2),出现“DXGI_ERROR_NOT_FOUND”错误的解决办法。
  4. excel vlookup函数进阶教程一
  5. linux强制关闭应用程序,4种强制关闭Ubuntu中无响应应用程序的方法
  6. 海店湾:食用油中“物理压榨”和“化学浸出”有什么不同?
  7. 2022-2028全球与中国家用智能健身房市场现状及未来发展趋势
  8. 机器学习非监督机器学习算法有哪些
  9. MQTT 协议的基本概念
  10. 用request和xpath库,爬取PPT素材,(背景、图标、模板)