Android-Framework 默认给安装的应用赋权限

一、环境

高通865 Android

二、情景

主动给安装的应用赋予权限,避免权限申请

注:这种方法对预制进系统的应用不生效

三、代码实现

frameworks/base/core/java/android/app/AppOpsManager.java
@@ -1802,7 +1802,7 @@ public class AppOpsManager {
             AppOpsManager.MODE_ALLOWED, // READ_ICC_SMS
             AppOpsManager.MODE_ALLOWED, // WRITE_ICC_SMS
             AppOpsManager.MODE_DEFAULT, // WRITE_SETTINGS
-            getSystemAlertWindowDefault(), // SYSTEM_ALERT_WINDOW
+            AppOpsManager.MODE_ALLOWED, //getSystemAlertWindowDefault(), // SYSTEM_ALERT_WINDOW
             AppOpsManager.MODE_ALLOWED, // ACCESS_NOTIFICATIONS
             AppOpsManager.MODE_ALLOWED, // CAMERA
             AppOpsManager.MODE_ALLOWED, // RECORD_AUDIO
packages/apps/PermissionController/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
@@ -388,14 +388,14 @@ public class GrantPermissionsActivity extends Activity
                 }
             }
         }
-
+/*
         setContentView(mViewHandler.createView());
 
         Window window = getWindow();
         WindowManager.LayoutParams layoutParams = window.getAttributes();
         mViewHandler.updateWindowAttributes(layoutParams);
         window.setAttributes(layoutParams);
-
+*/
         // Restore UI state after lifecycle events. This has to be before
         // showNextPermissionGroupGrantRequest is called. showNextPermissionGroupGrantRequest might
         // update the UI and the UI behaves differently for updates and initial creations.
@@ -707,10 +707,17 @@ public class GrantPermissionsActivity extends Activity
 
                 // Set the permission message as the title so it can be announced.
                 setTitle(message);
-
+/*
                 mViewHandler.updateUi(groupState.mGroup.getName(), numGrantRequests, currentIndex,
                         icon, message, detailMessage, mButtonLabels);
-
+                        */
+                if (groupState.mGroup.getName() != null) {
+                   Log.d(LOG_TAG, "requestedPermission groupState.mGroup.getName() = " + groupState.mGroup.getName());
+                    try {
+                          onPermissionGrantResult(groupState.mGroup.getName(), GRANTED_ALWAYS);
+                        } catch (Exception e){}
+                    }
+                        
                 return true;
             }
 

注意:这种方案,清除应用用户数据的时候,权限也会被清理掉,相关处理方法,请查阅另一篇博客:

Android-Framework 清除应用用户数据,不清除权限-CSDN博客

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

粤M温同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值