Android动态申请Camera权限应用闪退问题

本文探讨了Android应用在动态申请Camera权限后出现闪退的问题。当权限申请成功并导致应用的gids改变时,系统会杀死应用。通过对frameworks/base/data/etc/platform.xml的分析,发现CAMERA权限会将应用加入camera组,而其他如读写外部存储的权限则不会引起此类问题。解决方案在于理解并适配权限申请后的gids变化。
摘要由CSDN通过智能技术生成

问题:客户反馈他们应用第一次打开申请相机权限,应用退出,需要第二次打开。
分析:先写一个简单的应用测试下
测试结果:
        应用在申请完相机权限之后确实会被系统杀掉,日志中打了如下日志
        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_CHA
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值