$app - 应用操作

  • 更新时间:2025-12-13 11:58:44

应用操作

这里包含了一写常用的应用操作、意图操作、或者一些拓展操作:发送短信等等。

获取图标(名称)

获取应用图标

  • 参数 : 名称 {字符串} 应用名称或包名

  • 返回 : {Image} 图标

  • 版本 : 1.6.8

//获取悬浮窗权限
$悬浮窗.获取权限();
//获取图标
定义 图标 = $应用.获取图标("QQ");//应用名称或者包名
//显示图片
$图片.显示(图标);//(需要用悬浮窗权限) 也可以直接调用 图标.显示(); //图标是{Image}类对象,因此可以世界调用'显示()'方法。

运行应用(应用名称)

运行应用

  • 参数 : 应用名称 {字符串} 应用名

  • 返回 : {布尔值} 是否运行成功

  • 版本 : 1.6.8

$应用.运行应用("QQ");//应用名

启动应用(应用名称)

运行应用

这个函数的效果和 $应用.运行应用("应用"); 相同

  • 参数 : 应用名称 {字符串} 应用名称

  • 返回 : {布尔值} 是否运行成功

  • 版本 : 1.6.8

$应用.启动应用("QQ");//应用名

启动(应用名称)

运行应用

这个函数的效果和$应用.运行应用("应用");相同

  • 参数 : 应用名称 {字符串} 应用名称

  • 返回 : {布尔值} 是否运行成功

  • 版本 : 1.6.8

$应用.启动("QQ");//应用名或包名

启动包(包名)

运行包名

此函数和$应用.运行包("包名");效果相同

  • 参数 : 包名 {字符串} 程序包名

  • 返回 : {布尔值} 是否跳转成功

  • 版本 : 1.6.8

$应用.启动包("com.tencent.mobileqq");//传入包名

运行包(包名)

运行包名

  • 参数 : 包名 {字符串} 程序包名

  • 返回 : {布尔值} 是否跳转成功

  • 版本 : 1.6.8

$应用.运行包("com.tencent.mobileqq");//传入包名

运行(名称)

打开应用(推荐)

最简洁的启动应用函数,推荐使用

  • 参数 : 名称 {字符串} 包名或程序名称

  • 返回 : {布尔值} 是否打开成功

  • 版本 : 1.6.8

$应用.运行("QQ");//可传入包名或者应用名

罗列()

获得应用列表

  • 返回 : {AppInfo[]} 应用信息列表

  • 版本 : 1.6.8

//获得所有应用信息
定义 应用信息列表 = $应用.罗列();//返回一个AppInfo的列表
//打印所应用信息
循环(定义 下标 = 0 ; 下标 < 应用信息列表.size() ; i++){
    定义 应用信息 = 应用信息列表.get(下标);//获得{AppInfo}对象(注意{AppInfo}是由本平台封装的对象)
    //一些常用属性
    定义 应用名 = 应用信息.应用名称;//应用名称{字符串}
    定义 包名 = 应用信息.包名;//包名{字符串}
    定义 图标 = 应用信息.图标;//图标{Image} 可以直接调用 图标.显示(); 显示出来(注意{Image}是由本平台封装的对象)
    定义 原生信息 = 应用信息.原生信息;//安卓原生应用信息{android.content.pm.ApplicationInfo}
    //{ApplicationInfo}常用属性(安卓自带的对象:需要参考安卓API)
    定义 应用安装路径 = 原生信息.sourceDir; // {字符串}应用APK文件的路径
    定义 应用的类名 = 原生信息.className; // {字符串}应用的主Application类名
    定义 应用的包名 = 原生信息.packageName; // {字符串}应用的包名
    定义 应用组件工厂 = 原生信息.appComponentFactory; // {字符串}应用组件工厂类,用于创建Activity、Service等组件
    定义 sdk代号 = 原生信息.compileSdkVersion; // {整数}应用编译时使用的SDK版本号
    定义 sdk名称 = 原生信息.compileSdkVersionCodename; // {字符串}应用编译时使用的SDK版本代号,如"Q"、"R"等
    定义 数据目录 = 原生信息.dataDir; // {字符串}应用的数据目录,一般为/data/data/包名
    定义 数据保护目录 = 原生信息.deviceProtectedDataDir; // {字符串}设备受保护存储中的应用数据目录
}

罗列用户应用()

获得用户应用列表

  • 返回 : {AppInfo[]} 应用列表

  • 版本 : 1.6.8

//获得用户应用列表
定义 应用列表 = $应用.罗列用户应用();
//打印所应用信息
循环(定义 信息 关于 应用列表){
    打印(信息);
}

罗列系统应用()

获得系统应用列表

  • 返回 : {AppInfo[]} 应用列表

  • 版本 : 1.6.8

//获得系统应用列表
定义 应用列表 = $应用.罗列系统应用();
//打印所应用信息
循环(定义 信息 关于 应用列表){
    打印(信息);
}

罗列最近应用()

获得最近运行的应用

  • 返回 : {AppTaskInfo[]} 应用信息列表

  • 版本 : 1.6.8

//获得最近运行的应用(需要用到查询应用使用情况的权限)
如果 ($应用.有使用情况权限()) {
    定义 应用列表 = $应用.罗列最近应用();
    如果 (应用列表 !==) {
        循环 (定义 信息 关于 应用列表) {
            //常用属性:(可参考AppTaskInfo文档)
            定义 应用名 = 信息.应用名称; //{字符串}应用名称
            定义 包名 = 信息.包名; //{字符串}包名
            定义 最后使用时间 = 信息.最后使用时间; //{字符串}最后使用时间 对lastUsedTime进行格式化日期的字符串
            定义 最后使用的时间 = 信息.最后使用的时间; //{long}最后使用时间
            定义 原生信息 = 信息.原生信息; //{android.content.pm.ApplicationInfo}应用信息(安卓类对象)
        }
    }
} 否则 {
    //获取查询应用使用情况的权限
    $应用.获取使用情况权限();
}

启动活动(名称)

打开AIGame中的界面

允许用户打开本应用中集成的各种调试界面:Log日志、Device设备信息、Ocr文字识别、Yolo目标检测、Shizuku高级权限等。

  • 参数 : 名称 {字符串} 界面名称

  • 版本 : 1.6.9

//打开日志界面
$应用.启动活动("log");//推荐写法
$应用.启动活动("console");//兼容auto.js写法
//打开设备信息界面
$应用.启动活动("device");
//打开OCR调试界面
$应用.启动活动("ocr");
//打开Yolo调试界面
$应用.启动活动("yolo");
//打开Shizuku调试界面
$应用.启动活动("shizuku");

启动活动(包名或应用名, 活动名)

启动活动

  • 参数 : 包名或应用名 {字符串} 包名或应用名

  • 参数 : 活动名 {字符串} activity地址

  • 返回 : {布尔值} 是否跳转成功

  • 版本 : 1.6.8

//打开QQ
$应用.启动活动("QQ","com.tencent.mobileqq.activity.SplashActivity");

包存在(包名)

包名是否存在

  • 参数 : 包名 {字符串} 包名

  • 返回 : {布尔值} 是否存在

  • 版本 : 1.6.8

定义 包名 = "org.aigame.pro";
如果 ($应用.包存在(包名)) {
    提示(包名,"存在");
} 否则 {
    提示(包名,"不存在");
}

获取包名(应用名)

获得包名名称

效果和$应用.包名("QQ");相同

  • 参数 : 应用名 {字符串} app名称

  • 返回 : {字符串} 包名

  • 版本 : 1.6.8

//获得包名
定义 包名 = $应用.获取包名("QQ");
提示("应用包名",包名);

包名(应用名)

获得包名名称

  • 参数 : 应用名 {字符串} app名称

  • 返回 : {字符串} 包名

  • 版本 : 1.6.8

//获得包名
定义 包名 = $应用.包名("QQ");
提示("应用包名",包名);

应用名(包名)

根据包名拿应用名

  • 参数 : 包名 {字符串} 包名

  • 返回 : {字符串} app名称

  • 版本 : 1.6.8

//获得应用名
定义 应用名 = $应用.应用名("com.android.settings");
提示("应用名称",应用名);//设置

安装应用(apk路径)

安装apk文件

此函数会获取系统的安装意图,然后尝试安装apk文件,前提是apk文件必须存在

  • 参数 : apk路径 {字符串} 路径(支持相对路径)

  • 返回 : {布尔值} 是否成功获取安装意图

  • 版本 : 1.6.8

//安装本地apk文件
$应用.安装应用("./apk/qq.apk");

卸载应用(应用名)

卸载应用

  • 参数 : 应用名 {字符串} 应用名称

  • 版本 : 1.6.8

//此函数部分手机不支持
//卸载QQ
$应用.卸载应用("QQ");

卸载包(包名)

卸载包名

部分手机不支持

  • 参数 : 包名 {字符串} 应用名称或包名

  • 版本 : 1.6.8

//此函数部分手机不支持
//卸载QQ
$应用.卸载包("com.tencent.mobileqq");

卸载(包名或应用名)

卸载

  • 参数 : 包名或应用名 {字符串} 应用名称或包名

  • 版本 : 1.6.8

//此函数部分手机不支持
//卸载QQ
$应用.卸载("QQ");//应用名或包名

打开链接(url)

打开链接

如果传入的网址不是以"http"开头的,则默认追加"http://"到连接前面

  • 参数 : url {字符串} 网页链接

  • 版本 : 1.6.8

//打开网址
定义 链接 = "www.baidu.com";
$应用.打开链接(链接);//http://www.baidu.com

分享图片(图片路径)

分享图片

  • 参数 : 图片路径 {字符串} 图片路径

  • 版本 : 1.6.8

//分享本地图片
定义 路径 = "/sdcard/Pictures/t01.png";
$应用.分享图片(路径);

分享文本(文本内容)

分享文本

  • 参数 : 文本内容 {字符串} 内容

  • 版本 : 1.6.8

//分享文本
定义 文本 = "你好";
$应用.分享文本(文本);

发送短信(电话号码, 短信内容)

发送短信

跳转到发送短信的界面

  • 参数 : 电话号码 {字符串} 电话号码

  • 参数 : 短信内容 {字符串} 短信内容

  • 版本 : 1.6.8

$应用.发送短信("13593749477","你好我是xxx");

打电话(号码)

拨打电话

如果拥有电话权限会直接拨通电话

  • 参数 : 号码 {字符串} 电话号码

  • 版本 : 1.6.8

$应用.打电话("13593749477");

发送邮件(收件邮箱地址, 标题, 内容)

发送邮件

需要手机有自带的邮箱功能或应用

  • 参数 : 收件邮箱地址 {字符串} 收件邮箱

  • 参数 : 标题 {字符串} 标题

  • 参数 : 内容 {字符串} 内容

  • 返回 : {布尔值} 是否发送成功

  • 版本 : 1.6.8

$应用.发送邮件("3502037911@qq.com","标题","内容");

打开应用设置(应用名或包名)

打开应用设置

和$应用.appSetting("AIGame Pro");效果相同

会打开应用详情设置界面

  • 参数 : 应用名或包名 {字符串} 应用名称或包名

  • 返回 : {布尔值} 是否打开成功

  • 版本 : 1.6.8

//前往权限设置界面
$应用.打开应用设置("AIGame");

应用设置(应用名或包名)

打开应用设置

会打开应用详情设置界面

  • 参数 : 应用名或包名 {字符串} 应用名称或包名

  • 返回 : {布尔值} 是否打开成功

  • 版本 : 1.6.8

//前往权限设置界面
$应用.应用设置("AIGame");

查看文件(文件路径)

查看文件

  • 参数 : 文件路径 {字符串} 文件路径

  • 返回 : {布尔值} 是否打开成功

  • 版本 : 1.6.8

//打开文件
$应用.查看文件("/sdcard/Pictures/test.text");

编辑文件(文件路径)

编辑文件

  • 参数 : 文件路径 {字符串} 文件路径

  • 返回 : {布尔值} 是否打开成功

  • 版本 : 1.6.8

//编辑文件
$应用.编辑文件("/sdcard/Pictures/test.text");

有使用情况权限()

是否有使用情况权限

  • 返回 : {布尔值} 是否有使用情况权限

  • 版本 : 1.6.8

$应用.有使用情况权限();

获取使用情况权限()

获取使用情况权限

  • 返回 : {布尔值} 是否打开成功

  • 版本 : 1.6.8

$应用.获取使用情况权限();

意图(options)

创建意图

  • 参数 : options {Object} 配置参数

  • 返回 : {Intent} 意图

  • 版本 : 1.6.8

//写必要的参数
定义 配置 = {
    action: "android.intent.action.VIEW",//只写VIEW也可以(自动追加前缀:"android.intent.action.")
    data: "https://www.baidu.com",//数据内容
    pkg: "com.baidu.BaiduMap",//包名
    type: "text/plain",//数据类型
    flags: ["FLAG_ACTIVITY_NEW_TASK","..."],//标志
    component: {
        cls: "org.aigame.pro.ActivityMain",
        pkg: "org.aigame.pro"
    },//组件
    categories: ["CATEGORY_DEFAULT","..."],//类别
    extras:[{
        name:"",
        value:""
    },{
        name:"",
        value:""
    }]//额外内容
}
//创建意图
定义 意图 = $应用.意图(配置);

发送广播(意图对象)

发送异步广播

  • 参数 : 意图对象 {Intent} 意图

  • 版本 : 1.6.8

发送广播(意图对象, 权限)

发送异步广播(含权限)

  • 参数 : 意图对象 {Intent} 意图

  • 参数 : 权限 {字符串} 权限

  • 版本 : 1.6.8

发送有序广播(意图对象, 权限)

发送同步广播

  • 参数 : 意图对象 {Intent} 意图

  • 参数 : 权限 {字符串} 权限

  • 版本 : 1.6.8

启动活动(意图对象)

用意图启动Activity

  • 参数 : 意图对象 {Intent} 意图

  • 版本 : 1.6.8

启动活动(配置)

启动Activity

  • 参数 : 配置 {Object} 意图配置

  • 版本 : 1.6.8

获取前台应用()

获取前台应用

此方法只在低版本安卓中有明显效果,建议使用 $root.lsRunningApps((pkg)=>{}); 来获取前台应用

  • 返回 : {字符串数组[]} 前台应用包名列表

  • 版本 : 1.6.8

杀死应用(应用名或包名)

杀死应用

如果有root权限,优先使用root权限来杀死应用,如果有shizuku则使用shizuku来杀死应用

在低版本的安卓中,直接就可以通过活动管理器杀死应用,但是在较高版本的安卓中(安卓9+)很可能无法直接杀死应用进程。

  • 参数 : 应用名或包名 {字符串} 应用名或包名

  • 版本 : 1.6.8

//结束应用
$应用.杀死应用("QQ");

发送彩信(电话号码, 标题, 短信内容, 图片路径)

发送彩信

  • 参数 : 电话号码 {字符串} 电话号码

  • 参数 : 标题 {字符串} 主题(可为null)

  • 参数 : 短信内容 {字符串} 短信内容

  • 参数 : 图片路径 {字符串} 图片全路径(无法支持相对路径)

  • 版本 : 1.6.8

//发送彩信
$应用.发送彩信("13800000000", "测试彩信", "这是一条彩信", "/sdcard/DCIM/100ANDRO/IMG_20230801_100000.jpg");

打开自己()

打开自身

打开自身的主活动(通常是启动器图标点击后的活动)。

此方法尝试使用启动器意图来打开应用。如果失败(例如,应用未安装),则会创建一个新的意图来启动主活动。

如果是打包后的apk则会打开打包后的apk主界面

  • 版本 : 1.6.8

//打开自身应用
$应用.打开自己();