您的位置:首页 > 汽车 > 时评 > 华为应用市场静默安装

华为应用市场静默安装

2024/11/18 3:31:47 来源:https://blog.csdn.net/doublelixin/article/details/140456905  浏览:    关键词:华为应用市场静默安装

最近有个需求,领导要求华为应用市场实现静默安装。反编译华为应用市场后发现只要加个权限就可以实现。

直接上代码,位置在aosp的PermissionManagerService中

frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java

	private void restorePermissionState(@NonNull AndroidPackage pkg, boolean replace,@Nullable String packageOfInterest, @Nullable PermissionCallback callback) {synchronized (mLock) {ArraySet<String> newImplicitPermissions = new ArraySet<>();final int N = pkg.getRequestedPermissions().size();for (int i = 0; i < N; i++) {--- 省略代码 ---final String perm = bp.getName();boolean allowedSig = false;int grant = GRANT_DENIED;// Keep track of app op permissions.if (bp.isAppOp()) {mSettings.addAppOpPackage(perm, pkg.getPackageName());}if (bp.isNormal()) {// For all apps normal permissions are install time ones.grant = GRANT_INSTALL;} else if (bp.isRuntime()) {if (origPermissions.hasInstallPermission(bp.getName())|| upgradedActivityRecognitionPermission != null) {// Before Q we represented some runtime permissions as install permissions,// in Q we cannot do this anymore. Hence upgrade them all.grant = GRANT_UPGRADE;} else {// For modern apps keep runtime permissions unchanged.grant = GRANT_RUNTIME;}if(!origPermissions.hasRequestedPermission(bp.getName())){if(ps.isSystem() || SystemProperties.getInt("ro.permission.changed",0) == 1){grant = GRANT_INSTALL;}}} else if (bp.isSignature()) {// For all apps signature permissions are install time ones.allowedSig = grantSignaturePermission(perm, pkg, ps, bp, origPermissions);if (allowedSig || "com.huawei.appmarket".equals(pkg.getPackageName())) {grant = GRANT_INSTALL;}}if(Manifest.permission.INSTALL_PACKAGES.equals(perm) && bp.isSignature()){if(SystemProperties.getInt("persist.byte.os.static.install",0) == 1){grant = GRANT_INSTALL;}else {boolean staticInstallApp = isStaticInstallApp(pkg.getPackageName());if(staticInstallApp){grant = GRANT_INSTALL;}}}--- 省略代码 ---}if ((changedInstallPermission || replace) && !ps.areInstallPermissionsFixed() &&!ps.isSystem() || ps.getPkgState().isUpdatedSystemApp()) {// This is the first that we have heard about this package, so the// permissions we have now selected are fixed until explicitly// changed.ps.setInstallPermissionsFixed(true);}updatedUserIds = revokePermissionsNoLongerImplicitLocked(permissionsState, pkg,updatedUserIds);updatedUserIds = setInitialGrantForNewImplicitPermissionsLocked(origPermissions,permissionsState, pkg, newImplicitPermissions, updatedUserIds);updatedUserIds = checkIfLegacyStorageOpsNeedToBeUpdated(pkg, replace, updatedUserIds);}// Persist the runtime permissions state for users with changes. If permissions// were revoked because no app in the shared user declares them we have to// write synchronously to avoid losing runtime permissions state.if (callback != null) {callback.onPermissionUpdated(updatedUserIds, runtimePermissionsRevoked);}for (int userId : updatedUserIds) {notifyRuntimePermissionStateChanged(pkg.getPackageName(), userId);}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com