JAVA代码如下:
package com.simple.component;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import java.util.ArrayList;
import java.util.List;
/**
* Android应用包名查找工具
* 提供静态方法根据应用名称查找对应的包名
*/
public class 应用名称查找包名 {
/**
* 根据应用名称精确查找包名(忽略大小写)
* @param 上下文 应用上下文
* @param 应用名称 应用名称(如:微信)
* @return 匹配的包名数组(可能为空数组)
*/
public static String[] 根据精确名称查找包名(Context 上下文, String 应用名称) {
if (上下文 == null) {
throw new IllegalArgumentException("上下文不能为null");
}
PackageManager 包管理器 = 上下文.getPackageManager();
List<String> 包名列表 = new ArrayList<>();
List<ApplicationInfo> 已安装应用列表 = 包管理器.getInstalledApplications(0);
for (ApplicationInfo 应用信息 : 已安装应用列表) {
String 显示名称 = 包管理器.getApplicationLabel(应用信息).toString();
if (显示名称.equalsIgnoreCase(应用名称)) {
包名列表.add(应用信息.packageName);
}
}
return 包名列表.toArray(new String[0]);
}
/**
* 根据应用名称模糊查找包名(忽略大小写)
* @param 上下文 应用上下文
* @param 关键字 搜索关键字(如:浏览器)
* @return 匹配的包名数组(可能为空数组)
*/
public static String[] 根据关键字查找包名(Context 上下文, String 关键字) {
if (上下文 == null) {
throw new IllegalArgumentException("上下文不能为null");
}
PackageManager 包管理器 = 上下文.getPackageManager();
List<String> 包名列表 = new ArrayList<>();
List<ApplicationInfo> 已安装应用列表 = 包管理器.getInstalledApplications(0);
for (ApplicationInfo 应用信息 : 已安装应用列表) {
String 应用标签 = 包管理器.getApplicationLabel(应用信息).toString();
if (应用标签.toLowerCase().contains(关键字.toLowerCase())) {
包名列表.add(应用信息.packageName);
}
}
return 包名列表.toArray(new String[0]);
}
}
XML如下:
<category name="不可视组件" comment="不可视类组件;该类组件通常用于处理非UI界面的数据;例如时钟、文件选择器、蓝牙等组件。">
<component name="时钟" comment="时钟;可用于循环处理指定业务代码;例如在APP中需要间隔指定时间调用某个函数、则可以使用该组件。">
<property name="时钟周期" type="整数型" comment="设置或获取当前时钟的时钟周期;单位为毫秒。" />
<property name="可用" type="逻辑型" comment="设置或获取当前时钟是否可用。" />
<method name="置周期事件回调" args="(回调对象 为 周期事件回调)" return="" comment="设置时钟的周期事件回调对象。" />
<interface name="周期事件回调" comment="监听当前时钟周期事件的回调。">
<event name="周期事件" args="(源对象 为 时钟)" comment="当周期事件被调用时触发该事件。" />
</interface>
</component>
<component name="应用名称查找包名" comment="用于根据应用名称查找对应的包名">
<method name="根据精确名称查找包名" args="(上下文 Context,应用名称 为 文本型)" return="文本型[] " comment="根据应用名称精确查找包名,返回文本型数组" />
<method name="根据关键字查找包名" args="(上下文 Context,应用名称 为 文本型)" return="文本型[] " comment="根据应用名称模糊查找包名(忽略大小写),返回文本型数组。" />
</component>
AI给的 错了别问我!我也不会
这是写成类库的方式,要在你安装的vcn的文件地址 的类库文件与xml文件下修改.我用的VcnStudio.Community版 安在了F:\上.
F:\VcnStudio.Community\sdk\android\components\primary\class 内建个 "应用名称查找包名.java"文件 内容就是上面的java代码
F:\VcnStudio.Community\sdk\android 内 打开 "sdk.xml" 文件 我是在 时钟下 加上 上面的5行文本
后面有时间会加上别的方法,或你加上别的方法也记得分.........
加了三个方法 :
package com.simple.component;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Android应用包名查找工具
* 提供静态方法根据应用名称查找对应的包名
*/
public class 应用名称查找包名 {
/**
* 根据应用名称精确查找包名(忽略大小写)
* @param 上下文 应用上下文
* @param 应用名称 应用名称(如:微信)
* @return 匹配的包名(若找到多个则返回第一个,未找到则返回null)
*/
public static String 根据精确名称查找包名(Context 上下文, String 应用名称) {
if (上下文 == null) {
throw new IllegalArgumentException("上下文不能为null");
}
PackageManager 包管理器 = 上下文.getPackageManager();
List<ApplicationInfo> 已安装应用列表 = 包管理器.getInstalledApplications(0);
for (ApplicationInfo 应用信息 : 已安装应用列表) {
String 显示名称 = 包管理器.getApplicationLabel(应用信息).toString();
if (显示名称.equalsIgnoreCase(应用名称)) {
return 应用信息.packageName; // 找到第一个匹配项后立即返回
}
}
return null; // 未找到匹配项
}
/**
* 根据应用名称模糊查找包名(忽略大小写)
* @param 上下文 应用上下文
* @param 关键字 搜索关键字(如:浏览器)
* @return 匹配的包名数组(可能为空数组)
*/
public static String[] 根据关键字查找包名(Context 上下文, String 关键字) {
if (上下文 == null) {
throw new IllegalArgumentException("上下文不能为null");
}
PackageManager 包管理器 = 上下文.getPackageManager();
List<String> 包名列表 = new ArrayList<>();
List<ApplicationInfo> 已安装应用列表 = 包管理器.getInstalledApplications(0);
for (ApplicationInfo 应用信息 : 已安装应用列表) {
String 应用标签 = 包管理器.getApplicationLabel(应用信息).toString();
if (应用标签.toLowerCase().contains(关键字.toLowerCase())) {
包名列表.add(应用信息.packageName);
}
}
return 包名列表.toArray(new String[0]);
}
/**
* 获取所有已安装应用的名称
* @param 上下文 应用上下文
* @return 所有应用名称的数组(按字母顺序排序)
*/
public static String[] 取所有的应用名(Context 上下文) {
if (上下文 == null) {
throw new IllegalArgumentException("上下文不能为null");
}
PackageManager 包管理器 = 上下文.getPackageManager();
List<ApplicationInfo> 已安装应用列表 = 包管理器.getInstalledApplications(0);
List<String> 应用名称列表 = new ArrayList<>();
for (ApplicationInfo 应用信息 : 已安装应用列表) {
String 应用名称 = 包管理器.getApplicationLabel(应用信息).toString();
应用名称列表.add(应用名称);
}
Collections.sort(应用名称列表);
return 应用名称列表.toArray(new String[0]);
}
/**
* 获取用户安装的应用名(非系统应用)
* @param 上下文 应用上下文
* @return 用户安装的应用名称的数组(按字母顺序排序)
*/
public static String[] 取用户安装的应用名(Context 上下文) {
if (上下文 == null) {
throw new IllegalArgumentException("上下文不能为null");
}
PackageManager 包管理器 = 上下文.getPackageManager();
List<ApplicationInfo> 已安装应用列表 = 包管理器.getInstalledApplications(0);
List<String> 应用名称列表 = new ArrayList<>();
for (ApplicationInfo 应用信息 : 已安装应用列表) {
// 过滤掉系统应用
if ((应用信息.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
String 应用名称 = 包管理器.getApplicationLabel(应用信息).toString();
应用名称列表.add(应用名称);
}
}
Collections.sort(应用名称列表);
return 应用名称列表.toArray(new String[0]);
}
/**
* 获取系统应用名
* @param 上下文 应用上下文
* @return 系统应用名称的数组(按字母顺序排序)
*/
public static String[] 取系统应用名(Context 上下文) {
if (上下文 == null) {
throw new IllegalArgumentException("上下文不能为null");
}
PackageManager 包管理器 = 上下文.getPackageManager();
List<ApplicationInfo> 已安装应用列表 = 包管理器.getInstalledApplications(0);
List<String> 应用名称列表 = new ArrayList<>();
for (ApplicationInfo 应用信息 : 已安装应用列表) {
// 仅保留系统应用
if ((应用信息.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
String 应用名称 = 包管理器.getApplicationLabel(应用信息).toString();
应用名称列表.add(应用名称);
}
}
Collections.sort(应用名称列表);
return 应用名称列表.toArray(new String[0]);
}
}
xml:
<component name="应用名称查找包名" comment="用于根据应用名称查找对应的包名">
<method name="根据精确名称查找包名" args="(上下文 Context,应用名称 为 文本型)" return="文本型 " comment="根据应用名称精确查找包名,返回文本型" />
<method name="根据关键字查找包名" args="(上下文 Context,应用名称 为 文本型)" return="文本型[] " comment="根据应用名称模糊查找包名(忽略大小写),返回文本型数组。" />
<method name="取所有的应用名" args="(上下文 Context)" return="文本型[] " comment="获取所有已安装应用的名称,返回所有应用名称的数组(按字母顺序排序)"/>
<method name="取用户安装的应用名" args="(上下文 Context)" return="文本型[] " comment="获取用户安装的应用名(非系统应用),返回用户安装的应用名称的数组(按字母顺序排序)" />
<method name="取系统应用名" args="(上下文 Context)" return="文本型[] " comment="获取系统应用名,返回系统应用名称的数组(按字母顺序排序).有的系统应用是打不开的!" />
</component>