您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > 鸿蒙

鸿蒙系统(HarmonyOS)获取APP与ability信息

时间:2021-05-14 13:19:28  来源:  作者:DevEcoStudio

一、设计布局

<Button
    ohos:height="match_content"
    ohos:width="match_parent"
    ohos:id="$+id:GetAppInfo"
    ohos:padding="5fp"
    ohos:top_margin="10fp"
    ohos:left_margin="20fp"
    ohos:right_margin="20fp"
    ohos:bottom_margin="10fp"
    ohos:text_size="22fp"
    ohos:text_color="#fff"
    ohos:background_element="$graphic:background_button"
    ohos:text="获取应用程序信息"></Button>

<Text
    ohos:height="match_content"
    ohos:width="match_parent"
    ohos:id="$+id:ShowAPPInfo"
    ohos:left_padding="20fp"
    ohos:right_padding="20fp"
    ohos:top_padding="0fp"
    ohos:text_size="14fp"
    ohos:text_color="#fff"
    ohos:multiple_lines="true"
    ohos:text=""></Text>

二、打开MainAbilitySlice.JAVA文件录入以下关键代码

private static final HiLogLabel hiLogLabel = new HiLogLabel(HiLog.LOG_APP, 0x00888, "BingJu.NETWorkLog");

private Text ShowAPPInfo;
@Override
public void onStart(Intent intent) {
    super.onStart(intent);
    super.setUIContent(ResourceTable.Layout_ability_main);
    Button GetAPPInfo=(Button) findComponentById(ResourceTable.Id_GetAPPInfo);
    GetAPPInfo.setClickedListener(clickedListener);
    ShowAPPInfo=(Text) findComponentById(ResourceTable.Id_ShowAPPInfo);
}

public Component.ClickedListener clickedListener= component -> {
    switch (component.getId()){
        case ResourceTable.Id_GetAPPInfo:
            ShowAPPInfo.setText("");
            this.UpdateAPPInfo();

            break;
        default:
            break;
    }
};

public void UpdateAPPInfo(){
    TaskDispatcher taskDispatcher=this.getUITaskDispatcher();
    taskDispatcher.asyncDispatch(() -> {
        AbilityInfo abilityInfo = this.getAbilityInfo();;
        try{
            //ShowAPPInfo.append("包名:"+abilityInfo.bundleName+"rn");
            //ShowAPPInfo.append("类名:"+abilityInfo.className+"rn");
            //ShowAPPInfo.append("标签:"+abilityInfo.label+"rn");
            //ShowAPPInfo.append("描述与资源索引:"+abilityInfo.getIconPath()+"rn");
            //ShowAPPInfo.append("专用标签:"+abilityInfo.getBackgroundModes()+"rn");
            ShowAPPInfo.append("包名:"+abilityInfo.getBundleName()+"rn");
            ShowAPPInfo.append("类名:"+abilityInfo.getClassName()+"rn");
            //ShowAPPInfo.append("原始类名:"+abilityInfo.getOriginalClassName()+"rn");
            //ShowAPPInfo.append("进程名:"+abilityInfo.getProcess()+"rn");
            //ShowAPPInfo.append("默认宽度:"+abilityInfo.getDefaultFormWidth());
            //ShowAPPInfo.append("默认高度:"+abilityInfo.getDefaultFormHeight()+"rn");
            ShowAPPInfo.append("描述:"+abilityInfo.getDescription()+"rn");
            /*if (abilityInfo.getFormEnabled()==true){
                ShowAPPInfo.append("启用AbilityForm:是rn");
            }else {
                ShowAPPInfo.append("启用AbilityForm:否rn");
            }
            ShowAPPInfo.append("显示AbilityForm的区域:"+abilityInfo.getFormEntity()+"rn");*/
            ShowAPPInfo.append("图标路径:"+abilityInfo.getIconPath()+"rn");
            ShowAPPInfo.append("标签:"+abilityInfo.getLabel()+"rn");
            if (abilityInfo.getLaunchMode()== AbilityInfo.LaunchMode.STANDARD){
                ShowAPPInfo.append("模式:多例模式rn");
            }else {
                ShowAPPInfo.append("模式:单例模式rn");
            }
            //ShowAPPInfo.append("最小宽度:"+abilityInfo.getMinFormWidth());
            //ShowAPPInfo.append("最小高度:"+abilityInfo.getMinFormHeight()+"rn");
            ShowAPPInfo.append("模块标签:"+abilityInfo.getModuleName()+"rn");
            if (abilityInfo.getOrientation()==AbilityInfo.DisplayOrientation.UNSPECIFIED){
                ShowAPPInfo.append("显示方向:由系统决定显示方向rn");
            }else if (abilityInfo.getOrientation()== AbilityInfo.DisplayOrientation.PORTRAIT){
                ShowAPPInfo.append("显示方向:纵向rn");
            }else if (abilityInfo.getOrientation()== AbilityInfo.DisplayOrientation.LANDSCAPE){
                ShowAPPInfo.append("显示方向:横向rn");
            }else if (abilityInfo.getOrientation()== AbilityInfo.DisplayOrientation.FOLLOWRECENT){
                ShowAPPInfo.append("显示方向:与堆栈中最接近的能力方向相同rn");
            }
            //ShowAPPInfo.append("读取数据所需许可:"+abilityInfo.getReadPermission()+"rn");
            //ShowAPPInfo.append("编写数据所需许可:"+abilityInfo.getWritePermission()+"rn");
            //ShowAPPInfo.append("目标能力:"+abilityInfo.getTargetAbility()+"rn");
            if (abilityInfo.getType()== AbilityInfo.AbilityType.DATA){
                ShowAPPInfo.append("模板类型:数据访问服务rn");
            }else if (abilityInfo.getType()== AbilityInfo.AbilityType.PAGE){
                ShowAPPInfo.append("模板类型:UI页面rn");
            }else if (abilityInfo.getType()== AbilityInfo.AbilityType.SERVICE){
                ShowAPPInfo.append("模板类型:服务rn");
            }else if (abilityInfo.getType()== AbilityInfo.AbilityType.WEB){
                ShowAPPInfo.append("模板类型:华为浏览服务rn");
            }else if (abilityInfo.getType()== AbilityInfo.AbilityType.UNKNOWN){
                ShowAPPInfo.append("模板类型:未知的能力类型rn");
            }
            //ShowAPPInfo.append("统一资源标识符:"+abilityInfo.getURI()+"rn");
            /*if (abilityInfo.isDifferentName()==true){
                ShowAPPInfo.append("过渡:是rnrn");
            }else {
                ShowAPPInfo.append("过渡:否rnrn");
            }
            if (abilityInfo.isVisible()==true){
                ShowAPPInfo.append("能够被其他能力调用:是rnrn");
            }else {
                ShowAPPInfo.append("能够被其他能力调用:否rnrn");
            }*/
            //ShowAPPInfo.append("名称和hashCode:"+abilityInfo.toString()+"rn");
            if (abilityInfo.enabled==true){
                ShowAPPInfo.append("是否可以实例化:是rn");
            }else {
                ShowAPPInfo.append("是否可以实例化:否rn");
            }
            /*List<String> DeviceTypesList=abilityInfo.getDeviceTypes();
            for (int i=0; i<DeviceTypesList.size(); i++){
                ShowAPPInfo.append("能够运行设备类型:"+DeviceTypesList.get(i)+"rn");
            }
            List<String> DeviceCapabilitiesList=abilityInfo.getDeviceCapabilities();
            for (int i=0; i<DeviceCapabilitiesList.size(); i++){
                ShowAPPInfo.append("所需设备功能:"+DeviceCapabilitiesList.get(i)+"rn");
            }*/
            List<String> PermissionsList=abilityInfo.getPermissions();
            for (int i=0; i<PermissionsList.size(); i++){
                ShowAPPInfo.append("所需权限:"+PermissionsList.get(i)+"rnrn");
            }

        }catch (Exception exception){
            HiLog.error(hiLogLabel,"能力信息错误:"+exception.toString());
        }finally {

        }

        ApplicationInfo applicationInfo=this.getApplicationInfo();
        try {
            //ShowAPPInfo.append("APP描述与资源索引:"+applicationInfo.getDescription()+"rn");
            //ShowAPPInfo.append("图标路径:"+applicationInfo.getIcon()+"rn");
            ShowAPPInfo.append("app名:"+applicationInfo.getName()+"rn");
            ShowAPPInfo.append("应用程序Entry.hap路径:"+applicationInfo.getEntryDir()+"rn");
            //ShowAPPInfo.append("app标志:"+applicationInfo.getFlags()+"rn");
            //ShowAPPInfo.append("APP标签:"+applicationInfo.getLabel()+"rn");
            //ShowAPPInfo.append("进程名:"+applicationInfo.getProcess()+"rn");
            if (applicationInfo.getSupportedModes()==1){
                ShowAPPInfo.append("行驶模式:支持rn");
            }else {
                ShowAPPInfo.append("行驶模式:不支持rn");
            }
            /*List<ModuleInfo> ModuleInfoList= applicationInfo.getModuleInfos();
            for (int i=0; i<ModuleInfoList.size(); i++){
                ShowAPPInfo.append("模块:"+ModuleInfoList.get(i)+"rn");
            }
            List<String> ModuleSourceDirsList=applicationInfo.getModuleSourceDirs();
            for (int i=0; i<ModuleSourceDirsList.size(); i++){
                ShowAPPInfo.append("模块资源路径:"+ModuleInfoList.get(i)+"rn");
            }
            List<String> PermissionsList=applicationInfo.getPermissions();
            for (int i=0; i<PermissionsList.size(); i++){
                ShowAPPInfo.append("所需权限:"+PermissionsList.get(i)+"rn");
            }*/
        }catch (Exception exception){
            HiLog.error(hiLogLabel,"APP信息错误:"+exception.toString());
        }finally {

        }
    });

}

三、编译项目并运行

鸿蒙系统(HarmonyOS)获取APP与ability信息

编译项目


鸿蒙系统(HarmonyOS)获取APP与ability信息


Tags:   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
什么是组件化?通俗易懂来讲就是,拆成多个module开发就是组件化。什么是插件化?App的部分功能模块在打包时并不以传统⽅式打包进apk⽂件中,⽽是以另⼀种形式⼆次封装进apk内部,或...【详细内容】
2022-07-15  Tags:   点击:(1)  评论:(0)  加入收藏
编译和反编译.NET 中的编译是把开发人员写的 C# 代码转化为计算机可理解的代码的过程,也就是中间语言代码(IL代码)。在这个过程中,C# 源代码被转换为可执行文件(exe或者dll 文件)...【详细内容】
2022-07-15  Tags:   点击:(1)  评论:(0)  加入收藏
本篇文章主要介绍了使用MyBatis框架完成数据库的增、删、改、查操作。准备工作运行schema.sql和data.sql脚本文件中的 SQL 语句创建t_user表并添加部分测试数据。schema.sql...【详细内容】
2022-07-15  Tags:   点击:(0)  评论:(0)  加入收藏
mysql中的my.ini路径在哪里mysql中“my.ini”文件:1、linux系统中,该文件的位置是“/etc/mysql/my.cnf”;2、windows系统中,该文件的位置是“C:\Program Files\MySQL\MySQL Serv...【详细内容】
2022-07-15  Tags:   点击:(0)  评论:(0)  加入收藏
今天和大家分享的口红,每一只都超级经典,是各个品牌的当家花旦!赶快收藏吧!1、YSL1966圣罗兰他们家最火的一只口红,经常断货。 颜色一点都不挑人,是非常浓郁的枫叶红色,自带复古滤...【详细内容】
2022-07-15  Tags:   点击:(0)  评论:(0)  加入收藏
上篇中,我们提到了极端天气下,“降温消暑”类产品在今年6月份出现激增,且同比去年市场规模也有所扩大。 这一次,我们同样带来了与夏日经济密不可分的一些类目来做分析。其中,有的...【详细内容】
2022-07-15  Tags:   点击:(0)  评论:(0)  加入收藏
市面上手表的仿品非常多,作为非手表鉴定专业人士怎么才能辨别真伪呢?跟着小编一起来看看这些简单小技巧吧! 一、蓝钢指针:正品正面黑色,变换方向和姿势去打测光看是幽蓝色;仿品的...【详细内容】
2022-07-15  Tags:   点击:(3)  评论:(0)  加入收藏
在很多人选择手表时,尤其是年轻人,往往会纠结到底选智能手表呢,还是选机械手表?纠结的点在哪呢? 智能手表功能丰富,除了日常看时间,还有运动健康侦测,移动支付,接收电话微信等等,还能...【详细内容】
2022-07-15  Tags:   点击:(0)  评论:(0)  加入收藏
醉驾也不能说后半辈子就毁了,虽然醉驾属于触犯刑法的犯罪行为,但情节也是有轻重的,并且也会有不受起诉的情况。只要犯罪情节足够轻、或者有符合不被起诉的特殊情形,没有被追究其...【详细内容】
2022-07-15  Tags:   点击:(0)  评论:(0)  加入收藏
这两天有不少存储产品促销,随之而来的就是关于SD卡的一些提问。文章以前已经写过很多了,这里主要给大家看一张表格: 上面就是SD卡协会官方制作的“族谱”,明确给出了不同版本、...【详细内容】
2022-07-15  Tags:   点击:(0)  评论:(0)  加入收藏
▌简易百科推荐
近日,HarmonyOS 2推出全新版本,本次带来了AI隐私保护、图库、服务中心等众多特性新升级,欢迎大家体验。 鸿蒙系统现在越来越完善,适配的机型也越来越多,大家赶快看看自己的机...【详细内容】
2022-05-11  中关村在线    Tags:鸿蒙系统   点击:(105)  评论:(0)  加入收藏
在开始本章正式内容之前先补充讲一下前面章节没有讲到的一个小细节问题。在我们每次关闭DevEco Studio不要直接点击右上角的关闭按钮,而是选择菜单“文件 > 关闭项目” 这样...【详细内容】
2022-04-12  李景能    Tags:JavaScript UI   点击:(222)  评论:(0)  加入收藏
下载开发工具:https://developer.harmonyos.com从链接 https://developer.harmonyos.com/cn/docs/documentation/doc-guides/document-outline-0000001064589184获得开发指南...【详细内容】
2022-02-16  活力行动    Tags:HarmonyOS   点击:(118)  评论:(0)  加入收藏
今天继续分享有关 HarmonyOS 系统的开发组件布局类的知识,我们将在此系统上进行 App 应用开发,主要内容是讲常用的组件布局类有哪些以及它们的使用方式。分享的逻辑是先学习布...【详细内容】
2022-02-07  Candy.W    Tags:HarmonyOS   点击:(113)  评论:(0)  加入收藏
今天我们来谈谈当下最火爆的万物互联的操作系统&mdash;Harmony OS,这是国人的骄傲,也是每一个中华儿女值得去学习和研究的国产操作系统。在这里主要是想通过自己所写的一个小...【详细内容】
2022-02-04  Candy.W    Tags:HarmonyOS   点击:(266)  评论:(0)  加入收藏
百度地图开放平台现在也开始推出自己的HarmonyOS地图SDK轻量版,这表示我们的百度地图开发者也能在HarmonyOS系统开发环境中接入百度地图的地图服务功能,而且安卓开发工程师也...【详细内容】
2021-12-30  猪小P数码空间    Tags:鸿蒙APP   点击:(440)  评论:(0)  加入收藏
在上一篇帖子《使用Python开发鸿蒙设备程序(1-GPIO外设控制)》中,已经成功的使用 Python 对 GPIO 上的外设进行了控制。这其实不是什么大不了的事,从功能的角度也着实不值得炫耀...【详细内容】
2021-09-23  鸿蒙开发者老王  微信公众号  Tags:开发鸿蒙   点击:(208)  评论:(0)  加入收藏
鸿蒙编程要用到Java,现在还是菜鸟阶段,先练基础吧。而且白天要工作,只能晚上学习,希望能坚持下去。根据教程,这次提供了一个for语句,以前大学时学过,感觉应该比较简单,先打开记事本...【详细内容】
2021-06-25  浮云终散尽    Tags:鸿蒙系统   点击:(293)  评论:(0)  加入收藏
华为开发者大会已经结束不久,我想大家应该都知道鸿蒙系统是基于什么语言开发的了。实际上大部分操作系统的开发基本上离不开C/C++、汇编语言、Java这三种编程语言。不过,我相...【详细内容】
2021-06-24  鸿蒙开发者老王    Tags:鸿蒙OS   点击:(271)  评论:(0)  加入收藏
鸿蒙开始于 2012 年,虽一开始定位于物联网方向,但到如今,已经发展为一款可兼容 Android 应用的跨平台操作系统. 最新的 2.0 的官方描述是: HarmonyOS 是新一代的智能终端操...【详细内容】
2021-06-18  燚磕工作室    Tags:HarmonyOS   点击:(592)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条