autojs读取内部存储
autojs读取内部存储内容:
importostotal_folder_path='ccc_123456'
total_folder_list=os.listdir(total_folder_path)fortotal_folderintotal_folder_list:
new_total_folder_path=os.path.join(total_folder_path,total_folder)print(new_total_folder_path)
ccCAutoJS是一款新的手机脚本开发工具,开发语言是JS,开发门槛低,做过网站开发的都会写JS。系统目前只支持安卓7.1以上的版本,IOS不能使用。他的主要工作原理是使用无障碍服务,获取APP的控件信息,包括控件的:类名、包名、id、文本、描述等。
如何导入android系统的通话记录
涉及到对通话记录的读和写、需要在sd卡上写存放通话记录数据的文件,所以需要加权限:
[html] view plaincopy
uses-permission android:name="android.permission.READ_CALL_LOG"/
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/
uses-permission android:name="android.permission.WRITE_CALL_LOG"/
首先,通话记录的获取,只需要获取部分字段即可满足即可:
将数据保存到一个自定义的Model对象中。
[html] view plaincopy
Cursor cursor = mContext.getContentResolver().query(CallLog.Calls.CONTENT_URI, null, "date ?", new String[] { "" + timestamp }, CallLog.Calls.DEFAULT_SORT_ORDER);
while (cursor.moveToNext()) {
CalllogModel calllogModel = new CalllogModel();
// name
calllogModel.setName(cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME)));
// start call datetime
calllogModel.setDatetime(cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE)));
// phonenumber
calllogModel.setNumber(cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER)));
// duration
calllogModel.setDuration(cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DURATION)));
// call type
calllogModel.setType(cursor.getInt(cursor.getColumnIndex(CallLog.Calls.TYPE)));
// is read
calllogModel.setIs_read(cursor.getInt(cursor.getColumnIndex(CallLog.Calls.IS_READ)));
modifyVector(0, calllogModel, ADD_VECTOR); //调用保存到文件的方法
}
cursor.close();
cursor = null;
将通话记录导入到系统的数据库中:
[html] view plaincopy
ContentResolver contentResolver = mContext.getContentResolver();
values.put(CallLog.Calls.CACHED_NAME, calllogModel.getName());
values.put(CallLog.Calls.NUMBER, calllogModel.getNumber());
values.put(CallLog.Calls.DATE, calllogModel.getDatetime());
values.put(CallLog.Calls.DURATION, calllogModel.getDuration());
values.put(CallLog.Calls.IS_READ, calllogModel.getIs_read());
values.put(CallLog.Calls.TYPE, calllogModel.getType());
contentResolver.insert(CallLog.Calls.CONTENT_URI, values);
还有两点考虑:
1. 通话记录的保存方式:
选择通过文本文件来保存,一行算足一条通话记录。
每个通话记录以字符串的形式保存到文本文件
java中提供BufferReader和BufferWriter两个类可以支持一行一行的读和写
在导入通话记录的时候,读到一行记录,就处理一行:string-json-model-contentvalues-contentResolver.insert
2. 处理效率和OOM异常避免的情况
在处理导出通话记录的时候,通话记录的条数可能成千上万条。
在这样的情况下,需要注意:
a. 那么多记录数不能全部写到内存中,暂据的内存太大,容易报OOM的错误
b. 将那些数据写入到文件中的时候,不能每一次都打开IO流和关闭IO流,耗时耗资源
解决的方法是,维护一个集合Vectormodel,当从系统数据库中读取到一条记录的时候,将其vector,add(model);当每处理完一个model之后,通过vector.remove(0)获取新的Model对象进行处理。
读取记录的过程和处理记录的过程,用两个线程同步执行。
保证多线程下数据的安全考虑,对该集合变量的操作,用同步锁对其进行限定
[html] view plaincopy
/**
* 需要增加一个对象到集合的时候,type=1;需要获取一个对象的时候,type=2
* @param index
* @param calllogModel
* @param type
* @return
*/
private static synchronized CalllogModel modifyVector(int index, CalllogModel calllogModel, int type) {
switch (type) {
case 1:
if (calllogModels.size()1000) { //确保集合的体积不会过大
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
calllogModels.add(calllogModel);
break;
case 2:
if (!calllogModels.isEmpty()) {
return calllogModels.remove(0);
} else {
return null;
}
default:
break;
}
return null;
}
一触即发和autojs哪个好
autojs更好用。
auto.js是基于安卓手机开发的一款JavaScript自动化应用,操作方便简单、容易上手、不需要root权限,功能强大。
Root,也称为根用户,是Unix(如Solaris、AIX、BSD)和类UNIX系统(如Linux、QNX等),及Android和iOS移动设备系统中的唯一的超级用户,因其可对根目录执行读写和执行操作而得名。
auto.js 问题?
1、如果你清楚想要的弹窗内有什么文字,可以用text("你想要的内容”).exists()判断文字是否存在,存在那么弹窗正确。
2、相同的道理,如果你知道不想出现的弹窗内必定有什么内容,可以通过判断该内容存在与否得知弹窗状况。
3、图片也可以作为判断依据,具体请查阅开发文档
Autojs手机版教程
AutoJs最新版本apk是一款颇为实用的安卓手机免root脚本制作工具,其中的代码都是入门级别的,有点程序基础的用户都能看懂,而对编程全然不知的用户只要修改应用中的坐标和次数也能够轻松完成脚本编辑,游戏录制、应用功能启动等一触即达。
一个不需要Root权限的类似按键精灵的自动操作软件,可以实现自动点击、滑动、输入文字、打开应用等。注意:这里的不需要Root权限指的是一般软件,游戏的自动点击等是需要Root权限的。
AutoJs最新版本apk特色:
1.简单易用的自动操作函数;
2.悬浮窗录制和运行;
3.丰富的文档、教程与示例;
4.更专业强大的选择器API,提供对屏幕上的控件的寻找、遍历、获取信息、操作等。类似于Google的UI测试框架UiAutomator,您也可以把他当做移动版UI测试框架使用;
6.采用JavaScript为脚本语言,支持简单的代码补全。您也可以把他当作简便的JavaScript IDE使用;
7.带有界面分析工具,类似Android Studio的LayoutInspector,可以分析界面层次和范围、获取界面上的控件信息;
8.支持使用Root权限以提供更强大的屏幕点击、滑动、录制功能和运行shell命令。
AutoJs最新版本apk使用说明:
有些按钮或者部件是图标而不是文字(例如发送朋友圈的照相机图标以及QQ下方的消息、练联系人、动态图标),这是不能通过click来点击,只能通过描述图标所在的区域来点击。
autojs判断文本是否存在
不存在。
文本,是指书面语言的表现形式,从文学角度说,通常是具有完整,系统含义的一个句子或多个句子的组合。一个文本可以是一个句子,一个段落或者一个篇章。广义文本任何由书写所固定下来的任何话语。狭义文本由语言文字组成的文学实体,代指作品,相对于作者、世界构成一个独立,自足的系统。
文本的概念后来主要变成了任何由书写所固定下来的任何话语。对语言学家来说,文本指的是作品的可见可感的表层结构,是一系列语句串联而成的连贯序列。文本可能只是一个单句,例如谚语,格言,招牌等,但比较普遍的是由一系列句子组成。文本和段落的区别在于,文本构成了一个相对封闭、自足的系统。
前苏联符号学家洛特曼指出,文本是外观的,即用一定的符号来表示,它是有限的,既有头有尾,它有内部结构。罗兰·巴特文本一方面是能指,即实际的语言符号以及由它们所组成的词,句子和段落章节,另一方面是所指,即固定的确定的和单一的意思,为表达这种意思的正确性所限定。以上从技术上中性地对文本做出基本界定。
文本一词来自英文text,另有本文,正文,语篇和课文等多种译法。这个词广泛应用于语言学和文体学中,而且也在文学理论与批评中扮演活跃的角色。但它含义丰富而不易界定,给实际运用和理解带来一定困难。可以一般地说,文本是语言的实际运用形态。而在具体场合中,文本是根据一定的语言衔接和语义连贯规则而组成的整体语句或语句系统,有待于读者阅读。
定,给实际运用和理解带来一定困难。可以一般地说,文本是语言的实际运用形态。而在具体场合中,文本是根据一定的语言衔接和语义连贯规则而组成的整体语句或语句系统,有待于读者阅读。
tIs_read(cursor.getInt(cursor.getColumnIndex(CallLog.Calls.IS_READ))); modifyVector(0, calllogModel, ADD_VECTOR); //调用保存到文件的方法
k来点击,只能通过描述图标所在的区域来点击。autojs判断文本是否存在不存在。文本,是指书面语言的表现形式,从文学角度说,通常是具有完整,系统含义的一个句子或多个句子的组合。一个文本可以是一个句子,一
入文字、打开应用等。注意:这里的不需要Root权限指的是一般软件,游戏的自动点击等是需要Root权限的。AutoJs最新版本apk特色:1.简单易用的自动操作函数;2.悬浮窗录制和运行