autojs脚本引擎开发的的Intent生成器工具源码免费分享开源
说明
本文提供的代码仅供参考。
可能有些地方在最新版本的Auto.js上面需要做修改,才能运行。
Auto.js简介
Auto.js是利用安卓系统的“辅助功能”实现类似于按键精灵一样,可以通过代码模拟一系列界面动作的辅助工作。
与“按键精灵”不同的是,它的模拟动作并不是简单的使用在界面定坐标点来实现,而是类似与win一般,找窗口句柄来实现的。
Auto.js使用JavaScript作为脚本语言,目前使用Rhino 1.7.7.2作为脚本引擎,支持ES5与部分ES6特性。
开发文档
Auto.js Pro开发文档优化版
文档尚在完善中,可能有文档描述和代码实际行为有出入的情况。
模板、样式、generator来自Node.js。
为什么要使用Auto.js Pro开发脚本,有什么特点?
吸引我使用Auto.js Pro的原因有很多。最主要的几个原因是:
- Auto.js Pro能开发免ROOT的安卓脚本
- Auto.js Pro基于节点操作,能开发全分辨率的脚本,自动适配各种安卓机型
- Auto.js Pro丰富的UI组件,能自定义各种样式的安卓界面
- Auto.js Pro使用的javascript的语法比较优雅,代码可读性强
- Auto.js Pro的命令库非常的丰富,接口比较多
- Auto.js Pro脚本文件体积比较小。1000行的代码,打包后的apk文件只有3-5M,还没有广告
相关教程
Auto.js Pro安卓全分辨率免ROOT引流脚本开发教程
示例代码
//此代码由飞云脚本圈整理提供(www.feiyunjs.com)
"ui";var color = "#009688";
ui.layout(<drawer id="drawer"><vertical h="*" w="*"><appbar><toolbar id="toolbar" title="Intent生成器 V0.2"/></appbar><frame id="body" h="*" w="*"></frame></vertical><vertical layout_gravity="left" bg="#ffffff" w="280"><list id="menu"><horizontal bg="?selectableItemBackground" w="*"><img w="50" h="50" padding="16" src="{{this.icon}}" tint="{{color}}"/><text textColor="black" textSize="15sp" text="{{this.title}}" layout_gravity="center"/></horizontal></list></vertical></drawer>
);
activity.setSupportActionBar(ui.toolbar);
ui.toolbar.setupWithDrawer(ui.drawer);
ui.menu.on("item_click", item => {if (item.onclick) item.onclick();ui.drawer.closeDrawers();
});
function setContainer(v) {ui.body.removeAllViews();ui.body.addView(v, new android.widget.FrameLayout.LayoutParams(-1, -1));
}ui.menu.setDataSource([{title: "首页",icon: "@drawable/ic_android_black_48dp",onclick: () => aboutUi.activate()
}, {title: "启动Activity",icon: "@drawable/ic_android_black_48dp",onclick: () => launchUi.activate()
}, {title: "隐藏Activity",icon: "@drawable/ic_android_black_48dp",onclick: () => hiddenUi.activate()
}, {title: "退出",icon: "@drawable/ic_exit_to_app_black_48dp",onclick: () => ui.finish()
}]);
var aboutUi = {ui : ui.inflate(<vertical padding="15dp"><text textColor="black" textSize="15sp">本生成器用于生成Auto.js可用的启动Intent的代码</text></vertical>),activate : function() {setContainer(this.ui);}
}
function intentAsJson(intent) {var r = {};if (intent.action) r.action = String(intent.action);if (intent.type) r.type = String(intent.type);if (intent.data) r.data = String(intent.data);if (intent.component) {r.packageName = String(intent.component.packageName);r.className = String(intent.component.className);}return r;
}
function copyIntent(json) {dialogs.select("操作", ["查看JSON", "复制为app.intent", "复制为app.startActivity", "直接启动"], i => {switch (i) {case 0:dialogs.alert("Intent JSON", JSON.stringify(json, null, 4));break;case 1:setClip("app.intent(" + JSON.stringify(json, null, 4) + ");");break;case 2:setClip("app.startActivity(" + JSON.stringify(json, null, 4) + ");");break;case 3:app.startActivity(json);break;}});
}
var launchUi = {ui : ui.inflate(<vertical gravity="center"><progressbar id="launch_progress" /><list id="launch_list" h="*" w="*"><vertical padding="8dp" w="*"><text textColor="black" textSize="14sp" text="{{this.name}}" /><text textSize="12sp" text="{{this.packageName}}" /></vertical></list></vertical>),initList : function() {var self = this;ui.launch_progress.visibility = android.view.View.VISIBLE;ui.launch_list.visibility = android.view.View.GONE;threads.start(function() {self.listData = self.loadList();ui.run(function() {ui.launch_list.setDataSource(self.listData);ui.launch_progress.visibility = android.view.View.GONE;ui.launch_list.visibility = android.view.View.VISIBLE;});});ui.launch_list.on("item_click", item => {copyIntent(item.intent);});},loadList : function() {var pm = context.getPackageManager();var lp = pm.getInstalledPackages(0).toArray();var i, r = [], t;for (i in lp) {if (!lp[i].applicationInfo) continue;if (!(t = pm.getLaunchIntentForPackage(lp[i].packageName))) continue;r.push({name : pm.getApplicationLabel(lp[i].applicationInfo),packageName : lp[i].packageName,intent : intentAsJson(t)});}return r;},activate : function() {setContainer(this.ui);if (!this.inited) this.initList();this.inited = true;}
}var hiddenUi = {ui : ui.inflate(<vertical gravity="center"><progressbar id="hidden_progress" /><list id="hidden_list" h="*" w="*"><vertical padding="8dp" w="*"><text textColor="black" textSize="14sp" text="{{this.name}}" /><text textSize="12sp" text="{{this.packageName + ' (' + this.intents.length + '个Activity)'}}" /></vertical></list></vertical>),initList : function() {var self = this;ui.hidden_progress.visibility = android.view.View.VISIBLE;ui.hidden_list.visibility = android.view.View.GONE;threads.start(function() {self.listData = self.loadList();ui.run(function() {ui.hidden_list.setDataSource(self.listData);ui.hidden_progress.visibility = android.view.View.GONE;ui.hidden_list.visibility = android.view.View.VISIBLE;});});ui.hidden_list.on("item_click", item => {dialogs.select("选择Activity", item.intents.map(e => e.name), i => {if (i < 0) return;copyIntent({action : "android.intent.action.MAIN",packageName : item.packageName,className : item.intents[i].className});});});},loadList : function() {var pm = context.getPackageManager();var lp = pm.getInstalledPackages(0).toArray();var i, j, cur, r = [], e, activities;for (i in lp) {cur = {name : pm.getApplicationLabel(lp[i].applicationInfo),packageName : lp[i].packageName,intents : []}r.push(cur);try {activities = pm.getPackageInfo(lp[i].packageName, 1).activities;for (j in activities) {e = activities[j];if (!e.enabled || !e.exported) continue;cur.intents.push({name : e.labelRes != 0 ?e.loadLabel(pm) + " (" + this.shortenName(e.name) + ")" :this.shortenName(e.name),className : e.name});}} catch(e) {log(e)}}return r;},shortenName : function(name) {var i = name.lastIndexOf(".");if (i < 0) return name;return name.slice(i + 1);},activate : function() {setContainer(this.ui);if (!this.inited) this.initList();this.inited = true;}
}
aboutUi.activate();
autojs脚本引擎开发的的Intent生成器工具源码免费分享开源相关推荐
- autojs免root脚本引擎开发的QQ空间说说点赞源码
说明 本文提供的代码仅供参考.不建议用于生产环境. 可能有些地方在最新版本的Auto.js上面需要做修改,才能运行. Auto.js简介 Auto.js是利用安卓系统的"辅助功能" ...
- autojs免root脚本引擎开发的QQ名片点赞源码免费分享
说明 本文提供的代码仅供参考.不建议用于生产环境. 可能有些地方在最新版本的Auto.js上面需要做修改,才能运行. Auto.js简介 Auto.js是利用安卓系统的"辅助功能" ...
- autojs脚本引擎实现的安卓手机发短信源码
说明 本文提供的代码仅供参考.不建议用于生产环境. 可能有些地方在最新版本的Auto.js上面需要做修改,才能运行. Auto.js简介 Auto.js是利用安卓系统的"辅助功能" ...
- android 脚本引擎,autojs脚本引擎实现的安卓手机发短信源码
说明 本文提供的代码仅供参考.不建议用于生产环境. 可能有些地方在最新版本的Auto.js上面需要做修改,才能运行. Auto.js简介 Auto.js是利用安卓系统的"辅助功能" ...
- python小工具开发_python音乐下载小工具源码(tkinter)
[实例简介]入门级示例源码,搜狗音乐下载 [实例截图] [核心代码] import requests import re import tkinter #获取gethush def gethush(m ...
- 搜狗php开发,搜狗图床接口PHP源码案例分享
此源码转自唯爱网络,代码为PHP版本,调用搜狗图片上传. 此代码为PHP 类,请自行下载研究. namespace app\home\controller; use app\home\controll ...
- PHP开发的爱养车网站源码 养车O2O平台源码
PHP开发的爱养车网站源码/租车卖车保险维修保养车险业务平台/养车O2O平台源码, 安装环境:SSL+PHP7.2+MYSQL+伪静态+Redis 源码免费分享,需要学习可私信我. 系统采用FastA ...
- SpringBoot-web开发(二): 页面和图标定制(源码分析)
[SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) 目录 一.首页 1. 源码分析 2. 访问首页测试 二.动态页面 1. 动态资源目录t ...
- 用ionic快速开发hybird App(已附源码,在下面+总结见解)
用ionic快速开发hybird App(已附源码,在下面+总结见解) 1.ionic简介 ionic 是用于敏捷开发APP的解决方案.核心思路是:利用成熟的前端开发技术,来写UI和业务逻辑.也就是说 ...
最新文章
- python3+requests库框架设计08-发送邮件
- 7月清北学堂培训 Day 5
- 【DSP复习主要知识点】(大概)
- 【JAVA基础篇】集合框架
- C#LeetCode刷题之#501-二叉搜索树中的众数​​​​​​​(Find Mode in Binary Search Tree)
- React中refs的理解
- element-ui主表格多选后 二级弹框表格默认全选数据
- linux 命令行 光标移动技巧
- soapui直接下载响应内容为本地的文件
- 杨辉三角相关性质以及组合数
- 有量纲和无量纲是什么意思_物理量和量纲
- Linux 下文件和目录的特点
- NPM => npm登录-发包-删包-整体流程
- 数据压缩实验 LZW编解码算法的实现与分析
- ui设计现状与意义_对于ui设计行业来说,用户界面设计的发展现状是什么?
- vce 题库导入_PDF 题库转VCE 文件
- 计算机类专业教指委委员名单,教育部高等学校计算机类专业教学指导委员会举办《高校计算机系统能力培养教学研讨会》...
- 中外企业文化杂志中外企业文化杂志社中外企业文化编辑部2022年第5期目录
- 手动绘制R语言Logistic回归模型的外部验证校准曲线(Calibration curve)(2)
- 系统程序员成长计划-管道过滤器(Pipe-And-Filter)模式
热门文章
- 从顶会层面看科研!计算机顶级会议大盘点(下)
- C++中的结构体与类
- 2021-2027全球与中国工业RFID特种电子标签市场现状及未来发展趋势
- Drools(8):WorkBench使用
- 怎么去除pdf文件的水印?好用软件说明
- quartus 2操作
- ASP.NET AJAX---TimerHiddenField控件小实例 (实现倒计时)
- java中shot占几个字节_Java 占用字节数
- 【毕业设计】基于RFID的门禁系统 - 单片机 物联网 嵌入式 stm32
- 螺旋测微器b类不确定度_物理实验直测量不确定度评估.ppt