建立网站的费用襄阳网站seo
news/
2025/9/30 17:21:39/
文章来源:
建立网站的费用,襄阳网站seo,备案通过后怎么做网站,seo wordpress主题文章目录 概述一、app应用安装白名单核心代码二、app应用安装白名单核心功能分析三、代码实战1.先导入所需要的包2.添加获取白名单方法3.添加限制白名单方法4.上层使用PS:查看当前白名单 总结 概述
在13.0系统rom定制化开发中#xff0c;客户需求要实现应用安装白名单功能客户需求要实现应用安装白名单功能在白名单中的应用可以安装其他的应用不准安装实现一个 控制app安装的功能并且暴露接口给上层应用这需要从app安装流程入手才可以实现功能 PMS就是负责管理app安装的功能就在这里添加就可以了接下来看具体实现这个功能 一、app应用安装白名单核心代码
framework/base/core/java/android/content/pm/IPackageManager.aidl framework/base/services/core/java/com/android/server/pm/InstallPackageHelper.java framework/base/services/core/java/com/android/server/pm/PackageManagerService.java
二、app应用安装白名单核心功能分析
PackageManager是用于获取Android系统中应用程序的信息查询应用程序相关信息(applicationactivityreceiverserviceprovider及相应属性等、查询已安装的应用、 增加或删除权限、清除数据用户、服务器、代码段等 IPackageManager接口类中定义了服务端和客户端通信的业务函数还定义了内部类Stub该类从Binder派生并实现了IPackageManager接口。 PackageManagerService继承自IPackageManager.Stub类由于Stub类从Binder派生因此PackageManagerService将作为服务端参与Binder通信。 PackageManagerService简称PKMS是Android系统中核心服务之一管理着所有与package相关的工作常见的比如安装、卸载应用、信息查询等工作主要完成以下核心功能 1.解析AndroidManifest.xml清单文件解析清单文件中的所有节点信息 2.扫描本地文件主要针对apk主要是系统应用、本地安装应用等。 实现功能需求 我这里用了简单的方法在InstallPackageHelper.java中增加白名单接口实现设置白名单和获取白名单接下来在InstallPackageHelper中的安装app的方法中判断是否是白名单的app然后确定是否让安装从而实现功能
三、代码实战
1.先导入所需要的包
//add LQX
import android.text.TextUtils;
import java.util.Arrays;
import java.util.List;
//add LQX有些Android13是没有android.provider.Settings.System定义的就需要多加一个
import android.provider.Settings2.添加获取白名单方法
//add LQXprivate boolean isWhiteListApp(String packagename){String installWhiteApp android.provider.Settings.System.getString(mContext.getContentResolver(), install_white_app);if (TextUtils.isEmpty(installWhiteApp)) {return false;}else{String[] split installWhiteApp.split(,);ListString installWhiteAppList Arrays.asList(split);if (installWhiteAppList.contains(packagename)) {return true;}else{return false;}}}
//add LQX3.添加限制白名单方法
在preparePackageLI(InstallArgs args, PackageInstalledInfo res)中添加 try (PackageParser2 pp mPm.mInjector.getPreparingPackageParser()) {parsedPackage pp.parsePackage(tmpPackageFile, parseFlags, false);AndroidPackageUtils.validatePackageDexMetadata(parsedPackage);} catch (PackageManagerException e) {throw new PrepareFailure(Failed parse during installPackageLI, e);} finally {Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);}//add LQXif(!isWhiteListApp(parsedPackage.getPackageName())){Log.d(InstallPackageHelper,parsedPackage.getPackageName() is does not instant app);throw new PrepareFailure(INSTALL_FAILED_INTERNAL_ERROR,app is not in the WhiteList.packageName);}//add LQX// Instant apps have several additional install-time checks.4.上层使用
Settings.System.putString(mContext.getContentResolver(), install_white_app,com.LQX.systemproperties,com.LQX);多个包名用逗号隔开
PS:查看当前白名单
settings get system install_white_app总结
以上就是安卓13的应用安装白名单以及接口教程。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923095.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!