首页 > 其他分享 >Android T(13) The app is granted permissions by default

Android T(13) The app is granted permissions by default

时间:2024-08-15 19:57:23浏览次数:16  
标签:13 return default text app add PROTECTION bp PermissionInfo

对比Android11,frameworks\base\services\core\java\com\android\server\pm\permission文件夹下,多了个PermissionManagerServiceImpl.java.
有一部分关于权限的处理,移到了这个文件中.比如:restorePermissionState(...)

all app granted permissions by default

+++ b/frameworks/base/services/core/java/com/android/server/pm/permission/Permission.java
@@ -206,12 +206,18 @@ public final class Permission {
     }

     public boolean isNormal() {
-        return (mPermissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
-                == PermissionInfo.PROTECTION_NORMAL;
+        //add text
+        /*return (mPermissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
+                == PermissionInfo.PROTECTION_NORMAL;*/
+        return true;
+        //add text
     }
     public boolean isRuntime() {
-        return (mPermissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
-                == PermissionInfo.PROTECTION_DANGEROUS;
+        //add text
+        /*return (mPermissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
+                == PermissionInfo.PROTECTION_DANGEROUS;*/
+        return false;
+        //add text
     }

customer's app granted permissions by default

 /**
     * Restore the permission state for a package.
     *
     * <ul>
     *     <li>During boot the state gets restored from the disk</li>
     *     <li>During app update the state gets restored from the last version of the app</li>
     * </ul>
     *
     * @param pkg the package the permissions belong to
     * @param replace if the package is getting replaced (this might change the requested
     *                permissions of this package)
     * @param packageOfInterest If this is the name of {@code pkg} add extra logging
     * @param callback Result call back
     * @param filterUserId If not {@link UserHandle.USER_ALL}, only restore the permission state for
     *                     this particular user
     */
    private void restorePermissionState(@NonNull AndroidPackage pkg, boolean replace,
            @Nullable String packageOfInterest, @Nullable PermissionCallback callback,
            @UserIdInt int filterUserId) {
        
            ...
            else if (bp.isRuntime()) {
                    boolean hardRestricted = bp.isHardRestricted();
                    boolean softRestricted = bp.isSoftRestricted();
                ...
                if (wasChanged) {
                        updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId);
                    }
                    uidState.updatePermissionFlags(bp, MASK_PERMISSION_FLAGS_ALL, flags);
+                        //add text
+                        String packageName_t = pkg.getPackageName();
+                        if(packageName_t.equals("android.xx.xxx")){
+                            uidState.revokePermission(bp);//先撤销
+                            uidState.updatePermissionFlags(bp, MASK_PERMISSION_FLAGS_ALL, 0);//在更新
+                            updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId);
+                            if(uidState.grantPermission(bp)){
+                                changedInstallPermission = true;//让RunTime Permission 走 Install Permission 的路
+                            }
+                        }
+                        //add text
                     } else {
                         Slog.wtf(LOG_TAG, "Unknown permission protection " + bp.getProtection()
                                 + " for permission " + bp.getName());
                    ...
        }    

标签:13,return,default,text,app,add,PROTECTION,bp,PermissionInfo
From: https://www.cnblogs.com/kato-T/p/18361706

相关文章

  • C语言学习笔记 Day13(复合类型/自定义类型)
    Day13 内容梳理:目录Chapter9 复合类型(自定义类型)9.1结构体(1)结构体变量定义、初始化(2)嵌套结构体(3)结构体赋值(4)结构体和指针(5)结构体做函数参数9.2共用体(联合体)9.3枚举9.4typedef关键字Chapter9 复合类型(自定义类型)9.1结构体有时需要将不同类型的数组......
  • directBootAware 和 defaultToDeviceProtectedStorage
    以下为个人理解,如错请评CE:凭据加密(CE)存储空间,实际路径/data/user_ce/DE:设备加密(DE)存储空间,实际路径/data/user_de/系统解锁前也能够运行一些App,但是需要App在manifest里显式声明android:directBootAware=true。defaultToDeviceProtectedStorage:  该flag......
  • 13 回溯
    13.1回溯算法回溯算法(backtrackingalgorithm)是一种通过穷举来解决问题的方法,它的核心思想是从一个初始状态出发,暴力搜索所有可能的解决方案,当遇到正确的解则将其记录,直到找到解或者尝试了所有可能的选择都无法找到解为止。回溯算法通常采用“深度优先搜索”来遍历解空间......
  • uniapp 返回
    uniapp 1.点击手机左上角的返回1.点击手机左上角的返回 用 onUnload 去监听 onUnload(()=>{ constisScan=uni.getStorageSync('wxScans') clearInterval(state.timeQuestions) state.timeQuestions=null if(isScan&&isScan=='true'&&am......
  • uniapp多图上传uni.chooseImage上传照片uni.uploadFile,默认上传9张图
     uniapp多图上传uni.chooseImage上传照片uni.uploadFile代码示例:/**上传照片多图*/ getImage(){ uni.chooseImage({ count:9,//默认9 sizeType:['original','compressed'],//可以指定是原图还是压缩图,默认二者都有 sourceType:['album'],//......
  • uni-app使用天地图
    原因:由于主流地图(百度,高德,腾讯)商用收费属实昂贵,不得已很多人开始转战天地图。  方案:天地图想要在uniapp项目中正常使用目前的方案有两种1.通过web-view将html天地图嵌入项目中  优点:可以同时兼容微信小程序和APP缺点:地图嵌入后数据交互繁琐,小程序兼容了,但是兼的不是很......
  • P1387 最大正方形
    DP1.状态定义:f[i][j]:以(i,j)为右下角,可构造的最大正方形的边长2.状态计算想一想以(i,j)为右下角的正方形,有哪一个状态转移过来对于已经确定的点:f[i][j]=x表示包含(i,j),向上连续x个节点,向左连续x个节点对于待确定的点:f[i][j]=x,需要考虑f[i-1][j],f[i][j-1],f[i-1][j-1]中......
  • CF 1913
    A先把第一个加到\(a\)中,然后扫到第一个不为\(0\)的开始给\(b\)。正确性显然。codeB可以交换,也就是可以任意重排。那么记录一下\(0,1\)的个数,从第一位开始模拟,知道\(0\)或\(1\)不够即可。codeC从低位往高位一位位做,假设当前做到第\(i\)位,有\(c\)个\(2^......
  • Spark的配置文件$SPARK_HOME/conf/spark-defaults.conf
    importorg.apache.spark.sql.SparkSessionobjectSparkSessionExample{defmain(args:Array[String]):Unit={valspark=SparkSession.builder.appName("SparkSessionExample").config("spark.master","local").getOrCreate()......
  • Jetpack Compose学习(13)——Compose生命周期及副作用函数
    原文:JetpackCompose学习(13)——Compose生命周期及副作用函数-Stars-One的杂货小窝此文建议需要了解kotlin的lambda表达式使用和协程基础使用,不然可能会有些阅读困难本篇算是参考他人文章,按照自己理解重新总结了下吧,偏理论生命周期Composable组件都是函数,Composable......