应用 - APP
# App
app模块提供一系列函数,用于使用其他应用、与其他应用交互。例如发送意图、打开文件、发送邮件等。
同时提供了方便的进阶函数startActivity和sendBroadcast,用他们可完成app模块没有内置的和其他应用的交互。
## launch(packageName)
|参数|类型|描述|
|-|-|-|
|packageName |string|应用包名|
**通过包名启动应用**。如果该包名对应的应用不存在,则返回false;否则返回true。
该函数也可以作为全局函数使用。
```js
//启动微信
launch("com.tencent.mm");
```
## launchApp(appName)
|参数|类型|描述|
|-|-|-|
|appName |string|应用名称|
**通过名称启动应用**。如果该名称对应的应用不存在,则返回false; 否则返回true。
如果该名称对应多个应用,则只启动其中某一个。
该函数也可以作为全局函数使用。
```js
launchApp("Auto.js");
```
> 非官方例子
```js
//启动APP
if (currentPackage() != "com.chaoxing.mobile") {
toast("即将打开超星!");
//直接打开学习通
app.launchApp("学习通");
} else {
toast("已经在学习通中,即将开始进行下一步操作!");
};
```
## launchPackage(packageName)
|参数|类型|描述|
|-|-|-|
|packageName |string|应用包名|
相当于launch(packageName)。
> 非官方例子
```js
while (true) {
if (currentPackage() != "com.chaoxing.mobile") {
toast("即将打开超星!");
//直接打开学习通
app.launchPackage("com.chaoxing.mobile");
sleep(5000)
} else {
toast("已经在学习通中,即将开始进行下一步操作!");
break;
};
};
```
## getPackageName(appName)
|参数|类型|描述|
|-|-|-|
|appName |string|应用名称|
**获取应用名称对应的已安装的应用的包名**。如果该找不到该应用,返回null;
如果该名称对应多个应用,则只返回其中某一个的包名。
该函数也可以作为全局函数使用。
```js
var name = getPackageName("QQ");
//返回"com.tencent.mobileqq"
```
## getAppName(packageName)
|参数|类型|描述|
|-|-|-|
|packageName |string|应用包名|
**获取应用包名对应的已安装的应用的名称**。如果该找不到该应用,返回null。
该函数也可以作为全局函数使用。
```js
var name = getAppName("com.tencent.mobileqq"); //返回"QQ"
```
## app.versionCode
|返回值|
|-|-|-|
|number|
**当前软件版本号**,整数值。例如160, 256等。
如果在Auto.js中运行则为Auto.js的版本号;在打包的软件中则为打包软件的版本号。
```js
toastLog(app.versionCode);
```
## app.versionName
|返回值|
|-|-|-|
|string|
**当前软件的版本名称**,例如"3.0.0 Beta"。
如果在Auto.js中运行则为Auto.js的版本名称;在打包的软件中则为打包软件的版本名称。
```js
toastLog(app.verionName);
```
## app.autojs.versionCode
|返回值|
|-|-|-|
|number|
Auto.js版本号,整数值。例如160, 256等。
## app.autojs.versionName
|返回值|
|-|-|-|
|string|
Auto.js版本名称,例如"3.0.0 Beta"。
## app.openAppSetting(packageName)
|参数|类型|描述|
|-|-|-|
|packageName |string|应用包名|
**打开应用的详情页(设置页)**。如果找不到该应用,返回false; 否则返回true。
该函数也可以作为全局函数使用。
## app.viewFile(path)
|参数|类型|描述|
|-|-|-|
|path|string|文件路径|
**用其他应用查看文件**。文件不存在的情况由查看文件的应用处理。
如果找不出可以查看该文件的应用,则抛出ActivityNotException。
```
//查看文本文件
app.viewFile("/sdcard/1.txt");
```
## app.editFile(path)
|参数|类型|描述|
|-|-|-|
|path|string|文件路径|
**用其他应用编辑文件**。文件不存在的情况由编辑文件的应用处理。
如果找不出可以编辑该文件的应用,则抛出ActivityNotException。
```js
//编辑文本文件
app.editFile("/sdcard/1.txt/);
```
## app.uninstall(packageName)
|参数|类型|描述|
|-|-|-|
|packageName |string|应用包名|
**卸载应用**。
执行后会会弹出卸载应用的提示框。如果该包名的应用未安装,由应用卸载程序处理,可能弹出"未找到应用"的提示。
```js
//卸载QQ
app.uninstall("com.tencent.mobileqq");
```
## app.openUrl(url)
|参数|类型|描述|
|-|-|-|
|url |string|网站的Url,如果不以"http://"或"https://"开头则默认是"http://"|
**用浏览器打开网站url**。
如果没有安装浏览器应用,则抛出ActivityNotException。
```js
//创建选项菜单(右上角)
//此代码由飞云脚本圈原创(www.feiyunjs.com)
ui.emitter.on("create_options_menu", menu => {
menu.add("日志");
menu.add("官网");
menu.add("关于");
});
//监听选项菜单点击
ui.emitter.on("options_item_selected", (e, item) => {
switch (item.getTitle()) {
case "日志":
app.startActivity('console');
break;
case "官网":
app.openUrl("http://www.feiyunjs.com");
break;
case "关于":
alert("飞云脚本圈", 'Copyright © feiyunjs.com\r\n大风起兮云飞扬,小雨落兮脚本忙');
break;
}
e.consumed = true;
});
```
## app.sendEmail(options)
|参数|类型|描述|
|-|-|-|
|options |Object|发送邮件的参数。包括:|
- email {string} | {Array} 收件人的邮件地址。如果有多个收件人,则用字符串数组表示
- cc {string} | {Array} 抄送收件人的邮件地址。如果有多个抄送收件人,则用字符串数组表示
- bcc {string} | {Array} 密送收件人的邮件地址。如果有多个密送收件人,则用字符串数组表示
- subject {string} 邮件主题(标题)
- text {string} 邮件正文
- attachment {string} 附件的路径。
**根据选项options调用邮箱应用发送邮件**。这些选项均是可选的。
如果没有安装邮箱应用,则抛出ActivityNotException。
```js
//发送邮件给10086@qq.com和10001@qq.com
app.sendEmail({
email: ["10086@qq.com", "10001@qq.com"],
subject: "这是一个邮件标题",
text: "这是邮件正文"
});
```
## app.startActivity(name)
|参数|类型|描述|
|-|-|-|
|name |string|活动名称,可选的值为:|
- console 日志界面
- settings 设置界面
启动Auto.js的特定界面。该函数在Auto.js内运行则会打开Auto.js内的界面,在打包应用中运行则会打开打包应用的相应界面。
```js
app.startActivity("console");
```