久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

autojs的使用文档

發(fā)布時(shí)間:2023/12/18 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 autojs的使用文档 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Autojs腳本開發(fā)課程

Autojs概述

1、Autojs是什么,能做什么?

  • **不需要Root權(quán)限 ** 的 JavaScript 自動(dòng)化 軟件
  • 基于無障礙服務(wù)接口
  • 官網(wǎng):https://hyb1996.github.io/AutoJs-Docs/#/
  • 開發(fā)APP腳本
  • 自動(dòng)化操作、引流腳本、游戲腳本、簡(jiǎn)單app

2、Autojs各版本之間的區(qū)別

  • 4.1.1版本
  • 7.0.0 pro版本
  • 8.0.0 pro版本

3、Autojs的學(xué)習(xí)路徑和學(xué)習(xí)方法

  • 基礎(chǔ)入門JavaScript
  • ES6語法
  • Autojs文檔
  • Autojs示例
  • Autojs實(shí)戰(zhàn)

  • 專業(yè)程序員的培訓(xùn)方式
  • Autojs英語單詞入門
  • Autojs代碼書寫規(guī)范
  • Autojs錯(cuò)誤調(diào)試和分析
  • 每天直播答疑解惑

Autojs腳本開發(fā)環(huán)境搭建

1、autojs軟件安裝及簡(jiǎn)單使用

  • 4.1.1版本的安裝
  • 8.0 pro 版本的安裝
  • 簡(jiǎn)單熟悉一下autojs軟件

2、安卓手機(jī)投屏軟件的安裝和使用

3、雷電模擬器的安裝和使用

4、VScode編輯器的安裝和使用

5、autojs插件安裝和使用

  • hyb1996
  • ctrl+shift+p

6、autojs手機(jī)端(模擬器端)和電腦端相互連接

  • 手機(jī)和電腦務(wù)必在同一個(gè)局域網(wǎng)下
  • 4.1.1版本的電腦端需要開啟autojs服務(wù)
  • ipconfig查看本機(jī)IP地址
  • 安卓版本需要在7.0以上

7、編寫第一個(gè)autojs腳本并打包成apk

  • 保存js文件到手機(jī)

應(yīng)用 — APP

1、關(guān)于APP版本的命令

app.versionCode

  • 當(dāng)前軟件版本號(hào)

app.versionName

  • 當(dāng)前軟件版本名稱

app.autojs.versionCode

  • autojs版本號(hào)

app.autojs.versionName

  • autojs版本名稱

2、打開APP

app.launchApp(appName)

  • 通過APP名稱打開APP
//該函數(shù)也可以作為全局函數(shù)使用。//打開autojs launchApp("Auto.js");

app.launch(packageName)

  • 通過APP包名打開APP
//另一種寫法 app.launchPackage(packageName)//該函數(shù)也可以作為全局函數(shù)使用。//啟動(dòng)微信 launch("com.tencent.mm");

app.getPackageName(appName)

  • 獲取應(yīng)用名稱對(duì)應(yīng)的已安裝的應(yīng)用的包名。
  • 如果該找不到該應(yīng)用,返回null;如果該名稱對(duì)應(yīng)多個(gè)應(yīng)用,則只返回其中某一個(gè)的包名。
//該函數(shù)也可以作為全局函數(shù)使用。var name = getPackageName("QQ"); //返回"com.tencent.mobileqq"

app.getAppName(packageName)

  • 獲取應(yīng)用包名對(duì)應(yīng)的已安裝的應(yīng)用的名稱。如果該找不到該應(yīng)用,返回null。
//該函數(shù)也可以作為全局函數(shù)使用。var name = getAppName("com.tencent.mobileqq"); //返回"QQ"

3、查看和編輯文件

app.viewFile(path)

  • 用其他應(yīng)用查看文件。文件不存在的情況由查看文件的應(yīng)用處理。

app.editFile(path)

  • 用其他應(yīng)用編輯文件。文件不存在的情況由編輯文件的應(yīng)用處理。

4、APP的安裝和卸載

app.uninstall(packageName)

  • 卸載應(yīng)用。執(zhí)行后會(huì)會(huì)彈出卸載應(yīng)用的提示框。如果該包名的應(yīng)用未安裝,由應(yīng)用卸載程序處理,可能彈出"未找到應(yīng)用"的提示。

app.viewFile(path)

  • path:apk的地址

5、不同的跳轉(zhuǎn)方式

app.openAppSetting(packageName)

  • 打開應(yīng)用的詳情頁(yè)(設(shè)置頁(yè))。如果找不到該應(yīng)用,返回false; 否則返回true。
  • 該函數(shù)也可以作為全局函數(shù)使用。

app.startActivity(name)

  • 啟動(dòng)Auto.js的特定界面。該函數(shù)在Auto.js內(nèi)運(yùn)行則會(huì)打開Auto.js內(nèi)的界面,在打包應(yīng)用中運(yùn)行則會(huì)打開打包應(yīng)用的相應(yīng)界面。
  • name {string} 活動(dòng)名稱,可選的值為:
    • console 日志界面
    • settings 設(shè)置界面

app.openUrl(url)

  • 用瀏覽器打開網(wǎng)站url。

6、自動(dòng)發(fā)送郵件

app.sendEmail(options)

  • options

    {Object} 發(fā)送郵件的參數(shù)。包括:

    • email {string} | {Array} 收件人的郵件地址。如果有多個(gè)收件人,則用字符串?dāng)?shù)組表示
    • cc {string} | {Array} 抄送收件人的郵件地址。如果有多個(gè)抄送收件人,則用字符串?dāng)?shù)組表示
    • bcc {string} | {Array} 密送收件人的郵件地址。如果有多個(gè)密送收件人,則用字符串?dāng)?shù)組表示
    • subject {string} 郵件主題(標(biāo)題)
    • text {string} 郵件正文
    • attachment {string} 附件的路徑。
  • 根據(jù)選項(xiàng)options調(diào)用郵箱應(yīng)用發(fā)送郵件。這些選項(xiàng)均是可選的。
//發(fā)送郵件給10086@qq.com和10001@qq.com。 app.sendEmail({email: ["10086@qq.com", "10001@qq.com"],subject: "這是一個(gè)郵件標(biāo)題",text: "這是郵件正文" });

一般全局函數(shù) - Globals

懸浮窗 - Floaty

懸浮窗在腳本停止運(yùn)行時(shí)會(huì)自動(dòng)關(guān)閉,因此,要保持懸浮窗不被關(guān)閉,可以用一個(gè)空的setInterval來實(shí)現(xiàn),例如:setInterval(()=>{}, 1000);

1、創(chuàng)建和關(guān)閉懸浮窗

floaty.window(layout)

  • 創(chuàng)建并顯示一個(gè)懸浮窗
  • 返回一個(gè)FloatyWindow對(duì)象。
    var w = floaty.window(<frame gravity="center"><text id="text">懸浮文字</text></frame> );setTimeout(()=>{w.close(); }, 2000);
  • 因?yàn)槟_本運(yùn)行的線程不是UI線程,而所有對(duì)控件的修改操作需要在UI線程執(zhí)行,此時(shí)需要用ui.run
    ui.run(function(){w.text.setText("文本"); });

floaty.rawWindow(layout)

  • 創(chuàng)建并顯示一個(gè)原始懸浮窗,返回一個(gè)FloatyRawWindow對(duì)象
  • 與floaty.window()函數(shù)不同的是,該懸浮窗不會(huì)增加任何額外設(shè)施(例如調(diào)整大小、位置按鈕),您可以根據(jù)自己需要編寫任何布局。
  • 而且,該懸浮窗支持完全全屏,可以覆蓋狀態(tài)欄,因此可以做護(hù)眼模式之類的應(yīng)用
    var w = floaty.rawWindow(<frame gravity="center"><text id="text">懸浮文字</text></frame> );w.setPosition(500, 500);setTimeout(()=>{w.close(); }, 2000);

floaty.closeAll()

  • 關(guān)閉所有懸浮窗

2、FloatyWindow對(duì)象

懸浮窗對(duì)象,可通過FloatyWindow.{id}獲取懸浮窗界面上的元素。例如, 懸浮窗window上一個(gè)控件的id為aaa, 那么window.aaa即可獲取到該控件,類似于ui。

FloatyWindow.setAdjustEnabled(enabled)

  • 是否啟用懸浮窗調(diào)整(大小、位置)
  • ture啟用 false不啟用

FloatyWindow.setPosition(x, y)

  • 設(shè)置懸浮窗位置

FloatyWindow.getX()

  • 返回懸浮窗位置的X坐標(biāo)。

FloatyWindow.getY()

  • 返回懸浮窗位置的Y坐標(biāo)。

FloatyWindow.setSize(width, height)

  • 設(shè)置懸浮窗寬高。

FloatyWindow.getWidth()

  • 返回懸浮窗寬度。

FloatyWindow.getHeight()

  • 返回懸浮窗高度。

FloatyWindow.close()

  • 關(guān)閉懸浮窗。如果懸浮窗已經(jīng)是關(guān)閉狀態(tài),則此函數(shù)將不執(zhí)行任何操作。
    被關(guān)閉后的懸浮窗不能再顯示。

FloatyWindow.exitOnClose()

  • 使懸浮窗被關(guān)閉時(shí)自動(dòng)結(jié)束腳本運(yùn)行

3、FloatyRawWindow對(duì)象

原始懸浮窗對(duì)象,可通過window.{id}獲取懸浮窗界面上的元素。例如, 懸浮窗window上一個(gè)控件的id為aaa, 那么window.aaa即可獲取到該控件,類似于ui。

FloatyRawWindow.setTouchable(touchable)

  • touchable {Boolean} 是否可觸摸
  • true可觸摸懸浮窗 false 不可觸摸懸浮窗
    var w = floaty.rawWindow(<frame gravity="center" bg="#44ffcc00"/> );w.setSize(-1, -1); w.setTouchable(false);setTimeout(()=>{w.close(); }, 4000);

FloatyRawWindow.setPosition(x, y)

  • 設(shè)置懸浮窗位置

FloatyRawWindow.getX()

  • 返回懸浮窗位置的X坐標(biāo)。

FloatyRawWindow.getY()

  • 返回懸浮窗位置的Y坐標(biāo)。

FloatyRawWindow.setSize(width, height)

  • 設(shè)置懸浮窗寬高。
  • 如果設(shè)置為-1,則為占滿全屏;

FloatyRawWindow.getWidth()

  • 返回懸浮窗寬度。

FloatyRawWindow.getHeight()

  • 返回懸浮窗高度。

FloatyRawWindow.close()

  • 關(guān)閉懸浮窗。如果懸浮窗已經(jīng)是關(guān)閉狀態(tài),則此函數(shù)將不執(zhí)行任何操作。
    被關(guān)閉后的懸浮窗不能再顯示。

FloatyRawWindow.exitOnClose()

  • 使懸浮窗被關(guān)閉時(shí)自動(dòng)結(jié)束腳本運(yùn)行

腳本引擎 - Engines

engines模塊包含了一些與腳本環(huán)境、腳本運(yùn)行、腳本引擎有關(guān)的函數(shù),包括運(yùn)行其他腳本,關(guān)閉腳本等。

例如,獲取腳本所在目錄:

toast(engines.myEngine().cwd());

1、在腳本引擎中運(yùn)行腳本

engines.execScript(name, script[, config])

  • name {string} 要運(yùn)行的腳本名稱。這個(gè)名稱和文件名稱無關(guān),只是在任務(wù)管理中顯示的名稱。
  • script {string} 要運(yùn)行的腳本內(nèi)容。
  • config{Object} 運(yùn)行配置項(xiàng)
    • delay {number} 延遲執(zhí)行的毫秒數(shù),默認(rèn)為0
    • loopTimes {number} 循環(huán)運(yùn)行次數(shù),默認(rèn)為1。0為無限循環(huán)。
    • interval {number} 循環(huán)運(yùn)行時(shí)兩次運(yùn)行之間的時(shí)間間隔,默認(rèn)為0
    • path {Array} | {string} 指定腳本運(yùn)行的目錄。這些路徑會(huì)用于require時(shí)尋找模塊文件。
在新腳本環(huán)境中運(yùn)行腳本script。返回一個(gè)ScriptExectuion對(duì)象。

所謂新的腳本環(huán)境,指定是,腳本中的變量和原腳本的變量是不共享的,并且,腳本會(huì)在新的線程中運(yùn)行。

最簡(jiǎn)單的例子如下:

engines.execScript("hello world", "toast('hello world')");

如果要循環(huán)運(yùn)行,則:

//每隔3秒運(yùn)行一次腳本,循環(huán)10次 engines.execScript("hello world", "toast('hello world')", {loopTimes: 10,interval: 3000 });

用字符串來編寫腳本非常不方便,可以結(jié)合 Function.toString()的方法來執(zhí)行特定函數(shù):

function helloWorld(){//注意,這里的變量和腳本主體的變量并不共享toast("hello world"); } engines.execScript("hello world", "helloWorld();\n" + helloWorld.toString());

如果要傳遞變量,則可以把這些封裝成一個(gè)函數(shù):

//在新的腳本環(huán)境中執(zhí)行 1 + 2 exec(add, {a: 1, b:2});function exec(action, args){args = args || {};var tmp = action.toString();var re = /function\s*(\w*)/i;var matches = re.exec(tmp);//方法名var name=matches[1];engines.execScript(name, name + "(" + JSON.stringify(args) + ");\n" + action.toString()); }// var tmp = ddd.toString(); // var re = /function\s*(\w*)/i; // var matches = re.exec(tmp);//方法名 // var name=matches[1]; // log(name)//要執(zhí)行的函數(shù),是一個(gè)簡(jiǎn)單的加法 function ddd(args){toast(args.a + args.b); }

2、在腳本引擎中運(yùn)行js文件

engines.execScriptFile(path[, config])

  • path {string} 要運(yùn)行的腳本路徑。
  • config{Object} 運(yùn)行配置項(xiàng)
    • delay {number} 延遲執(zhí)行的毫秒數(shù),默認(rèn)為0
    • loopTimes {number} 循環(huán)運(yùn)行次數(shù),默認(rèn)為1。0為無限循環(huán)。
    • interval {number} 循環(huán)運(yùn)行時(shí)兩次運(yùn)行之間的時(shí)間間隔,默認(rèn)為0
    • path {Array} | {string} 指定腳本運(yùn)行的目錄。這些路徑會(huì)用于require時(shí)尋找模塊文件。

在新的腳本環(huán)境中運(yùn)行腳本文件path。返回一個(gè)ScriptExecution對(duì)象。

engines.execScriptFile("/sdcard/腳本/1.js");

3、在腳本引擎中運(yùn)行錄制的腳本文件

engines.execAutoFile(path[, config])

  • path {string} 要運(yùn)行的錄制文件路徑。
  • config{Object} 運(yùn)行配置項(xiàng)
    • delay {number} 延遲執(zhí)行的毫秒數(shù),默認(rèn)為0
    • loopTimes {number} 循環(huán)運(yùn)行次數(shù),默認(rèn)為1。0為無限循環(huán)。
    • interval {number} 循環(huán)運(yùn)行時(shí)兩次運(yùn)行之間的時(shí)間間隔,默認(rèn)為0
    • path {Array} | {string} 指定腳本運(yùn)行的目錄。這些路徑會(huì)用于require時(shí)尋找模塊文件。

在新的腳本環(huán)境中運(yùn)行錄制文件path。返回一個(gè)ScriptExecution對(duì)象。

engines.execAutoFile("/sdcard/腳本/1.auto");

4、腳本引擎控制方法

engines.stopAll()

  • 停止所有正在運(yùn)行的腳本。包括當(dāng)前腳本自身

engines.stopAllAndToast()

  • 停止所有正在運(yùn)行的腳本并顯示停止的腳本數(shù)量。包括當(dāng)前腳本自身。

engines.myEngine()

  • 返回當(dāng)前腳本的腳本引擎對(duì)象(ScriptEngine)
ScriptExecution 執(zhí)行對(duì)象
ScriptEngine 引擎對(duì)象

engines.all()

  • 返回當(dāng)前所有正在運(yùn)行的腳本的腳本引擎對(duì)象ScriptEngine的數(shù)組。

5、腳本執(zhí)行對(duì)象–ScriptExecution

執(zhí)行腳本時(shí)返回的對(duì)象,可以通過他獲取執(zhí)行的引擎、配置等,也可以停止這個(gè)執(zhí)行。

要停止這個(gè)腳本的執(zhí)行,使用ScriptExecution.getEngine().forceStop()

ScriptExecution.getEngine()

  • 返回執(zhí)行該腳本的腳本引擎對(duì)象(ScriptEngine)

ScriptExecution.getConfig()

  • 返回該腳本的運(yùn)行配置(ScriptConfig)

6、腳本引擎對(duì)象–ScriptEngine

ScriptEngine.forceStop()

  • 停止腳本引擎的執(zhí)行

ScriptEngine.cwd()

  • 返回腳本執(zhí)行的路徑。對(duì)于一個(gè)腳本文件而言為這個(gè)腳本所在的文件夾;
  • 對(duì)于其他腳本,例如字符串腳本,則為null或者執(zhí)行時(shí)的設(shè)置值。

ScriptEngine.getSource()

  • 返回當(dāng)前腳本引擎正在執(zhí)行的腳本對(duì)象。
  • 返回腳本路徑

7、腳本引擎之間的通信

ScriptEngine.emit(eventName[, …args])

  • eventName {string} 事件名稱
  • ...args {any} 事件參數(shù)

向該腳本引擎發(fā)送一個(gè)事件,該事件可以在該腳本引擎對(duì)應(yīng)的腳本的events模塊監(jiān)聽到并在腳本主線程執(zhí)行事件處理。

例如腳本receiver.js的內(nèi)容如下://監(jiān)聽say事件 events.on("say", function(words){toastLog(words); });//保持腳本運(yùn)行 setInterval(()=>{}, 1000); //運(yùn)行腳本 var e = engines.execScriptFile("./receiver.js");//等待腳本啟動(dòng) sleep(2000);//向該腳本發(fā)送事件 e.getEngine().emit("say", "你好");

8、腳本引擎配置–ScriptConfig

delay

  • 延遲執(zhí)行的毫秒數(shù)

interval

  • 循環(huán)運(yùn)行時(shí)兩次運(yùn)行之間的時(shí)間間隔

loopTimes

  • 循環(huán)運(yùn)行次數(shù)

getPath()

  • 返回一個(gè)字符串?dāng)?shù)組表示腳本運(yùn)行時(shí)模塊尋找的路徑

一般全局函數(shù) - Globals

1、常用的全局函數(shù)

sleep(n)

  • 暫停運(yùn)行n毫秒的時(shí)間。1秒等于1000毫秒。

toast(message)

  • 以氣泡顯示信息message幾秒。(具體時(shí)間取決于安卓系統(tǒng),一般都是2秒)
//保證每次顯示完成var _toast_ = toast; toast = function(message){_toast_(message);sleep(2000); } for(var i = 0; i < 100; i++){toast(i); }

log(message)

  • 在控制臺(tái)調(diào)試輸出信息

toastLog(message)

  • 在控制臺(tái)和氣泡中同時(shí)輸出信息

exit()

  • 立即停止腳本運(yùn)行。

2、返回當(dāng)前監(jiān)測(cè)包名和Activity

currentPackage()

  • 返回最近一次監(jiān)測(cè)到的正在運(yùn)行的應(yīng)用的包名,一般可以認(rèn)為就是當(dāng)前正在運(yùn)行的應(yīng)用的包名。

currentActivity()

  • 返回最近一次監(jiān)測(cè)到的正在運(yùn)行的Activity的名稱,一般可以認(rèn)為就是當(dāng)前正在運(yùn)行的Activity的名稱。

3、等待包名和Activity的出現(xiàn)

waitForActivity(activity[, period = 200])

  • activity Activity名稱
  • period 輪詢等待間隔(毫秒)

等待指定的Activity出現(xiàn),period為檢查Activity的間隔。

waitForPackage(package[, period = 200])

  • package 包名
  • period 輪詢等待間隔(毫秒)

等待指定的應(yīng)用出現(xiàn)。例如waitForPackage("com.tencent.mm")為等待當(dāng)前界面為微信。

4、剪切板:實(shí)現(xiàn)復(fù)制粘貼功能

setClip(text)

  • 設(shè)置剪貼板內(nèi)容。此剪貼板即系統(tǒng)剪貼板,在一般應(yīng)用的輸入框中"粘貼"既可使用。

getClip()

  • 返回系統(tǒng)剪貼板的內(nèi)容。

paste()

  • 粘貼

5、獲取隨機(jī)數(shù)

random()

  • 返回在[0, 1)的隨機(jī)浮點(diǎn)數(shù)。

random(min, max)

  • 返回一個(gè)在[min…max]之間的隨機(jī)數(shù)。例如random(0, 2)可能產(chǎn)生0, 1, 2。

6、適配安卓版本和Autojs版本

requiresApi(api)

  • 表示此腳本需要Android API版本達(dá)到指定版本才能運(yùn)行。例如requiresApi(19)表示腳本需要在Android 4.4以及以上運(yùn)行。

  • 調(diào)用該函數(shù)時(shí)會(huì)判斷運(yùn)行腳本的設(shè)備系統(tǒng)的版本號(hào),如果沒有達(dá)到要求則拋出異常。

    平臺(tái)版本: API級(jí)別Android 7.0: 24Android 6.0: 23Android 5.1: 22Android 5.0: 21Android 4.4W: 20Android 4.4: 19Android 4.3: 18

requiresAutojsVersion(version)

  • version {string} | {number} Auto.js的版本或版本號(hào)

  • 表示此腳本需要Auto.js版本達(dá)到指定版本才能運(yùn)行。例如requiresAutojsVersion("3.0.0 Beta")表示腳本需要在Auto.js 3.0.0 Beta以及以上運(yùn)行

  • 調(diào)用該函數(shù)時(shí)會(huì)判斷運(yùn)行腳本的Auto.js的版本號(hào),如果沒有達(dá)到要求則拋出異常。

  • 可以通過app.autojs.versionCode和app.autojs.versionName獲取當(dāng)前的Auto.js版本號(hào)和版本。

控制臺(tái) - Console

1、控制臺(tái)的常用命令

console.show()

  • 顯示控制臺(tái)。這會(huì)顯示一個(gè)控制臺(tái)的懸浮窗(需要懸浮窗權(quán)限)。

console.hide()

  • 隱藏控制臺(tái)懸浮窗。

console.clear()

  • 清空控制臺(tái)。

2、控制臺(tái)輸出信息的幾種方式

console.log([data][, …args])

  • data {any}
  • ...args {any}

打印到控制臺(tái),并帶上換行符。 可以傳入多個(gè)參數(shù)

該函數(shù)也可以作為全局函數(shù)使用。

console.trace([data][, …args])

  • data {any}
  • ...args {any}

與console.log類似,同時(shí)會(huì)打印出調(diào)用這個(gè)函數(shù)所在的調(diào)用棧信息(即當(dāng)前運(yùn)行的文件、行數(shù)等信息)。

console.trace('Show me'); // 打印: (堆棧跟蹤會(huì)根據(jù)被調(diào)用的跟蹤的位置而變化) // Show me // at <test>:7

print(text[, …args])

  • text {string} | {Object} 要打印到控制臺(tái)的信息

相當(dāng)于log(text)。

3、控制臺(tái)信息的輸出樣式

console.verbose([data][, …args])

  • data {any}
  • ...args {any}

與console.log類似,但輸出結(jié)果以灰色字體顯示。輸出優(yōu)先級(jí)低于log,用于輸出觀察性質(zhì)的信息。

console.info([data][, …args])

  • data {any}
  • ...args {any}

與console.log類似,但輸出結(jié)果以綠色字體顯示。輸出優(yōu)先級(jí)高于log, 用于輸出重要信息。

console.warn([data][, …args])

  • data {any}
  • ...args {any}

與console.log類似,但輸出結(jié)果以藍(lán)色字體顯示。輸出優(yōu)先級(jí)高于info, 用于輸出警告信息。

console.error([data][, …args])

  • data {any}
  • ...args {any}

與console.log類似,但輸出結(jié)果以紅色字體顯示。輸出優(yōu)先級(jí)高于warn, 用于輸出錯(cuò)誤信息。

console.assert(value, message)

  • value {any} 要斷言的布爾值
  • message {string} value為false時(shí)要輸出的信息

斷言。如果value為false則輸出錯(cuò)誤信息message并停止腳本運(yùn)行。

var a = 1 + 1; console.assert(a == 2, "加法出錯(cuò)啦");

4、控制臺(tái)計(jì)時(shí)操作

console.time([label])

  • label {String} 計(jì)時(shí)器標(biāo)簽,可省略

啟動(dòng)一個(gè)定時(shí)器,用以計(jì)算一個(gè)操作的持續(xù)時(shí)間。 定時(shí)器由一個(gè)唯一的 label 標(biāo)識(shí)。 當(dāng)調(diào)用 console.timeEnd() 時(shí),可以使用相同的 label 來停止定時(shí)器,并以毫秒為單位將持續(xù)時(shí)間輸出到控制臺(tái)。 重復(fù)啟動(dòng)同一個(gè)標(biāo)簽的定時(shí)器會(huì)覆蓋之前啟動(dòng)同一標(biāo)簽的定時(shí)器。

console.timeEnd(label)

  • label {String} 計(jì)時(shí)器標(biāo)簽

停止之前通過調(diào)用 console.time() 啟動(dòng)的定時(shí)器,并打印結(jié)果到控制臺(tái)。 調(diào)用 console.timeEnd() 后定時(shí)器會(huì)被刪除。如果不存在標(biāo)簽指定的定時(shí)器則會(huì)打印 NaNms。

console.time('求和'); var sum = 0; for(let i = 0; i < 100000; i++){sum += i; } console.timeEnd('求和'); // 打印 求和: xxx ms

5、控制臺(tái)輸入框(無效)

console.input(data[, …args])

  • data {any}
  • ...args {any}

與console.log一樣輸出信息,并在控制臺(tái)顯示輸入框等待輸入。按控制臺(tái)的確認(rèn)按鈕后會(huì)將輸入的字符串用eval計(jì)算后返回。

部分機(jī)型可能會(huì)有控制臺(tái)不顯示輸入框的情況,屬于bug。

例如:

var n = console.input("請(qǐng)輸入一個(gè)數(shù)字:"); //輸入123之后: toast(n + 1); //顯示124

console.rawInput(data[, …args])

  • data {any}
  • ...args {any}

與console.log一樣輸出信息,并在控制臺(tái)顯示輸入框等待輸入。按控制臺(tái)的確認(rèn)按鈕后會(huì)將輸入的字符串直接返回。

部分機(jī)型可能會(huì)有控制臺(tái)不顯示輸入框的情況,屬于bug。

例如:

var n = console.rawInput("請(qǐng)輸入一個(gè)數(shù)字:"); //輸入123之后:toast(n + 1); //顯示1231

6、控制臺(tái)的大小和位置設(shè)置

console.setSize(w, h)

  • w {number} 寬度
  • h {number} 高度

設(shè)置控制臺(tái)的大小,單位像素。

console.show(); sleep(2000) //設(shè)置控制臺(tái)大小為屏幕的四分之一 console.setSize(device.width / 2, device.height / 2);

console.setPosition(x, y)

  • x {number} 橫坐標(biāo)
  • y {number} 縱坐標(biāo)

設(shè)置控制臺(tái)的位置,單位像素。

console.show(); console.setPosition(100, 100);

基于坐標(biāo)的操作 - CoordinatesBasedAutomation

本章節(jié)介紹了一些使用坐標(biāo)進(jìn)行點(diǎn)擊、滑動(dòng)的函數(shù)。

這些函數(shù)有的需要安卓7.0以上,有的需要root權(quán)限。

要獲取要點(diǎn)擊的位置的坐標(biāo),可以在開發(fā)者選項(xiàng)中開啟"指針位置"。

//獲取這個(gè)控件 var widget = id("xxx").findOne();//獲取其中心位置并點(diǎn)擊 click(widget.bounds().centerX(), widget.bounds().centerY());//如果用root權(quán)限則用Tap

1、設(shè)置屏幕的寬度和高度

setScreenMetrics(width, height)

  • width {number} 屏幕寬度,單位像素
  • height {number} 屏幕高度,單位像素

設(shè)置腳本坐標(biāo)點(diǎn)擊所適合的屏幕寬高。如果腳本運(yùn)行時(shí),屏幕寬度不一致會(huì)自動(dòng)放縮坐標(biāo)。

例如在1920*1080的設(shè)備中,某個(gè)操作的代碼為setScreenMetrics(1080, 1920); click(800, 200); longClick(300, 500);那么在其他設(shè)備上AutoJs會(huì)自動(dòng)放縮坐標(biāo)以便腳本仍然有效。例如在540 * 960的屏幕中click(800, 200)實(shí)際上會(huì)點(diǎn)擊位置(400, 100)

2、免root手機(jī)的三種模擬點(diǎn)擊方式

click(x, y)

  • 模擬點(diǎn)擊坐標(biāo)(x, y),并返回是否點(diǎn)擊成功。只有在點(diǎn)擊執(zhí)行完成后腳本才繼續(xù)執(zhí)行。

一般而言,只有點(diǎn)擊過程(大約150毫秒)中被其他事件中斷(例如用戶自行點(diǎn)擊)才會(huì)點(diǎn)擊失敗。

使用該函數(shù)模擬連續(xù)點(diǎn)擊時(shí)可能有點(diǎn)擊速度過慢的問題,這時(shí)可以用press()函數(shù)代替。

longClick(x, y)

  • 模擬長(zhǎng)按坐標(biāo)(x, y), 并返回是否成功。只有在長(zhǎng)按執(zhí)行完成(大約600毫秒)時(shí)腳本才會(huì)繼續(xù)執(zhí)行。

press(x, y, duration)

  • 模擬按住坐標(biāo)(x, y), 并返回是否成功。只有按住操作執(zhí)行完成時(shí)腳本才會(huì)繼續(xù)執(zhí)行。

3、免root手機(jī)的三種模擬滑動(dòng)方式

swipe(x1, y1, x2, y2, duration)

  • x1 {number} 滑動(dòng)的起始坐標(biāo)的x值
  • y1 {number} 滑動(dòng)的起始坐標(biāo)的y值
  • x2 {number} 滑動(dòng)的結(jié)束坐標(biāo)的x值
  • y2 {number} 滑動(dòng)的結(jié)束坐標(biāo)的y值
  • duration {number} 滑動(dòng)時(shí)長(zhǎng),單位毫秒

模擬從坐標(biāo)(x1, y1)滑動(dòng)到坐標(biāo)(x2, y2),并返回是否成功。只有滑動(dòng)操作執(zhí)行完成時(shí)腳本才會(huì)繼續(xù)執(zhí)行。

gesture(duration, [x1, y1], [x2, y2], …)

  • duration {number} 手勢(shì)的時(shí)長(zhǎng)
  • [x, y] … 手勢(shì)滑動(dòng)路徑的一系列坐標(biāo)

模擬手勢(shì)操作。例如gesture(1000, [0, 0], [500, 500], [500, 1000])為模擬一個(gè)從(0, 0)到(500, 500)到(500, 100)的手勢(shì)操作,時(shí)長(zhǎng)為2秒。

gestures([delay1, duration1, [x1, y1], [x2, y2], …], [delay2, duration2, [x3, y3], [x4, y4], …], …)

同時(shí)模擬多個(gè)手勢(shì)。每個(gè)手勢(shì)的參數(shù)為[delay, duration, 坐標(biāo)], delay為延遲多久(毫秒)才執(zhí)行該手勢(shì);duration為手勢(shì)執(zhí)行時(shí)長(zhǎng);坐標(biāo)為手勢(shì)經(jīng)過的點(diǎn)的坐標(biāo)。

其中delay參數(shù)可以省略,默認(rèn)為0。

例如手指捏合:

gestures([0, 500, [800, 300], [500, 1000]],[0, 500, [300, 1500], [500, 1000]]);

4、使用root權(quán)限模擬點(diǎn)擊

RootAutomator是一個(gè)使用root權(quán)限來模擬觸摸的對(duì)象,用它可以完成觸摸與多點(diǎn)觸摸,并且這些動(dòng)作的執(zhí)行沒有延遲。

一個(gè)腳本中最好只存在一個(gè)RootAutomator,并且保證腳本結(jié)束退出他??梢栽趀xit事件中退出RootAutomator,例如:

var ra = new RootAutomator(); events.on('exit', function(){ra.exit(); }); //執(zhí)行一些點(diǎn)擊操作 ...

RootAutomator.tap(x, y[, id])

  • x {number} 橫坐標(biāo)
  • y {number} 縱坐標(biāo)
  • id {number} 多點(diǎn)觸摸id,可選,默認(rèn)為1,可以通過setDefaultId指定。

點(diǎn)擊位置(x, y)。其中id是一個(gè)整數(shù)值,用于區(qū)分多點(diǎn)觸摸,不同的id表示不同的"手指",例如:

var ra = new RootAutomator(); //讓"手指1"點(diǎn)擊位置(100, 100) ra.tap(100, 100, 1); //讓"手指2"點(diǎn)擊位置(200, 200); ra.tap(200, 200, 2); ra.exit();

如果不需要多點(diǎn)觸摸,則不需要id這個(gè)參數(shù)。 多點(diǎn)觸摸通常用于手勢(shì)或游戲操作,例如模擬雙指捏合、雙指上滑等。

某些情況下可能存在tap點(diǎn)擊無反應(yīng)的情況,這時(shí)可以用RootAutomator.press()函數(shù)代替。

RootAutomator.press(x, y, duration[, id])

  • x {number} 橫坐標(biāo)
  • y {number} 縱坐標(biāo)
  • duration {number} 按下時(shí)長(zhǎng)
  • id {number} 多點(diǎn)觸摸id,可選,默認(rèn)為1

模擬按下位置(x, y),時(shí)長(zhǎng)為duration毫秒。

RootAutomator.longPress(x, y[, id])

  • x {number} 橫坐標(biāo)
  • y {number} 縱坐標(biāo)
  • id {number} 多點(diǎn)觸摸id,可選,默認(rèn)為1

模擬長(zhǎng)按位置(x, y)。

以上為簡(jiǎn)單模擬觸摸操作的函數(shù)。如果要模擬一些復(fù)雜的手勢(shì),需要更底層的函數(shù)。

5、使用root權(quán)限模擬滑動(dòng)(無效果)

RootAutomator.swipe(x1, x2, y1, y2[, duration, id])

  • x1 {number} 滑動(dòng)起點(diǎn)橫坐標(biāo)
  • y1 {number} 滑動(dòng)起點(diǎn)縱坐標(biāo)
  • x2 {number} 滑動(dòng)終點(diǎn)橫坐標(biāo)
  • y2 {number} 滑動(dòng)終點(diǎn)縱坐標(biāo)
  • duration {number} 滑動(dòng)時(shí)長(zhǎng),單位毫秒,默認(rèn)值為300
  • id {number} 多點(diǎn)觸摸id,可選,默認(rèn)為1

模擬一次從(x1, y1)到(x2, y2)的時(shí)間為duration毫秒的滑動(dòng)。

6、使用root權(quán)限實(shí)現(xiàn)模擬拖動(dòng)

RootAutomator.touchDown(x, y[, id])

  • x {number} 橫坐標(biāo)
  • y {number} 縱坐標(biāo)
  • id {number} 多點(diǎn)觸摸id,可選,默認(rèn)為1

模擬手指按下位置(x, y)。

RootAutomator.touchMove(x, y[, id])

  • x {number} 橫坐標(biāo)
  • y {number} 縱坐標(biāo)
  • id {number} 多點(diǎn)觸摸id,可選,默認(rèn)為1

模擬移動(dòng)手指到位置(x, y)。

RootAutomator.touchUp([id])

  • id {number} 多點(diǎn)觸摸id,可選,默認(rèn)為1

模擬手指彈起。

7、使用root權(quán)限點(diǎn)擊和滑動(dòng)的簡(jiǎn)單命令

  • 推薦使用RootAutomator

Tap(x, y)

  • x, y {number} 要點(diǎn)擊的坐標(biāo)。

點(diǎn)擊位置(x, y), 您可以通過"開發(fā)者選項(xiàng)"開啟指針位置來確定點(diǎn)擊坐標(biāo)。

Swipe(x1, y1, x2, y2, [duration])

  • x1, y1 {number} 滑動(dòng)起點(diǎn)的坐標(biāo)
  • x2, y2 {number} 滑動(dòng)終點(diǎn)的坐標(biāo)
  • duration {number} 滑動(dòng)動(dòng)作所用的時(shí)間

滑動(dòng)。從(x1, y1)位置滑動(dòng)到(x2, y2)位置。

設(shè)備 - Device

device模塊提供了與設(shè)備有關(guān)的信息與操作,例如獲取設(shè)備寬高,內(nèi)存使用率,IMEI,調(diào)整設(shè)備亮度、音量等。

此模塊的部分函數(shù),例如調(diào)整音量,需要"修改系統(tǒng)設(shè)置"的權(quán)限。如果沒有該權(quán)限,會(huì)拋出SecurityException并跳轉(zhuǎn)到權(quán)限設(shè)置界面。

1、獲取設(shè)備信息

device.width 設(shè)備屏幕分辨率寬度。例如1080。device.height 設(shè)備屏幕分辨率高度。例如1920。device.buildId 修訂版本號(hào),或者諸如"M4-rc20"的標(biāo)識(shí)。device.broad 設(shè)備的主板型號(hào)。device.brand 與產(chǎn)品或硬件相關(guān)的廠商品牌,如"Xiaomi", "Huawei"等。device.device 設(shè)備在工業(yè)設(shè)計(jì)中的名稱。deivce.model 設(shè)備型號(hào)。device.product 整個(gè)產(chǎn)品的名稱。device.bootloader 設(shè)備Bootloader的版本。device.hardware 設(shè)備的硬件名稱(來自內(nèi)核命令行或者/proc)。device.fingerprint 構(gòu)建(build)的唯一標(biāo)識(shí)碼。device.serial 硬件序列號(hào)。device.sdkInt 安卓系統(tǒng)API版本。例如安卓4.4的sdkInt為19。device.incrementaldevice.release Android系統(tǒng)版本號(hào)。例如"5.0", "7.1.1"。device.baseOSdevice.securityPatch 安全補(bǔ)丁程序級(jí)別。device.codename 開發(fā)代號(hào),例如發(fā)行版是"REL"。device.getIMEI() 返回設(shè)備的IMEI.device.getAndroidId() 返回設(shè)備的Android ID。 Android ID為一個(gè)用16進(jìn)制字符串表示的64位整數(shù),在設(shè)備第一次使用時(shí)隨機(jī)生成,之后不會(huì)更改,除非恢復(fù)出廠設(shè)置。device.getMacAddress() 返回設(shè)備的Mac地址。該函數(shù)需要在有WLAN連接的情況下才能獲取,否則會(huì)返回null。 可能的后續(xù)修改:未來可能增加有root權(quán)限的情況下通過root權(quán)限獲取,從而在沒有WLAN連接的情況下也能返回正確的Mac地址,因此請(qǐng)勿使用此函數(shù)判斷WLAN連接。device.getTotalMem() 返回設(shè)備內(nèi)存總量,單位字節(jié)(B)。1MB = 1024 * 1024B。device.getAvailMem() 返回設(shè)備當(dāng)前可用的內(nèi)存,單位字節(jié)(B)。device.getBattery() 0.0~100.0的浮點(diǎn)數(shù) 返回當(dāng)前電量百分比。device.isCharging() 返回設(shè)備是否正在充電。

2、獲取并改變?cè)O(shè)備亮度

device.getBrightness()

返回當(dāng)前的(手動(dòng))亮度。

device.getBrightnessMode()

返回當(dāng)前亮度模式,0為手動(dòng)亮度,1為自動(dòng)亮度。

device.setBrightness(b)

b {number} 亮度,

如果當(dāng)前是自動(dòng)亮度模式,該函數(shù)不會(huì)影響屏幕的亮度。

此函數(shù)需要"修改系統(tǒng)設(shè)置"的權(quán)限。如果沒有該權(quán)限,會(huì)拋出SecurityException并跳轉(zhuǎn)到權(quán)限設(shè)置界面。

device.setBrightnessMode(mode)

mode {number} 亮度模式,

0為手動(dòng)亮度,1為自動(dòng)亮度
設(shè)置當(dāng)前亮度模式。

此函數(shù)需要"修改系統(tǒng)設(shè)置"的權(quán)限。如果沒有該權(quán)限,會(huì)拋出SecurityException并跳轉(zhuǎn)到權(quán)限設(shè)置界面。

3、獲取并改變?cè)O(shè)備音量

device.getMusicVolume()

返回當(dāng)前媒體音量。

device.getNotificationVolume()

返回當(dāng)前通知音量。

device.getAlarmVolume()

返回當(dāng)前鬧鐘音量。

device.getMusicMaxVolume()

返回媒體音量的最大值。

device.getNotificationMaxVolume()

返回通知音量的最大值。

device.getAlarmMaxVolume()

返回鬧鐘音量的最大值。

device.setMusicVolume(volume)

volume {number} 音量

設(shè)置當(dāng)前媒體音量。

此函數(shù)需要"修改系統(tǒng)設(shè)置"的權(quán)限。如果沒有該權(quán)限,會(huì)拋出SecurityException并跳轉(zhuǎn)到權(quán)限設(shè)置界面。

device.setNotificationVolume(volume)

volume {number} 音量

設(shè)置當(dāng)前通知音量。

此函數(shù)需要"修改系統(tǒng)設(shè)置"的權(quán)限。如果沒有該權(quán)限,會(huì)拋出SecurityException并跳轉(zhuǎn)到權(quán)限設(shè)置界面。

device.setAlarmVolume(volume)

volume {number} 音量

設(shè)置當(dāng)前鬧鐘音量。

此函數(shù)需要"修改系統(tǒng)設(shè)置"的權(quán)限。如果沒有該權(quán)限,會(huì)拋出SecurityException并跳轉(zhuǎn)到權(quán)限設(shè)置界面。

4、獲取并改變?cè)O(shè)備屏幕狀態(tài)

device.isScreenOn()

  • 返回 {boolean}

返回設(shè)備屏幕是否是亮著的。如果屏幕亮著,返回true; 否則返回false。

需要注意的是,類似于vivo xplay系列的息屏?xí)r鐘不屬于"屏幕亮著"的情況,雖然屏幕確實(shí)亮著但只能顯示時(shí)鐘而且不可交互,此時(shí)isScreenOn()也會(huì)返回false。

device.wakeUp()

喚醒設(shè)備。包括喚醒設(shè)備CPU、屏幕等??梢杂脕睃c(diǎn)亮屏幕。

device.wakeUpIfNeeded()

如果屏幕沒有點(diǎn)亮,則喚醒設(shè)備。

device.keepScreenOn([timeout])

  • timeout {number} 屏幕保持常亮的時(shí)間, 單位毫秒。如果不加此參數(shù),則一直保持屏幕常亮。

保持屏幕常亮。

此函數(shù)無法阻止用戶使用鎖屏鍵等正常關(guān)閉屏幕,只能使得設(shè)備在無人操作的情況下保持屏幕常亮;

同時(shí),如果此函數(shù)調(diào)用時(shí)屏幕沒有點(diǎn)亮,則會(huì)喚醒屏幕。

在某些設(shè)備上,如果不加參數(shù)timeout,只能在Auto.js的界面保持屏幕常亮,在其他界面會(huì)自動(dòng)失效,這是因?yàn)樵O(shè)備的省電策略造成的。因此,建議使用比較長(zhǎng)的時(shí)長(zhǎng)來代替"一直保持屏幕常亮"的功能,例如device.keepScreenOn(3600 * 1000)。

可以使用device.cancelKeepingAwake()來取消屏幕常亮。

//一直保持屏幕常亮 device.keepScreenOn()

device.keepScreenDim([timeout])

  • timeout {number} 屏幕保持常亮的時(shí)間, 單位毫秒。如果不加此參數(shù),則一直保持屏幕常亮。

保持屏幕常亮,但允許屏幕變暗來節(jié)省電量。

此函數(shù)可以用于定時(shí)腳本喚醒屏幕操作,不需要用戶觀看屏幕,可以讓屏幕變暗來節(jié)省電量。

此函數(shù)無法阻止用戶使用鎖屏鍵等正常關(guān)閉屏幕,只能使得設(shè)備在無人操作的情況下保持屏幕常亮;

同時(shí),如果此函數(shù)調(diào)用時(shí)屏幕沒有點(diǎn)亮,則會(huì)喚醒屏幕。

可以使用device.cancelKeepingAwake()來取消屏幕常亮。

device.cancelKeepingAwake()

取消設(shè)備保持喚醒狀態(tài)。

用于取消device.keepScreenOn(), device.keepScreenDim()等函數(shù)設(shè)置的屏幕常亮。

5、設(shè)置設(shè)備震動(dòng)狀態(tài)

device.vibrate(millis)

  • millis {number} 震動(dòng)時(shí)間,單位毫秒

使設(shè)備震動(dòng)一段時(shí)間。

//震動(dòng)兩秒 device.vibrate(2000);

device.cancelVibration()

如果設(shè)備處于震動(dòng)狀態(tài),則取消震動(dòng)。

對(duì)話框 - Dialogs

1、對(duì)話框中的回調(diào)和Promise

alert(str)

alert("hello"

confirm(str)

var clear = confirm("要清除所有緩存嗎?"); if(clear){alert("清除成功!"); } "ui"; //回調(diào)的形式 confirm('你確定嗎?','這里是要寫的內(nèi)容',function(bool){if(bool){toast('你點(diǎn)擊了確定')}else{toast('你點(diǎn)擊了取消')} })//Promise形式 confirm("要清除所有緩存嗎?").then(clear => {if(clear){alert("清除成功!");} });

2、對(duì)話框:alert和confirm

dialogs.alert(title[, content, callback])

  • title {string} 對(duì)話框的標(biāo)題。
  • content {string} 可選,對(duì)話框的內(nèi)容。默認(rèn)為空。
  • callback {Function} 回調(diào)函數(shù),可選。當(dāng)用戶點(diǎn)擊確定時(shí)被調(diào)用,一般用于ui模式。

顯示一個(gè)只包含“確定”按鈕的提示對(duì)話框。直至用戶點(diǎn)擊確定腳本才繼續(xù)運(yùn)行。

該函數(shù)也可以作為全局函數(shù)使用。

alert("出現(xiàn)錯(cuò)誤~", "出現(xiàn)未知錯(cuò)誤,請(qǐng)聯(lián)系腳本作者”);

在ui模式下該函數(shù)返回一個(gè)Promise。例如:

"ui";alert("嘿嘿嘿").then(()=>{//當(dāng)點(diǎn)擊確定后會(huì)執(zhí)行這里});

dialogs.confirm(title[, content, callback])

  • title {string} 對(duì)話框的標(biāo)題。
  • content {string} 可選,對(duì)話框的內(nèi)容。默認(rèn)為空。
  • callback {Function} 回調(diào)函數(shù),可選。當(dāng)用戶點(diǎn)擊確定時(shí)被調(diào)用,一般用于ui模式。

顯示一個(gè)包含“確定”和“取消”按鈕的提示對(duì)話框。如果用戶點(diǎn)擊“確定”則返回 true ,否則返回 false 。

該函數(shù)也可以作為全局函數(shù)使用。

在ui模式下該函數(shù)返回一個(gè)Promise。例如:

"ui"; confirm("確定嗎").then(value=>{//當(dāng)點(diǎn)擊確定后會(huì)執(zhí)行這里, value為true或false, 表示點(diǎn)擊"確定"或"取消"});

3、對(duì)話框:rawInput和input

dialogs.rawInput(title[, prefill, callback])

  • title {string} 對(duì)話框的標(biāo)題。
  • prefill {string} 輸入框的初始內(nèi)容,可選,默認(rèn)為空。
  • callback {Function} 回調(diào)函數(shù),可選。當(dāng)用戶點(diǎn)擊確定時(shí)被調(diào)用,一般用于ui模式。

顯示一個(gè)包含輸入框的對(duì)話框,等待用戶輸入內(nèi)容,并在用戶點(diǎn)擊確定時(shí)將輸入的字符串返回。如果用戶取消了輸入,返回null。

該函數(shù)也可以作為全局函數(shù)使用。

var name = rawInput("請(qǐng)輸入您的名字", "小明"); alert("您的名字是" + name);

在ui模式下該函數(shù)返回一個(gè)Promise。例如:

"ui"; rawInput("請(qǐng)輸入您的名字", "小明").then(name => {alert("您的名字是" + name); });

當(dāng)然也可以使用回調(diào)函數(shù),例如:

rawInput("請(qǐng)輸入您的名字", "小明", name => {alert("您的名字是" + name); });

dialogs.input(title[, prefill, callback])

等效于 eval(dialogs.rawInput(title, prefill, callback)), 該函數(shù)和rawInput的區(qū)別在于,會(huì)把輸入的字符串用eval計(jì)算一遍再返回,返回的可能不是字符串。

可以用該函數(shù)輸入數(shù)字、數(shù)組等。例如:

var age = dialogs.input("請(qǐng)輸入您的年齡", "18");// new Date().getYear() + 1900 可獲取當(dāng)前年份var year = new Date().getYear() + 1900 - age;alert("您的出生年份是" + year);

在ui模式下該函數(shù)返回一個(gè)Promise。例如:

"ui"; dialogs.input("請(qǐng)輸入您的年齡", "18").then(age => {var year = new Date().getYear() + 1900 - age;alert("您的出生年份是" + year); });

4、對(duì)話框:選項(xiàng)列表

dialogs.select(title, items, callback)

  • title {string} 對(duì)話框的標(biāo)題。
  • items {Array} 對(duì)話框的選項(xiàng)列表,是一個(gè)字符串?dāng)?shù)組。
  • callback {Function} 回調(diào)函數(shù),可選。當(dāng)用戶點(diǎn)擊確定時(shí)被調(diào)用,一般用于ui模式。

顯示一個(gè)帶有選項(xiàng)列表的對(duì)話框,等待用戶選擇,返回用戶選擇的選項(xiàng)索引(0 ~ item.length - 1)。如果用戶取消了選擇,返回-1。

var options = ["選項(xiàng)A", "選項(xiàng)B", "選項(xiàng)C", "選項(xiàng)D"]var i = dialogs.select("請(qǐng)選擇一個(gè)選項(xiàng)", options);if(i >= 0){toast("您選擇的是" + options[i]); }else{toast("您取消了選擇"); }

在ui模式下該函數(shù)返回一個(gè)Promise。例如:

"ui";dialogs.select("請(qǐng)選擇一個(gè)選項(xiàng)", ["選項(xiàng)A", "選項(xiàng)B", "選項(xiàng)C", "選項(xiàng)D"]).then(i => {toast(i); });

5、對(duì)話框:單選和多選

dialogs.singleChoice(title, items[, index, callback])

  • title {string} 對(duì)話框的標(biāo)題。
  • items {Array} 對(duì)話框的選項(xiàng)列表,是一個(gè)字符串?dāng)?shù)組。
  • index {number} 對(duì)話框的初始選項(xiàng)的位置,默認(rèn)為0。
  • callback {Function} 回調(diào)函數(shù),可選。當(dāng)用戶點(diǎn)擊確定時(shí)被調(diào)用,一般用于ui模式。

顯示一個(gè)單選列表對(duì)話框,等待用戶選擇,返回用戶選擇的選項(xiàng)索引(0 ~ item.length - 1)。如果用戶取消了選擇,返回-1。

dialogs.multiChoice(title, items[, indices, callback])

  • title {string} 對(duì)話框的標(biāo)題。
  • items {Array} 對(duì)話框的選項(xiàng)列表,是一個(gè)字符串?dāng)?shù)組。
  • indices {Array} 選項(xiàng)列表中初始選中的項(xiàng)目索引的數(shù)組,默認(rèn)為空數(shù)組。
  • callback {Function} 回調(diào)函數(shù),可選。當(dāng)用戶點(diǎn)擊確定時(shí)被調(diào)用,一般用于ui模式。

顯示一個(gè)多選列表對(duì)話框,等待用戶選擇,返回用戶選擇的選項(xiàng)索引的數(shù)組。如果用戶取消了選擇,返回[]。

在ui模式下該函數(shù)返回一個(gè)Promise。

對(duì)話框 - Dialogs

主講:阿濤 QQ/微信:656206105

微信公眾號(hào):立體空間

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-d3w3Fq7j-1638930432645)(dyh.jpg)]

6、對(duì)話框:自定義對(duì)話框

dialogs.build(properties)

  • properties {Object} 對(duì)話框?qū)傩?#xff0c;用于配置對(duì)話框。
  • 返回 {Dialog}

創(chuàng)建一個(gè)可自定義的對(duì)話框,例如:

dialogs.build({//對(duì)話框標(biāo)題title: "發(fā)現(xiàn)新版本",//對(duì)話框內(nèi)容content: "更新日志: 新增了若干了BUG",//確定鍵內(nèi)容positive: "下載",//取消鍵內(nèi)容negative: "取消",//中性鍵內(nèi)容neutral: "到瀏覽器下載",//勾選框內(nèi)容checkBoxPrompt: "不再提示" }).show()

選項(xiàng)properties可供配置的項(xiàng)目為:

  • title {string} 對(duì)話框標(biāo)題

  • titleColor {string} | {number} 對(duì)話框標(biāo)題的顏色

  • buttonRippleColor {string} | {number} 對(duì)話框按鈕的波紋效果顏色

  • icon {string} | {Image} 對(duì)話框的圖標(biāo),是一個(gè)URL或者圖片對(duì)象

  • content {string} 對(duì)話框文字內(nèi)容

  • contentColor{string} | {number} 對(duì)話框文字內(nèi)容的顏色

  • contentLineSpacing{number} 對(duì)話框文字內(nèi)容的行高倍數(shù),1.0為一倍行高

  • items {Array} 對(duì)話框列表的選項(xiàng)

  • itemsColor {string} | {number} 對(duì)話框列表的選項(xiàng)的文字顏色

  • itemsSelectMode

    {string} 對(duì)話框列表的選項(xiàng)選擇模式,可以為:

    • select 普通選擇模式
    • single 單選模式
    • multi 多選模式
  • itemsSelectedIndex {number} | {Array} 對(duì)話框列表中預(yù)先選中的項(xiàng)目索引,如果是單選模式為一個(gè)索引;多選模式則為數(shù)組

  • positive {string} 對(duì)話框確定按鈕的文字內(nèi)容(最右邊按鈕)

  • positiveColor {string} | {number} 對(duì)話框確定按鈕的文字顏色(最右邊按鈕)

  • neutral {string} 對(duì)話框中立按鈕的文字內(nèi)容(最左邊按鈕)

  • neutralColor {string} | {number} 對(duì)話框中立按鈕的文字顏色(最左邊按鈕)

  • negative {string} 對(duì)話框取消按鈕的文字內(nèi)容(確定按鈕左邊的按鈕)

  • negativeColor {string} | {number} 對(duì)話框取消按鈕的文字顏色(確定按鈕左邊的按鈕)

  • checkBoxPrompt {string} 勾選框文字內(nèi)容

  • checkBoxChecked {boolean} 勾選框是否勾選

  • progress

    {Object} 配置對(duì)話框進(jìn)度條的對(duì)象:

    • max {number} 進(jìn)度條的最大值,如果為-1則為無限循環(huán)的進(jìn)度條
    • horizontal {boolean} 如果為true, 則對(duì)話框無限循環(huán)的進(jìn)度條為水平進(jìn)度條
    • showMinMax {boolean} 是否顯示進(jìn)度條的最大值和最小值
  • cancelable {boolean} 對(duì)話框是否可取消,如果為false,則對(duì)話框只能用代碼手動(dòng)取消

  • canceledOnTouchOutside {boolean} 對(duì)話框是否在點(diǎn)擊對(duì)話框以外區(qū)域時(shí)自動(dòng)取消,默認(rèn)為true

  • inputHint {string} 對(duì)話框的輸入框的輸入提示

  • inputPrefill {string} 對(duì)話框輸入框的默認(rèn)輸入內(nèi)容

通過這些選項(xiàng)可以自定義一個(gè)對(duì)話框,并通過監(jiān)聽返回的Dialog對(duì)象的按鍵、輸入事件來實(shí)現(xiàn)交互。

7、對(duì)話框事件:顯示和消失事件

事件: show

  • dialog {Dialog} 對(duì)話框

對(duì)話框顯示時(shí)會(huì)觸發(fā)的事件。例如:

dialogs.build({title: "標(biāo)題" }).on("show", (dialog)=>{toast("對(duì)話框顯示了"); }).show();

事件: dismiss

  • dialog {Dialog} 對(duì)話框

對(duì)話框消失時(shí)會(huì)觸發(fā)的事件。對(duì)話框被取消或者手動(dòng)調(diào)用dialog.dismiss()函數(shù)都會(huì)觸發(fā)該事件。例如:

var d = dialogs.build({title: "標(biāo)題",positive: "確定",negative: "取消" }).on("dismiss", (dialog)=>{toast("對(duì)話框消失了"); }).show();setTimeout(()=>{d.dismiss(); }, 5000);

8、對(duì)話框事件:按鈕事件

事件: positive

  • dialog {Dialog} 對(duì)話框

確定按鈕按下時(shí)觸發(fā)的事件。例如:

var d = dialogs.build({title: "標(biāo)題",positive: "確定",negative: "取消" }).on("positive", (dialog)=>{toast("你點(diǎn)擊了確定"); }).show();

事件: negative

  • dialog {Dialog} 對(duì)話框

取消按鈕按下時(shí)觸發(fā)的事件。例如:

var d = dialogs.build({title: "標(biāo)題",positive: "確定",negative: "取消" }).on("negative", (dialog)=>{toast("你點(diǎn)擊了取消"); }).show();

事件: cancel

  • dialog {Dialog} 對(duì)話框

對(duì)話框被取消時(shí)會(huì)觸發(fā)的事件。一個(gè)對(duì)話框可能按取消按鈕、返回鍵取消或者點(diǎn)擊對(duì)話框以外區(qū)域取消。例如:

dialogs.build({title: "標(biāo)題",positive: "確定",negative: "取消" }).on("cancel", (dialog)=>{toast("對(duì)話框取消了"); }).show();

事件: neutral

  • dialog {Dialog} 對(duì)話框

中性按鈕按下時(shí)觸發(fā)的事件。例如:

var d = dialogs.build({title: "標(biāo)題",positive: "確定",negative: "取消",neutral: "稍后提示" }).on("positive", (dialog)=>{toast("你點(diǎn)擊了稍后提示"); }).show();

事件: any

  • dialog {Dialog} 對(duì)話框
  • action {string} 被點(diǎn)擊的按鈕,可能的值為:
    • positive 確定按鈕
    • negative 取消按鈕
    • neutral 中性按鈕

任意按鈕按下時(shí)觸發(fā)的事件。例如:

var d = dialogs.build({title: "標(biāo)題",positive: "確定",negative: "取消",neutral: "稍后提示" }).on("any", (action, dialog)=>{if(action == "positive"){toast("你點(diǎn)擊了確定");}else if(action == "negative"){toast("你點(diǎn)擊了取消");} }).show();

9、對(duì)話框事件:單選多選事件

事件: item_select

  • index {number} 被選中的項(xiàng)目索引,從0開始
  • item {Object} 被選中的項(xiàng)目
  • dialog {Dialog} 對(duì)話框

對(duì)話框列表(itemsSelectMode為"select")的項(xiàng)目被點(diǎn)擊選中時(shí)觸發(fā)的事件。例如:

var d = dialogs.build({title: "請(qǐng)選擇",positive: "確定",negative: "取消",items: ["A", "B", "C", "D"],itemsSelectMode: "select" }).on("item_select", (index, item, dialog)=>{toast("您選擇的是第" + (index + 1) + "項(xiàng), 選項(xiàng)為" + item); }).show();

事件: single_choice

  • index {number} 被選中的項(xiàng)目索引,從0開始
  • item {Object} 被選中的項(xiàng)目
  • dialog {Dialog} 對(duì)話框

對(duì)話框單選列表(itemsSelectMode為"singleChoice")的項(xiàng)目被選中并點(diǎn)擊確定時(shí)觸發(fā)的事件。例如:

dialogs.build({title: '這是選擇框事件',items: ['A','B','C','D'],itemsSelectMode: 'single',itemsSelectedIndex: 0,positive: '確定' }).on('single_choice',function(index,item,dialog){toastLog(index+"----"+item)// 3----DtoastLog("你選擇的是第"+(index+1).toString()+"個(gè)選項(xiàng):"+item) }).show()

事件: multi_choice 【失效】

  • indices {Array} 被選中的項(xiàng)目的索引的數(shù)組
  • items {Array} 被選中的項(xiàng)目的數(shù)組
  • dialog {Dialog} 對(duì)話框

對(duì)話框多選列表(itemsSelectMode為"multiChoice")的項(xiàng)目被選中并點(diǎn)擊確定時(shí)觸發(fā)的事件。例如:

var d = dialogs.build({title: "請(qǐng)選擇",positive: "確定",negative: "取消",items: ["A", "B", "C", "D"],itemsSelectMode: "multiChoice" }).on("item_select", (indices, items, dialog)=>{toast(util.format("您選擇的項(xiàng)目為%o, 選項(xiàng)為%o", indices, items); }).show();

10、對(duì)話框事件:輸入事件

事件: input

  • text {string} 輸入框的內(nèi)容
  • dialog {Dialog} 對(duì)話框

帶有輸入框的對(duì)話框當(dāng)點(diǎn)擊確定時(shí)會(huì)觸發(fā)的事件。例如:

dialogs.build({title: "請(qǐng)輸入",positive: "確定",negative: "取消",inputPrefill: "" }).on("input", (text, dialog)=>{toast("你輸入的是" + text); }).show();

事件: input_change

  • text {string} 輸入框的內(nèi)容
  • dialog {Dialog} 對(duì)話框

對(duì)話框的輸入框的文本發(fā)生變化時(shí)會(huì)觸發(fā)的事件。例如:

dialogs.build({title: "請(qǐng)輸入",positive: "確定",negative: "取消",inputPrefill: "" }).on("input_change", (text, dialog)=>{toast("你輸入的是" + text); }).show();

11、對(duì)話框?qū)ο蠓椒?/h1>

dialog.getProgress()

  • 返回 {number}

獲取當(dāng)前進(jìn)度條的進(jìn)度值,是一個(gè)整數(shù)

dialog.getMaxProgress()

  • 返回 {number}

獲取當(dāng)前進(jìn)度條的最大進(jìn)度值,是一個(gè)整數(shù)

dialog.getActionButton(action)

action {string} 動(dòng)作,包括:

  • positive
  • negative
  • neutral

事件與監(jiān)聽 - Events

1、什么是事件與監(jiān)聽

events模塊提供了監(jiān)聽手機(jī)通知、按鍵、觸摸的接口。您可以用他配合自動(dòng)操作函數(shù)完成自動(dòng)化工作。

events本身是一個(gè)EventEmiiter, 但內(nèi)置了一些事件、包括按鍵事件、通知事件、Toast事件等。

需要注意的是,事件的處理是單線程的,并且仍然在原線程執(zhí)行,如果腳本主體或者其他事件處理中有耗時(shí)操作、輪詢等,則事件將無法得到及時(shí)處理(會(huì)進(jìn)入事件隊(duì)列等待腳本主體或其他事件處理完成才執(zhí)行)。例如:

auto();//啟用按鍵監(jiān)聽 events.observeKey(); //監(jiān)聽音量上鍵按下 events.onKeyDown("volume_up", function(event){//這里不會(huì)被執(zhí)行toast("音量上鍵被按下了"); });while(true){//死循環(huán) }

2、監(jiān)聽按鍵事件

events.observeKey()

啟用按鍵監(jiān)聽,例如音量鍵、Home鍵。按鍵監(jiān)聽使用無障礙服務(wù)實(shí)現(xiàn),如果無障礙服務(wù)未啟用會(huì)拋出異常并提示開啟。

只有這個(gè)函數(shù)成功執(zhí)行后, onKeyDown, onKeyUp等按鍵事件的監(jiān)聽才有效。

該函數(shù)在安卓4.3以上才能使用。

events.onKeyDown(keyName, listener)

  • keyName {string} 要監(jiān)聽的按鍵名稱
  • listener {Function} 按鍵監(jiān)聽器。參數(shù)為一個(gè)KeyEvent

注冊(cè)一個(gè)按鍵監(jiān)聽函數(shù),當(dāng)有keyName對(duì)應(yīng)的按鍵被按下會(huì)調(diào)用該函數(shù)。

按鍵事件中所有可用的按鍵名稱為:

  • volume_up 音量上鍵
  • volume_down 音量下鍵
  • home 主屏幕鍵
  • back 返回鍵
  • menu 菜單鍵

例如:

//啟用按鍵監(jiān)聽 events.observeKey(); //監(jiān)聽音量上鍵按下 events.onKeyDown("volume_up", function(event){toast("音量上鍵被按下了"); }); //監(jiān)聽菜單鍵按下 events.onKeyDown("menu", function(event){toast("菜單鍵被按下了");exit(); });

events.onKeyUp(keyName, listener)

  • keyName {string} 要監(jiān)聽的按鍵名稱
  • listener {Function} 按鍵監(jiān)聽器。參數(shù)為一個(gè)KeyEvent。

注冊(cè)一個(gè)按鍵監(jiān)聽函數(shù),當(dāng)有keyName對(duì)應(yīng)的按鍵彈起會(huì)調(diào)用該函數(shù)。

按鍵事件中所有可用的按鍵名稱為:

  • volume_up 音量上鍵
  • volume_down 音量下鍵
  • home 主屏幕鍵
  • back 返回鍵
  • menu 菜單鍵

一次完整的按鍵動(dòng)作包括了按鍵按下和彈起。按下事件會(huì)在手指按下一個(gè)按鍵的"瞬間"觸發(fā), 彈起事件則在手指放開這個(gè)按鍵時(shí)觸發(fā)。

例如:

//啟用按鍵監(jiān)聽 events.observeKey(); //監(jiān)聽音量下鍵彈起 events.onKeyDown("volume_down", function(event){toast("音量上鍵彈起"); }); //監(jiān)聽Home鍵彈起 events.onKeyDown("home", function(event){toast("Home鍵彈起");exit(); });

3、KeyEvent對(duì)象方法

KeyEvent.getAction()

返回事件的動(dòng)作。包括:

  • KeyEvent.ACTION_DOWN 按下事件
  • KeyEvent.ACTION_UP 彈起事件

KeyEvent.getKeyCode()

返回按鍵的鍵值。包括:

  • KeyEvent.KEYCODE_HOME 主頁(yè)鍵
  • KeyEvent.KEYCODE_BACK 返回鍵
  • KeyEvent.KEYCODE_MENU 菜單鍵
  • KeyEvent.KEYCODE_VOLUME_UP 音量上鍵
  • KeyEvent.KEYCODE_VOLUME_DOWN 音量下鍵

KeyEvent.getEventTime()

  • 返回 {number}

返回事件發(fā)生的時(shí)間戳。

KeyEvent.getDownTime()

返回最近一次按下事件的時(shí)間戳。如果本身是按下事件,則與getEventTime()相同。

KeyEvent.keyCodeToString(keyCode)

把鍵值轉(zhuǎn)換為字符串。例如24轉(zhuǎn)換為"KEYCODE_HOME"。

4、事件:key、key_down、key_up

事件: ‘key’

  • keyCode {number} 鍵值
  • event {KeyEvent} 事件

當(dāng)有按鍵被按下或彈起時(shí)會(huì)觸發(fā)該事件。 例如:

auto(); events.observeKey(); events.on("key", function(keyCode, event){//處理按鍵事件 });

其中監(jiān)聽器的參數(shù)KeyCode包括:

  • keys.home 主頁(yè)鍵
  • keys.back 返回鍵
  • keys.menu 菜單鍵
  • keys.volume_up 音量上鍵
  • keys.volume_down 音量下鍵

例如:

auto(); events.observeKey(); events.on("key", function(keyCode, event){if(keyCode == keys.menu && event.getAction() == event.ACTION_UP){toast("菜單鍵按下");} });

事件: ‘key_down’

  • keyCode {number} 鍵值
  • event {KeyEvent} 事件

當(dāng)有按鍵被按下時(shí)會(huì)觸發(fā)該事件。

auto(); events.observeKey(); events.on("key_down", function(keyCode, event){//處理按鍵按下事件 });

事件: ‘key_up’

  • keyCode {number} 鍵值
  • event {KeyEvent} 事件

當(dāng)有按鍵彈起時(shí)會(huì)觸發(fā)該事件。

auto(); events.observeKey(); events.on("key_up", function(keyCode, event){//處理按鍵彈起事件 });

5、單次監(jiān)聽按鍵事件

events.onceKeyDown(keyName, listener)

  • keyName {string} 要監(jiān)聽的按鍵名稱
  • listener {Function} 按鍵監(jiān)聽器。參數(shù)為一個(gè)KeyEvent

注冊(cè)一個(gè)按鍵監(jiān)聽函數(shù),當(dāng)有keyName對(duì)應(yīng)的按鍵被按下時(shí)會(huì)調(diào)用該函數(shù),之后會(huì)注銷該按鍵監(jiān)聽器。

也就是listener只有在onceKeyDown調(diào)用后的第一次按鍵事件被調(diào)用一次。

events.onceKeyUp(keyName, listener)

  • keyName {string} 要監(jiān)聽的按鍵名稱
  • listener {Function} 按鍵監(jiān)聽器。參數(shù)為一個(gè)KeyEvent

注冊(cè)一個(gè)按鍵監(jiān)聽函數(shù),當(dāng)有keyName對(duì)應(yīng)的按鍵彈起時(shí)會(huì)調(diào)用該函數(shù),之后會(huì)注銷該按鍵監(jiān)聽器。

也就是listener只有在onceKeyUp調(diào)用后的第一次按鍵事件被調(diào)用一次。

6、刪除按鍵事件的監(jiān)聽

events.removeAllKeyDownListeners(keyName)

  • keyName {string} 按鍵名稱

刪除該按鍵的KeyDown(按下)事件的所有監(jiān)聽。

events.removeAllKeyUpListeners(keyName)

  • keyName {string} 按鍵名稱

刪除該按鍵的KeyUp(彈起)事件的所有監(jiān)聽。

7、屏蔽原有按鍵功能

events.setKeyInterceptionEnabled([key, ]enabled)

  • enabled {boolean}
  • key {string} 要屏蔽的按鍵

設(shè)置按鍵屏蔽是否啟用。所謂按鍵屏蔽指的是,屏蔽原有按鍵的功能,例如使得音量鍵不再能調(diào)節(jié)音量,但此時(shí)仍然能通過按鍵事件監(jiān)聽按鍵。

如果不加參數(shù)key則會(huì)屏蔽所有按鍵。

例如,調(diào)用events.setKeyInterceptionEnabled(true)會(huì)使系統(tǒng)的音量、Home、返回等鍵不再具有調(diào)節(jié)音量、回到主頁(yè)、返回的作用,但此時(shí)仍然能通過按鍵事件監(jiān)聽按鍵。

該函數(shù)通常于按鍵監(jiān)聽結(jié)合,例如想監(jiān)聽音量鍵并使音量鍵按下時(shí)不彈出音量調(diào)節(jié)框則為:

events.setKeyInterceptionEnabled("volume_up", true); events.observeKey(); events.onKeyDown("volume_up", ()=>{log("音量上鍵被按下"); });

只要有一個(gè)腳本屏蔽了某個(gè)按鍵,該按鍵便會(huì)被屏蔽;當(dāng)腳本退出時(shí),會(huì)自動(dòng)解除所有按鍵屏蔽。

8、屏幕觸摸事件監(jiān)聽(需要root權(quán)限)

events.observeTouch()

啟用屏幕觸摸監(jiān)聽。(需要root權(quán)限)

只有這個(gè)函數(shù)被成功執(zhí)行后, 觸摸事件的監(jiān)聽才有效。

沒有root權(quán)限調(diào)用該函數(shù)則什么也不會(huì)發(fā)生。

events.setTouchEventTimeout(timeout)

  • timeout {number} 兩個(gè)觸摸事件的最小間隔。單位毫秒。默認(rèn)為10毫秒。如果number小于0,視為0處理。

設(shè)置兩個(gè)觸摸事件分發(fā)的最小時(shí)間間隔。

例如間隔為10毫秒的話,前一個(gè)觸摸事件發(fā)生并被注冊(cè)的監(jiān)聽器處理后,至少要過10毫秒才能分發(fā)和處理下一個(gè)觸摸事件,這10毫秒之間的觸摸將會(huì)被忽略。

建議在滿足需要的情況下盡量提高這個(gè)間隔。一個(gè)簡(jiǎn)單滑動(dòng)動(dòng)作可能會(huì)連續(xù)觸發(fā)上百個(gè)觸摸事件,如果timeout設(shè)置過低可能造成事件擁堵。強(qiáng)烈建議不要設(shè)置timeout為0。

events.getTouchEventTimeout()

返回觸摸事件的最小時(shí)間間隔。

events.onTouch(listener)

  • listener {Function} 參數(shù)為Point的函數(shù)

注冊(cè)一個(gè)觸摸監(jiān)聽函數(shù)。相當(dāng)于on("touch", listener)。

例如:

//啟用觸摸監(jiān)聽 events.observeTouch(); //注冊(cè)觸摸監(jiān)聽器 events.onTouch(function(p){//觸摸事件發(fā)生時(shí), 打印出觸摸的點(diǎn)的坐標(biāo)log(p.x + ", " + p.y); });

events.removeAllTouchListeners()

刪除所有事件監(jiān)聽函數(shù)。

9、通知事件監(jiān)聽:QQ消息、微信消息、推送等通知

events.observeNotification()

通知監(jiān)聽依賴于通知服務(wù),如果通知服務(wù)沒有運(yùn)行,會(huì)拋出異常并跳轉(zhuǎn)到通知權(quán)限開啟界面。(有時(shí)即使通知權(quán)限已經(jīng)開啟通知服務(wù)也沒有運(yùn)行,這時(shí)需要關(guān)閉權(quán)限再重新開啟一次)

例如:

events.obvereNotification(); events.onNotification(function(notification){log(notification.getText()); });

事件: ‘notification’

  • notification Notification通知對(duì)象

當(dāng)有應(yīng)用發(fā)出通知時(shí)會(huì)觸發(fā)該事件,參數(shù)為Notification。

例如:

events.observeNotification(); events.on("notification", function(n){log("收到新通知:\n 標(biāo)題: %s, 內(nèi)容: %s, \n包名: %s", n.getTitle(), n.getText(), n.getPackageName()); });

10、Notification對(duì)象

通知對(duì)象,可以獲取通知詳情,包括通知標(biāo)題、內(nèi)容、發(fā)出通知的包名、時(shí)間等,也可以對(duì)通知進(jìn)行操作,比如點(diǎn)擊、刪除。

Notification.number

  • {number}

通知數(shù)量。例如QQ連續(xù)收到兩條消息時(shí)number為2。

Notification.when

  • {number}

通知發(fā)出時(shí)間的時(shí)間戳,可以用于構(gòu)造Date對(duì)象。例如:

events.observeNotification(); events.on("notification", function(n){log("通知時(shí)間為}" + new Date(n.when)); });

Notification.getPackageName()

  • 返回 {string}

獲取發(fā)出通知的應(yīng)用包名。

Notification.getTitle()

  • 返回 {string}

獲取通知的標(biāo)題。

Notification.getText()

  • 返回 {string}

獲取通知的內(nèi)容。

Notification.click()

點(diǎn)擊該通知。例如對(duì)于一條QQ消息,點(diǎn)擊會(huì)進(jìn)入具體的聊天界面。

Notification.delete()

刪除該通知。該通知將從通知欄中消失。

11、toast事件監(jiān)聽

events.observeToast()

開啟Toast監(jiān)聽。

Toast監(jiān)聽依賴于無障礙服務(wù),因此此函數(shù)會(huì)確保無障礙服務(wù)運(yùn)行。

事件: ‘toast’

  • getText() 獲取Toast的文本內(nèi)容
  • getPackageName() 獲取發(fā)出Toast的應(yīng)用包名

當(dāng)有應(yīng)用發(fā)出toast(氣泡消息)時(shí)會(huì)觸發(fā)該事件。但Auto.js軟件本身的toast除外。

例如,要記錄發(fā)出所有toast的應(yīng)用:

events.observeToast(); events.onToast(function(toast){log("Toast內(nèi)容: " + toast.getText() + " 包名: " + toast.getPackageName()); });

12、EventEmitter對(duì)象

events本身是一個(gè)EventEmiiter, 但內(nèi)置了一些事件、包括按鍵事件、通知事件、Toast事件等。

events.emitter()

返回一個(gè)新的EventEmitter。這個(gè)EventEmitter沒有內(nèi)置任何事件。

13、EventEmitter對(duì)象:設(shè)置監(jiān)聽器數(shù)量

EventEmitter.defaultMaxListeners

每個(gè)事件默認(rèn)可以注冊(cè)最多 10 個(gè)監(jiān)聽器。 單個(gè) EventEmitter 實(shí)例的限制可以使用 emitter.setMaxListeners(n) 方法改變。

所有 EventEmitter 實(shí)例的默認(rèn)值可以使用 EventEmitter.defaultMaxListeners 屬性改變。

設(shè)置 EventEmitter.defaultMaxListeners 要謹(jǐn)慎,因?yàn)闀?huì)影響所有 EventEmitter 實(shí)例,包括之前創(chuàng)建的。 因而,調(diào)用 emitter.setMaxListeners(n) 優(yōu)先于 EventEmitter.defaultMaxListeners。

注意,與Node.js不同,這是一個(gè)硬性限制。 EventEmitter 實(shí)例不允許添加更多的監(jiān)聽器,監(jiān)聽器超過最大數(shù)量時(shí)會(huì)拋出TooManyListenersException。

EventEmitter.getMaxListeners()

返回 EventEmitter 當(dāng)前的最大監(jiān)聽器限制值,該值可以通過 emitter.setMaxListeners(n) 設(shè)置或默認(rèn)為 EventEmitter.defaultMaxListeners。

EventEmitter.setMaxListeners(n)

  • n {number}

默認(rèn)情況下,如果為特定事件添加了超過 10 個(gè)監(jiān)聽器,則 EventEmitter 會(huì)打印一個(gè)警告。 此限制有助于尋找內(nèi)存泄露。 但是,并不是所有的事件都要被限為 10 個(gè)。 emitter.setMaxListeners() 方法允許修改指定的 EventEmitter 實(shí)例的限制。 值設(shè)為 Infinity(或 0)表明不限制監(jiān)聽器的數(shù)量。

返回一個(gè) EventEmitter 引用,可以鏈?zhǔn)秸{(diào)用。

emitter.setMaxListeners(emitter.getMaxListeners() + 1); emitter.once('event', () => {// 做些操作emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0)); });

14、EventEmitter對(duì)象:添加監(jiān)聽事件

EventEmitter.addListener(eventName, listener)

  • eventName {any}
  • listener {Function}

emitter.on(eventName, listener) 的別名。

EventEmitter.on(eventName, listener)

  • eventName {any} 事件名
  • listener {Function} 回調(diào)函數(shù)

添加 listener 函數(shù)到名為 eventName 的事件的監(jiān)聽器數(shù)組的末尾。 不會(huì)檢查 listener 是否已被添加。 多次調(diào)用并傳入相同的 eventName 和 listener 會(huì)導(dǎo)致 listener 被添加與調(diào)用多次。

server.on('connection', (stream) => {console.log('有連接!'); });

返回一個(gè) EventEmitter 引用,可以鏈?zhǔn)秸{(diào)用。

默認(rèn)情況下,事件監(jiān)聽器會(huì)按照添加的順序依次調(diào)用。 emitter.prependListener() 方法可用于將事件監(jiān)聽器添加到監(jiān)聽器數(shù)組的開頭。

const myEE = events.emitter(); myEE.on('foo', () => console.log('a')); myEE.prependListener('foo', () => console.log('b')); myEE.emit('foo'); // 打印: // b // a

EventEmitter.once(eventName, listener)

  • eventName {any} 事件名
  • listener {Function} 回調(diào)函數(shù)

添加一個(gè)單次 listener 函數(shù)到名為 eventName 的事件。 下次觸發(fā) eventName 事件時(shí),監(jiān)聽器會(huì)被移除,然后調(diào)用。

server.once('connection', (stream) => {console.log('首次調(diào)用!'); });

返回一個(gè) EventEmitter 引用,可以鏈?zhǔn)秸{(diào)用。

默認(rèn)情況下,事件監(jiān)聽器會(huì)按照添加的順序依次調(diào)用。 emitter.prependOnceListener() 方法可用于將事件監(jiān)聽器添加到監(jiān)聽器數(shù)組的開頭。

const myEE = events.emitter(); myEE.once('foo', () => console.log('a')); myEE.prependOnceListener('foo', () => console.log('b')); myEE.emit('foo'); // 打印: // b // a

15、EventEmitter對(duì)象:調(diào)用監(jiān)聽事件

EventEmitter.emit(eventName[, …args])

  • eventName {any}
  • args {any}

按監(jiān)聽器的注冊(cè)順序,同步地調(diào)用每個(gè)注冊(cè)到名為 eventName 事件的監(jiān)聽器,并傳入提供的參數(shù)。

如果事件有監(jiān)聽器,則返回 true ,否則返回 false。

16、EventEmitter對(duì)象:獲取監(jiān)聽事件

EventEmitter.eventNames()

返回一個(gè)列出觸發(fā)器已注冊(cè)監(jiān)聽器的事件的數(shù)組。 數(shù)組中的值為字符串或符號(hào)。

const myEE = events.emitter(); myEE.on('foo', () => {}); myEE.on('bar', () => {});const sym = Symbol('symbol'); myEE.on(sym, () => {});console.log(myEE.eventNames()); // 打印: [ 'foo', 'bar', Symbol(symbol) ]

EventEmitter.listenerCount(eventName)

  • eventName {string} 正在被監(jiān)聽的事件名

返回正在監(jiān)聽名為 eventName 的事件的監(jiān)聽器的數(shù)量。

EventEmitter.listeners(eventName)

  • eventName {string}

返回名為 eventName 的事件的監(jiān)聽器數(shù)組的副本。

17、EventEmitter對(duì)象:添加監(jiān)聽事件到開頭

EventEmitter.prependListener(eventName, listener)

  • eventName {any} 事件名
  • listener {Function} 回調(diào)函數(shù)

添加 listener 函數(shù)到名為 eventName 的事件的監(jiān)聽器數(shù)組的開頭。 不會(huì)檢查 listener 是否已被添加。 多次調(diào)用并傳入相同的 eventName 和 listener 會(huì)導(dǎo)致 listener 被添加與調(diào)用多次。

server.prependListener('connection', (stream) => {console.log('有連接!'); });

返回一個(gè) EventEmitter 引用,可以鏈?zhǔn)秸{(diào)用。

EventEmitter.prependOnceListener(eventName, listener)

  • eventName {any} 事件名
  • listener {Function} 回調(diào)函數(shù)

添加一個(gè)單次 listener 函數(shù)到名為 eventName 的事件的監(jiān)聽器數(shù)組的開頭。 下次觸發(fā) eventName 事件時(shí),監(jiān)聽器會(huì)被移除,然后調(diào)用。

server.prependOnceListener('connection', (stream) => {console.log('首次調(diào)用!'); });

返回一個(gè) EventEmitter 引用,可以鏈?zhǔn)秸{(diào)用。

18、EventEmitter對(duì)象:刪除事件監(jiān)聽

EventEmitter.removeAllListeners([eventName])

  • eventName {any}

移除全部或指定 eventName 的監(jiān)聽器。

注意,在代碼中移除其他地方添加的監(jiān)聽器是一個(gè)不好的做法,尤其是當(dāng) EventEmitter 實(shí)例是其他組件或模塊創(chuàng)建的。

返回一個(gè) EventEmitter 引用,可以鏈?zhǔn)秸{(diào)用。

EventEmitter.removeListener(eventName, listener)(有bug)

  • eventName {any}
  • listener {Function}

從名為 eventName 的事件的監(jiān)聽器數(shù)組中移除指定的 listener。

const callback = (stream) => {console.log('有連接!'); }; server.on('connection', callback); // ... server.removeListener('connection', callback);

removeListener 最多只會(huì)從監(jiān)聽器數(shù)組里移除一個(gè)監(jiān)聽器實(shí)例。 如果任何單一的監(jiān)聽器被多次添加到指定 eventName 的監(jiān)聽器數(shù)組中,則必須多次調(diào)用 removeListener 才能移除每個(gè)實(shí)例。

注意,一旦一個(gè)事件被觸發(fā),所有綁定到它的監(jiān)聽器都會(huì)按順序依次觸發(fā)。 這意味著,在事件觸發(fā)后、最后一個(gè)監(jiān)聽器完成執(zhí)行前,任何 removeListener() 或 removeAllListeners() 調(diào)用都不會(huì)從 emit() 中移除它們。 隨后的事件會(huì)像預(yù)期的那樣發(fā)生。

const myEmitter = events.emitter();const callbackA = () => {console.log('A');myEmitter.removeListener('event', callbackB); };const callbackB = () => {console.log('B'); };myEmitter.on('event', callbackA);myEmitter.on('event', callbackB);// callbackA 移除了監(jiān)聽器 callbackB,但它依然會(huì)被調(diào)用。 // 觸發(fā)是內(nèi)部的監(jiān)聽器數(shù)組為 [callbackA, callbackB] myEmitter.emit('event'); // 打印: // A // B// callbackB 被移除了。 // 內(nèi)部監(jiān)聽器數(shù)組為 [callbackA] myEmitter.emit('event'); // 打印: // A

因?yàn)楸O(jiān)聽器是使用內(nèi)部數(shù)組進(jìn)行管理的,所以調(diào)用它會(huì)改變?cè)诒O(jiān)聽器被移除后注冊(cè)的任何監(jiān)聽器的位置索引。

雖然這不會(huì)影響監(jiān)聽器的調(diào)用順序,但意味著由 emitter.listeners() 方法返回的監(jiān)聽器數(shù)組副本需要被重新創(chuàng)建。

返回一個(gè) EventEmitter 引用,可以鏈?zhǔn)秸{(diào)用。

19、腳本間廣播通信

腳本間通信除了使用engines模塊提供的ScriptEngine.emit()方法以外,也可以使用events模塊提供的broadcast廣播。

events.broadcast本身是一個(gè)EventEmitter,但它的事件是在腳本間共享的,所有腳本都能發(fā)送和監(jiān)聽這些事件;事件處理會(huì)在腳本主線程執(zhí)行

例如在一個(gè)腳本發(fā)送一個(gè)廣播hello:

events.broadcast.emit("hello", "小明");

在其他腳本中監(jiān)聽并處理:

events.broadcast.on("hello", function(name){toast("你好, " + name); }); //保持腳本運(yùn)行 setInterval(()=>{}, 1000);

20、獲取window窗口信息

auto.windows

獲取當(dāng)前窗口的集合

auto.windows.filter(w => {//條件})

21、Autojs 8.0Pro版本:監(jiān)聽無障礙事件的API

在以前,Auto.js也一直只能通過無限循環(huán)去判斷當(dāng)前界面、尋找控件,這實(shí)際上對(duì)省電優(yōu)化十分不友好。

在Pro 8.0.0-3版本,引入了監(jiān)聽無障礙事件的API。

auto.registerEvents(events)

  • events {Array} 要監(jiān)聽的事件數(shù)組
  • 返回 {EventEmitter}

auto.registerEvent(event, callback)

  • event {String} 要監(jiān)聽的事件
  • callback {Function} 事件回調(diào)
  • 返回 {EventEmitter}

以上兩個(gè)函數(shù)用于監(jiān)聽一個(gè)或多個(gè)無障礙事件。所謂無障礙事件,即(其他軟件)窗口發(fā)送變化、控件發(fā)送變化時(shí)的事件,包括:

  • view_clicked 控件被點(diǎn)擊
  • view_long_clicked 控件被長(zhǎng)按點(diǎn)擊
  • view_selected 控件被選中
  • view_focused 控件成為焦點(diǎn)
  • view_text_changed 控件文本改變
  • view_scrolled 控件被滑動(dòng)
  • window_state_changed 窗口狀態(tài)變化
  • window_content_changed 窗口內(nèi)容變化
  • window_changed 屏幕上顯示窗口的變化(增加,刪除,子窗口變化等)
  • notification_state_changed 通知狀態(tài)變化

例如,我們要監(jiān)聽Auto.js的打開,可以用以下代碼監(jiān)聽:

// 監(jiān)聽窗口變化 auto.registerEvent('windows_changed', e => {// 判斷是否有新窗口打開if (e.windowChanges[0].indexOf('add') >= 0) {// 獲取新窗口的idlet wid = e.windowId;// 遍歷窗口,獲取新窗口let window = auto.windows.filter(w => w.id == wid);// 判斷新窗口是Auto.jsif (window.length >= 0 && window[0].title == 'Auto.js') {toast("Auto.js被打開了!");}} });

22、監(jiān)聽無障礙事件的API:控件被點(diǎn)擊

// 監(jiān)聽控件被點(diǎn)擊:view_clicked、view_long_clicked auto.registerEvent('view_clicked', e => {log(e)});

文件系統(tǒng) - Files

一次性的文件讀寫可以直接使用files.read(), files.write(), files.append()等方便的函數(shù)

但如果需要頻繁讀寫或隨機(jī)讀寫,則使用open()函數(shù)打開一個(gè)文件對(duì)象來操作文件,并在操作完畢后調(diào)用close()函數(shù)關(guān)閉文件。

files.isFile(path)

  • path {string} 路徑
  • 返回 {boolean}

返回路徑path是否是文件。

log(files.isDir("/sdcard/文件夾/")); //返回false log(files.isDir("/sdcard/文件.txt")); //返回true

files.isDir(path)

  • path {string} 路徑
  • 返回 {boolean}

返回路徑path是否是文件夾。

log(files.isDir("/sdcard/文件夾/")); //返回true log(files.isDir("/sdcard/文件.txt")); //返回false

files.isEmptyDir(path)

  • path {string} 路徑
  • 返回 {boolean}

返回文件夾path是否為空文件夾。如果該路徑并非文件夾,則直接返回false。

files.join(parent, child)

  • parent {string} 父目錄路徑
  • child {string} 子路徑
  • 返回 {string}

連接兩個(gè)路徑并返回,例如files.join("/sdcard/", "1.txt")返回"/sdcard/1.txt"。

files.create(path)

  • path {string} 路徑
  • 返回 {boolean}

創(chuàng)建一個(gè)文件或文件夾并返回是否創(chuàng)建成功。如果文件已經(jīng)存在,則直接返回false。

files.create("/sdcard/新文件夾/");

files.createWithDirs(path)

  • path {string} 路徑
  • 返回 {boolean}

創(chuàng)建一個(gè)文件或文件夾并返回是否創(chuàng)建成功。如果文件所在文件夾不存在,則先創(chuàng)建他所在的一系列文件夾。如果文件已經(jīng)存在,則直接返回false。

files.createWithDirs("/sdcard/新文件夾/新文件夾/新文件夾/1.txt");

files.exists(path)

  • path {string} 路徑
  • 返回 {boolean}

返回在路徑path處的文件是否存在。

files.ensureDir(path)

  • path {string} 路徑

確保路徑path所在的文件夾存在。如果該路徑所在文件夾不存在,則創(chuàng)建該文件夾。

例如對(duì)于路徑"/sdcard/Download/ABC/1.txt",如果/Download/文件夾不存在,則會(huì)先創(chuàng)建Download,再創(chuàng)建ABC文件夾。

files.read(path[, encoding = “utf-8”])

  • path {string} 路徑
  • encoding {string} 字符編碼,可選,默認(rèn)為utf-8
  • 返回 {string}

讀取文本文件path的所有內(nèi)容并返回。如果文件不存在,則拋出FileNotFoundException。

log(files.read("/sdcard/1.txt"));

files.readBytes(path)

  • path {string} 路徑
  • 返回 {byte[]}

讀取文件path的所有內(nèi)容并返回一個(gè)字節(jié)數(shù)組。如果文件不存在,則拋出FileNotFoundException。

注意,該數(shù)組是Java的數(shù)組,不具有JavaScript數(shù)組的forEach, slice等函數(shù)。

一個(gè)以16進(jìn)制形式打印文件的例子如下:

var data = files.readBytes("/sdcard/1.png"); var sb = new java.lang.StringBuilder(); for(var i = 0; i < data.length; i++){sb.append(data[i].toString(16)); } log(sb.toString());

files.write(path, text[, encoding = “utf-8”])

  • path {string} 路徑
  • text {string} 要寫入的文本內(nèi)容
  • encoding {string} 字符編碼

把text寫入到文件path中。如果文件存在則覆蓋,不存在則創(chuàng)建。

var text = "文件內(nèi)容"; //寫入文件 files.write("/sdcard/1.txt", text); //用其他應(yīng)用查看文件 app.viewFile("/sdcard/1.txt");

files.writeBytes(path, bytes)

  • path {string} 路徑
  • bytes {byte[]} 字節(jié)數(shù)組,要寫入的二進(jìn)制數(shù)據(jù)

把bytes寫入到文件path中。如果文件存在則覆蓋,不存在則創(chuàng)建。

files.append(path, text[, encoding = ‘utf-8’])

  • path {string} 路徑
  • text {string} 要寫入的文本內(nèi)容
  • encoding {string} 字符編碼

把text追加到文件path的末尾。如果文件不存在則創(chuàng)建。

var text = "追加的文件內(nèi)容"; files.append("/sdcard/1.txt", text); files.append("/sdcard/1.txt", text); //用其他應(yīng)用查看文件 app.viewFile("/sdcard/1.txt");

files.appendBytes(path, text[, encoding = ‘utf-8’])

  • path {string} 路徑
  • bytes {byte[]} 字節(jié)數(shù)組,要寫入的二進(jìn)制數(shù)據(jù)

把bytes追加到文件path的末尾。如果文件不存在則創(chuàng)建。

files.copy(fromPath, toPath)

  • fromPath {string} 要復(fù)制的原文件路徑
  • toPath {string} 復(fù)制到的文件路徑
  • 返回 {boolean}

復(fù)制文件,返回是否復(fù)制成功。例如files.copy("/sdcard/1.txt", "/sdcard/Download/1.txt")。

files.move(fromPath, toPath)

  • fromPath {string} 要移動(dòng)的原文件路徑
  • toPath {string} 移動(dòng)到的文件路徑
  • 返回 {boolean}

移動(dòng)文件,返回是否移動(dòng)成功。例如files.move("/sdcard/1.txt", "/sdcard/Download/1.txt")會(huì)把1.txt文件從sd卡根目錄移動(dòng)到Download文件夾。

files.rename(path, newName)

  • path {string} 要重命名的原文件路徑
  • newName {string} 要重命名的新文件名
  • 返回 {boolean}

重命名文件,并返回是否重命名成功。例如files.rename("/sdcard/1.txt", "2.txt")。

files.renameWithoutExtension(path, newName)

  • path {string} 要重命名的原文件路徑
  • newName {string} 要重命名的新文件名
  • 返回 {boolean}

重命名文件,不包含拓展名,并返回是否重命名成功。例如files.rename("/sdcard/1.txt", "2")會(huì)把"1.txt"重命名為"2.txt"。

files.getName(path)

  • path {string} 路徑
  • 返回 {string}

返回文件的文件名。例如files.getName("/sdcard/1.txt")返回"1.txt"。

files.getNameWithoutExtension(path)

  • path {string} 路徑
  • 返回 {string}

返回不含拓展名的文件的文件名。例如files.getName("/sdcard/1.txt")返回"1"。

files.getExtension(path)

  • path {string} 路徑
  • 返回 {string}

返回文件的拓展名。例如files.getExtension("/sdcard/1.txt")返回"txt"。

files.remove(path)

  • path {string} 路徑
  • 返回 {boolean}

刪除文件或空文件夾,返回是否刪除成功。

files.removeDir(path)

  • path {string} 路徑
  • path {string} 路徑
  • 返回 {boolean}

刪除文件夾,如果文件夾不為空,則刪除該文件夾的所有內(nèi)容再刪除該文件夾,返回是否全部刪除成功。

files.getSdcardPath()

  • 返回 {string}

返回SD卡路徑。所謂SD卡,即外部存儲(chǔ)器。

files.cwd()

  • 返回 {string}

返回腳本的"當(dāng)前工作文件夾路徑"。該路徑指的是,如果腳本本身為腳本文件,則返回這個(gè)腳本文件所在目錄;否則返回null獲取其他設(shè)定路徑。

例如,對(duì)于腳本文件"/sdcard/腳本/1.js"運(yùn)行files.cwd()返回"/sdcard/腳本/"。

files.path(relativePath)

  • relativePath {string} 相對(duì)路徑
  • 返回 {string}

返回相對(duì)路徑對(duì)應(yīng)的絕對(duì)路徑。例如files.path("./1.png"),如果運(yùn)行這個(gè)語句的腳本位于文件夾"/sdcard/腳本/"中,則返回"/sdcard/腳本/1.png"。

files.listDir(path[, filter])

  • path {string} 路徑
  • filter {Function} 過濾函數(shù),可選。接收一個(gè)string參數(shù)(文件名),返回一個(gè)boolean值。

列出文件夾path下的滿足條件的文件和文件夾的名稱的數(shù)組。如果不加filter參數(shù),則返回所有文件和文件夾。

列出sdcard目錄下所有文件和文件夾為:

var arr = files.listDir("/sdcard/"); log(arr);

列出腳本目錄下所有js腳本文件為:

var dir = "/sdcard/腳本/"; var jsFiles = files.listDir(dir, function(name){return name.endsWith(".js") && files.isFile(files.join(dir, name)); }); log(jsFiles); 是否是文件 是否是文件夾 是否是空的文件夾 合并路徑 創(chuàng)建文件夾 創(chuàng)建一系列文件夾 文件是否存在 確保文件夾存在 讀取文件 讀取文件字節(jié)集 寫到文件 以字節(jié)集寫到文件 添加文本到文件末尾 添加字節(jié)集到文件末尾 復(fù)制 移動(dòng) 重命名 文件拓展名 刪除 路徑 文件列表

總結(jié)

以上是生活随笔為你收集整理的autojs的使用文档的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

黑人玩弄人妻中文在线 | 九一九色国产 | 国产超级va在线观看视频 | 国产猛烈高潮尖叫视频免费 | 中文字幕人妻丝袜二区 | 波多野结衣av一区二区全免费观看 | 免费无码肉片在线观看 | 无码乱肉视频免费大全合集 | 人人澡人人透人人爽 | 成熟女人特级毛片www免费 | 天天躁日日躁狠狠躁免费麻豆 | 国内精品久久毛片一区二区 | 免费无码的av片在线观看 | 国产精品无码mv在线观看 | 成人性做爰aaa片免费看不忠 | 国内丰满熟女出轨videos | 国产亚洲精品久久久久久大师 | 樱花草在线社区www | 亚洲精品中文字幕乱码 | 荫蒂添的好舒服视频囗交 | 欧美一区二区三区视频在线观看 | 久久国产精品二国产精品 | 国产亚洲人成a在线v网站 | 蜜桃无码一区二区三区 | 性色欲网站人妻丰满中文久久不卡 | 久久人人爽人人爽人人片av高清 | 亚洲精品午夜无码电影网 | www国产精品内射老师 | 欧美精品免费观看二区 | 久久精品人人做人人综合 | 四虎国产精品一区二区 | 久久综合九色综合欧美狠狠 | 日本高清一区免费中文视频 | 亚洲va欧美va天堂v国产综合 | 亚洲欧美日韩国产精品一区二区 | 精品国产一区av天美传媒 | 欧美日韩人成综合在线播放 | 久久久久成人精品免费播放动漫 | 国产午夜福利100集发布 | 又色又爽又黄的美女裸体网站 | 国产av无码专区亚洲awww | 久9re热视频这里只有精品 | 日韩亚洲欧美精品综合 | 国产口爆吞精在线视频 | 国产成人无码av片在线观看不卡 | 97久久国产亚洲精品超碰热 | 日本高清一区免费中文视频 | 欧美性生交xxxxx久久久 | 乱人伦人妻中文字幕无码 | 青青久在线视频免费观看 | 老熟妇仑乱视频一区二区 | 亚洲精品一区二区三区大桥未久 | 国产明星裸体无码xxxx视频 | 国产片av国语在线观看 | 97色伦图片97综合影院 | 久久精品国产精品国产精品污 | 99re在线播放 | 国产熟妇高潮叫床视频播放 | 中文字幕无码免费久久9一区9 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 国产成人无码av一区二区 | 日本一卡二卡不卡视频查询 | 国产午夜亚洲精品不卡 | 夜精品a片一区二区三区无码白浆 | 激情亚洲一区国产精品 | 国产一区二区三区日韩精品 | 少妇人妻大乳在线视频 | 精品夜夜澡人妻无码av蜜桃 | 人妻插b视频一区二区三区 | 成人无码视频免费播放 | 乱人伦人妻中文字幕无码久久网 | 熟妇人妻无乱码中文字幕 | 永久免费观看国产裸体美女 | 日日摸天天摸爽爽狠狠97 | 精品久久久无码中文字幕 | 婷婷丁香六月激情综合啪 | 亚洲色偷偷偷综合网 | 成 人 网 站国产免费观看 | 黄网在线观看免费网站 | 亚洲区小说区激情区图片区 | 性史性农村dvd毛片 | 国内精品久久久久久中文字幕 | 亚洲综合伊人久久大杳蕉 | 伊人久久大香线焦av综合影院 | 精品国产aⅴ无码一区二区 | 成熟妇人a片免费看网站 | 麻花豆传媒剧国产免费mv在线 | 麻豆果冻传媒2021精品传媒一区下载 | 中国女人内谢69xxxx | 国产内射爽爽大片视频社区在线 | 激情国产av做激情国产爱 | 国产精品毛多多水多 | 一个人免费观看的www视频 | 国产偷国产偷精品高清尤物 | 亚洲第一无码av无码专区 | 日日摸天天摸爽爽狠狠97 | 国产偷抇久久精品a片69 | 爱做久久久久久 | 亚洲国产成人av在线观看 | 欧美怡红院免费全部视频 | 亚洲综合无码久久精品综合 | 国产精品igao视频网 | 国产精品亚洲综合色区韩国 | 精品午夜福利在线观看 | 无码国模国产在线观看 | 又大又硬又黄的免费视频 | 精品aⅴ一区二区三区 | 精品水蜜桃久久久久久久 | 窝窝午夜理论片影院 | 欧美真人作爱免费视频 | 国产午夜亚洲精品不卡下载 | 色婷婷久久一区二区三区麻豆 | 高清国产亚洲精品自在久久 | 麻豆国产丝袜白领秘书在线观看 | 性生交大片免费看女人按摩摩 | 无人区乱码一区二区三区 | 无码人中文字幕 | 亚洲国产欧美国产综合一区 | 天堂亚洲2017在线观看 | 荫蒂添的好舒服视频囗交 | 国产一区二区三区四区五区加勒比 | 一本久道久久综合狠狠爱 | 乱码av麻豆丝袜熟女系列 | 一二三四社区在线中文视频 | 亚洲va中文字幕无码久久不卡 | 久久无码中文字幕免费影院蜜桃 | 日本熟妇乱子伦xxxx | 国产av人人夜夜澡人人爽麻豆 | 久久综合香蕉国产蜜臀av | 国产精品亚洲一区二区三区喷水 | 亚洲人成无码网www | 国产成人无码午夜视频在线观看 | 精品国产国产综合精品 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产综合在线观看 | 日本一本二本三区免费 | 无码av最新清无码专区吞精 | 国产精品久久久一区二区三区 | 色五月丁香五月综合五月 | 在线成人www免费观看视频 | 国产特级毛片aaaaaa高潮流水 | 丰满人妻一区二区三区免费视频 | 99精品国产综合久久久久五月天 | 久久 国产 尿 小便 嘘嘘 | 夜精品a片一区二区三区无码白浆 | 久久久精品国产sm最大网站 | 激情内射亚州一区二区三区爱妻 | 久久久国产精品无码免费专区 | 国产黄在线观看免费观看不卡 | 国内精品久久久久久中文字幕 | 无码国产乱人伦偷精品视频 | 成人性做爰aaa片免费看不忠 | 日本一卡二卡不卡视频查询 | 中文字幕无码热在线视频 | 女人色极品影院 | 亚洲人成影院在线观看 | 狠狠色噜噜狠狠狠狠7777米奇 | 女人色极品影院 | 国产亚洲日韩欧美另类第八页 | 国产人妻精品一区二区三区 | 亚洲高清偷拍一区二区三区 | 免费无码av一区二区 | 九九综合va免费看 | 久久99久久99精品中文字幕 | 中文字幕av伊人av无码av | 成人性做爰aaa片免费看不忠 | 国产69精品久久久久app下载 | 久久精品国产日本波多野结衣 | 熟妇人妻无乱码中文字幕 | 熟女少妇人妻中文字幕 | 国产乱人偷精品人妻a片 | 性欧美videos高清精品 | 久久精品中文字幕大胸 | 精品国产一区av天美传媒 | 四虎4hu永久免费 | 久久精品中文字幕大胸 | 国产午夜福利亚洲第一 | 亚洲欧美色中文字幕在线 | 亚洲色在线无码国产精品不卡 | 无码国产激情在线观看 | 无遮挡国产高潮视频免费观看 | 中国大陆精品视频xxxx | 青青草原综合久久大伊人精品 | 亚洲大尺度无码无码专区 | 美女张开腿让人桶 | 亚洲色在线无码国产精品不卡 | 西西人体www44rt大胆高清 | 国产三级精品三级男人的天堂 | 成 人 网 站国产免费观看 | 国产两女互慰高潮视频在线观看 | 成人女人看片免费视频放人 | 国产午夜手机精彩视频 | 女人被爽到呻吟gif动态图视看 | 好爽又高潮了毛片免费下载 | 蜜桃视频插满18在线观看 | 亚洲精品久久久久avwww潮水 | 欧美喷潮久久久xxxxx | 亚洲欧洲日本综合aⅴ在线 | аⅴ资源天堂资源库在线 | 精品无码一区二区三区的天堂 | 麻豆精品国产精华精华液好用吗 | 国产欧美亚洲精品a | 一本久久a久久精品亚洲 | 国产av无码专区亚洲awww | av在线亚洲欧洲日产一区二区 | 久久久无码中文字幕久... | 精品乱子伦一区二区三区 | 美女黄网站人色视频免费国产 | 亚洲小说图区综合在线 | 日韩精品无码一本二本三本色 | 欧美变态另类xxxx | 精品人妻av区 | 日本乱人伦片中文三区 | 亚洲热妇无码av在线播放 | 牲欲强的熟妇农村老妇女 | 日本高清一区免费中文视频 | 国产精品亚洲lv粉色 | 欧美日韩一区二区综合 | 亚洲色无码一区二区三区 | 天天燥日日燥 | 国产精品毛多多水多 | 欧美丰满少妇xxxx性 | 久久综合香蕉国产蜜臀av | 正在播放东北夫妻内射 | 在线看片无码永久免费视频 | 国产午夜精品一区二区三区嫩草 | 国产精品高潮呻吟av久久 | 日本大乳高潮视频在线观看 | 亚洲国产一区二区三区在线观看 | 中文字幕精品av一区二区五区 | 欧美性猛交内射兽交老熟妇 | 精品亚洲成av人在线观看 | 国产口爆吞精在线视频 | 国内精品九九久久久精品 | 中文字幕无线码免费人妻 | 色妞www精品免费视频 | 中文字幕色婷婷在线视频 | 精品国精品国产自在久国产87 | 精品亚洲成av人在线观看 | 国产麻豆精品一区二区三区v视界 | 日韩 欧美 动漫 国产 制服 | 暴力强奷在线播放无码 | 美女张开腿让人桶 | 欧美变态另类xxxx | 色婷婷久久一区二区三区麻豆 | 精品无人区无码乱码毛片国产 | 亚洲无人区一区二区三区 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 又紧又大又爽精品一区二区 | 精品国偷自产在线视频 | 亚洲成av人在线观看网址 | 18无码粉嫩小泬无套在线观看 | 狠狠色欧美亚洲狠狠色www | 成人精品一区二区三区中文字幕 | 国产口爆吞精在线视频 | 午夜理论片yy44880影院 | 日本一卡2卡3卡四卡精品网站 | 久久久久人妻一区精品色欧美 | 亚洲成a人片在线观看无码3d | 国产真实伦对白全集 | 精品国产一区av天美传媒 | 久久精品女人的天堂av | 久久久久人妻一区精品色欧美 | 免费观看黄网站 | 动漫av网站免费观看 | 人人澡人人妻人人爽人人蜜桃 | 色偷偷人人澡人人爽人人模 | 人人澡人摸人人添 | 大色综合色综合网站 | 免费国产成人高清在线观看网站 | 熟女俱乐部五十路六十路av | 国内综合精品午夜久久资源 | 无码午夜成人1000部免费视频 | 国内少妇偷人精品视频免费 | 久久综合九色综合欧美狠狠 | 国产人妻精品一区二区三区 | 久久无码人妻影院 | 国产性生交xxxxx无码 | 人妻熟女一区 | 亚洲色偷偷男人的天堂 | 久久久久久国产精品无码下载 | 最新版天堂资源中文官网 | 荫蒂被男人添的好舒服爽免费视频 | 樱花草在线播放免费中文 | 中文字幕无码免费久久9一区9 | 狠狠色丁香久久婷婷综合五月 | 麻豆果冻传媒2021精品传媒一区下载 | 亚洲国产精品一区二区第一页 | 曰韩无码二三区中文字幕 | 国产成人精品久久亚洲高清不卡 | 国产成人精品三级麻豆 | 国产精品自产拍在线观看 | 欧美老熟妇乱xxxxx | 国产高清av在线播放 | 亚洲国产精品久久久天堂 | 麻豆国产人妻欲求不满谁演的 | 午夜成人1000部免费视频 | 久久视频在线观看精品 | 漂亮人妻洗澡被公强 日日躁 | 国产成人精品优优av | 久久久久久a亚洲欧洲av冫 | 精品国偷自产在线 | 国产亚洲欧美在线专区 | 中文无码精品a∨在线观看不卡 | 熟女俱乐部五十路六十路av | 性欧美疯狂xxxxbbbb | 妺妺窝人体色www在线小说 | ass日本丰满熟妇pics | 曰韩无码二三区中文字幕 | 亚洲综合色区中文字幕 | 亚洲中文字幕成人无码 | 久热国产vs视频在线观看 | 300部国产真实乱 | 亚洲国产欧美国产综合一区 | 性做久久久久久久免费看 | 国产农村妇女高潮大叫 | 99久久久无码国产精品免费 | 狠狠cao日日穞夜夜穞av | 国产午夜无码精品免费看 | 国产一区二区三区四区五区加勒比 | 少妇邻居内射在线 | 久久午夜无码鲁丝片秋霞 | 爱做久久久久久 | 久久亚洲中文字幕无码 | 亚洲男人av香蕉爽爽爽爽 | 伊人色综合久久天天小片 | 18无码粉嫩小泬无套在线观看 | 久久天天躁狠狠躁夜夜免费观看 | 对白脏话肉麻粗话av | 天天拍夜夜添久久精品 | 久久人人爽人人爽人人片ⅴ | 欧美freesex黑人又粗又大 | 久久综合色之久久综合 | 国产精品久久久久9999小说 | 精品厕所偷拍各类美女tp嘘嘘 | 国产精品美女久久久久av爽李琼 | 欧美自拍另类欧美综合图片区 | 3d动漫精品啪啪一区二区中 | 天干天干啦夜天干天2017 | 高清国产亚洲精品自在久久 | 亚洲精品国产精品乱码视色 | 久久久国产一区二区三区 | 一本久道久久综合婷婷五月 | 内射欧美老妇wbb | 亚洲精品一区三区三区在线观看 | 亚洲精品无码国产 | 中文字幕精品av一区二区五区 | 超碰97人人射妻 | 丁香花在线影院观看在线播放 | 国产suv精品一区二区五 | 蜜桃无码一区二区三区 | 无套内射视频囯产 | 亚洲精品国产精品乱码不卡 | 性色av无码免费一区二区三区 | 亚洲精品国产精品乱码不卡 | 国产熟女一区二区三区四区五区 | 色狠狠av一区二区三区 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 国产在线aaa片一区二区99 | 少妇高潮一区二区三区99 | 人妻无码久久精品人妻 | 精品人妻av区 | 激情爆乳一区二区三区 | 久久亚洲中文字幕无码 | 国产亚洲精品久久久久久大师 | 任你躁在线精品免费 | 在线观看国产午夜福利片 | 精品国产麻豆免费人成网站 | 伊人久久婷婷五月综合97色 | 久久综合网欧美色妞网 | 国产精品igao视频网 | 日本大香伊一区二区三区 | 夜精品a片一区二区三区无码白浆 | 国产午夜精品一区二区三区嫩草 | 内射老妇bbwx0c0ck | 无码国产色欲xxxxx视频 | 成人无码视频在线观看网站 | 中文字幕人妻无码一区二区三区 | 久久精品人人做人人综合试看 | 色噜噜亚洲男人的天堂 | 欧美精品免费观看二区 | 狠狠色色综合网站 | 蜜桃av抽搐高潮一区二区 | 伊人久久大香线蕉午夜 | 天天拍夜夜添久久精品 | 无遮挡啪啪摇乳动态图 | 激情国产av做激情国产爱 | 久久成人a毛片免费观看网站 | 久久久久成人精品免费播放动漫 | 爽爽影院免费观看 | 久久综合狠狠综合久久综合88 | 少妇被粗大的猛进出69影院 | 特黄特色大片免费播放器图片 | 男女下面进入的视频免费午夜 | 亚洲中文无码av永久不收费 | 日日橹狠狠爱欧美视频 | 亚洲热妇无码av在线播放 | av无码不卡在线观看免费 | 国产熟妇另类久久久久 | 大肉大捧一进一出好爽视频 | 国内老熟妇对白xxxxhd | 中文字幕乱妇无码av在线 | 国产成人无码a区在线观看视频app | 亚洲国产欧美日韩精品一区二区三区 | 成年美女黄网站色大免费全看 | 精品成人av一区二区三区 | 亚洲精品国产精品乱码不卡 | 国产成人精品三级麻豆 | 日日麻批免费40分钟无码 | 国产综合久久久久鬼色 | 亚洲第一无码av无码专区 | 高清国产亚洲精品自在久久 | 久久99久久99精品中文字幕 | 国产偷自视频区视频 | 国产精品久久久久久亚洲影视内衣 | 小泽玛莉亚一区二区视频在线 | 亚洲第一无码av无码专区 | 国内丰满熟女出轨videos | 欧美三级a做爰在线观看 | 亚洲综合精品香蕉久久网 | 丁香啪啪综合成人亚洲 | 色婷婷综合中文久久一本 | 成人动漫在线观看 | 亚洲成a人片在线观看日本 | 日韩在线不卡免费视频一区 | 国产激情综合五月久久 | 精品一区二区三区波多野结衣 | 亚洲精品一区三区三区在线观看 | 欧美日韩在线亚洲综合国产人 | 久久久久国色av免费观看性色 | 精品国产国产综合精品 | 老头边吃奶边弄进去呻吟 | 人妻少妇精品视频专区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 无人区乱码一区二区三区 | 日本乱偷人妻中文字幕 | 18禁黄网站男男禁片免费观看 | 国产免费无码一区二区视频 | 六月丁香婷婷色狠狠久久 | 亚洲乱码中文字幕在线 | 精品国产aⅴ无码一区二区 | 日韩欧美群交p片內射中文 | 亚洲小说图区综合在线 | 亚洲日韩中文字幕在线播放 | 国产成人久久精品流白浆 | 天天爽夜夜爽夜夜爽 | 蜜桃av抽搐高潮一区二区 | 色综合久久久无码中文字幕 | 六十路熟妇乱子伦 | 午夜成人1000部免费视频 | 综合激情五月综合激情五月激情1 | 久久99精品国产麻豆 | 午夜熟女插插xx免费视频 | 一区二区传媒有限公司 | 99精品国产综合久久久久五月天 | 亚洲精品无码国产 | 麻豆国产97在线 | 欧洲 | 亚洲精品综合一区二区三区在线 | 久久精品一区二区三区四区 | 搡女人真爽免费视频大全 | 天海翼激烈高潮到腰振不止 | 永久免费观看美女裸体的网站 | 国产色在线 | 国产 | 国产成人亚洲综合无码 | 国产成人综合在线女婷五月99播放 | 18禁止看的免费污网站 | 国产两女互慰高潮视频在线观看 | 色五月丁香五月综合五月 | 欧美国产日韩久久mv | 亚洲熟悉妇女xxx妇女av | 中文字幕精品av一区二区五区 | 18禁黄网站男男禁片免费观看 | 日韩精品a片一区二区三区妖精 | 国产无套粉嫩白浆在线 | 亚洲色www成人永久网址 | 1000部夫妻午夜免费 | 欧美亚洲国产一区二区三区 | 亚洲娇小与黑人巨大交 | 国产精品亚洲а∨无码播放麻豆 | 日日碰狠狠丁香久燥 | 国产农村妇女高潮大叫 | 国产激情精品一区二区三区 | 四虎4hu永久免费 | 亚洲区欧美区综合区自拍区 | 亚洲熟妇色xxxxx亚洲 | 国产性生大片免费观看性 | 无码一区二区三区在线观看 | 大乳丰满人妻中文字幕日本 | 在线播放亚洲第一字幕 | 日日摸日日碰夜夜爽av | 欧美日本精品一区二区三区 | 国产成人无码区免费内射一片色欲 | 日本成熟视频免费视频 | 99精品久久毛片a片 | 欧美黑人乱大交 | 亚洲高清偷拍一区二区三区 | 国产麻豆精品一区二区三区v视界 | 亚洲国产欧美国产综合一区 | 国产人妻精品一区二区三区 | 精品水蜜桃久久久久久久 | 欧美野外疯狂做受xxxx高潮 | 久久精品中文字幕一区 | 欧美熟妇另类久久久久久多毛 | 欧美人妻一区二区三区 | 国产乱人伦av在线无码 | 老司机亚洲精品影院 | 日日碰狠狠丁香久燥 | 亚洲熟妇色xxxxx欧美老妇 | 野狼第一精品社区 | 99久久精品无码一区二区毛片 | 亚洲一区二区三区 | 日本又色又爽又黄的a片18禁 | 丁香花在线影院观看在线播放 | 精品一区二区不卡无码av | 鲁鲁鲁爽爽爽在线视频观看 | 蜜桃视频插满18在线观看 | 亚洲一区二区三区在线观看网站 | 亚洲一区二区三区香蕉 | 99久久婷婷国产综合精品青草免费 | 国产色xx群视频射精 | 内射巨臀欧美在线视频 | 国产精品第一区揄拍无码 | 国产特级毛片aaaaaaa高清 | 午夜嘿嘿嘿影院 | 亚洲日韩av一区二区三区四区 | 亚拍精品一区二区三区探花 | 狠狠亚洲超碰狼人久久 | 国产超级va在线观看视频 | 久久久久亚洲精品男人的天堂 | 国产精品高潮呻吟av久久 | 精品久久久久香蕉网 | 中文无码伦av中文字幕 | 国产高清av在线播放 | 日韩精品无码一本二本三本色 | 亚洲男人av天堂午夜在 | 水蜜桃色314在线观看 | а天堂中文在线官网 | 久久综合给合久久狠狠狠97色 | 日本熟妇乱子伦xxxx | 蜜桃视频韩日免费播放 | 中文字幕人成乱码熟女app | 无码播放一区二区三区 | 国产在线一区二区三区四区五区 | 亚洲精品鲁一鲁一区二区三区 | 国产sm调教视频在线观看 | 精品熟女少妇av免费观看 | 丰满人妻被黑人猛烈进入 | 成人无码影片精品久久久 | 久久aⅴ免费观看 | 中文字幕中文有码在线 | 久久天天躁狠狠躁夜夜免费观看 | 亚洲欧洲日本无在线码 | 樱花草在线社区www | 99精品久久毛片a片 | 婷婷色婷婷开心五月四房播播 | 国产亚洲欧美日韩亚洲中文色 | 色狠狠av一区二区三区 | 麻豆成人精品国产免费 | 日韩欧美群交p片內射中文 | 日韩av无码一区二区三区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产亚洲精品久久久闺蜜 | 欧美日韩精品 | 国产三级久久久精品麻豆三级 | 超碰97人人射妻 | 精品国产青草久久久久福利 | 欧洲vodafone精品性 | 国产97色在线 | 免 | 女人高潮内射99精品 | 亚洲成av人片在线观看无码不卡 | 日韩精品无码免费一区二区三区 | 亚洲欧洲日本无在线码 | 日本高清一区免费中文视频 | 国产农村妇女高潮大叫 | 成年美女黄网站色大免费全看 | 色一情一乱一伦一区二区三欧美 | a在线亚洲男人的天堂 | 精品国产麻豆免费人成网站 | 欧美高清在线精品一区 | 蜜桃视频韩日免费播放 | 亚洲中文字幕va福利 | 国产内射爽爽大片视频社区在线 | 国产乱人伦偷精品视频 | 日韩精品无码一区二区中文字幕 | 双乳奶水饱满少妇呻吟 | 中文字幕无码av激情不卡 | 国产精品美女久久久久av爽李琼 | 午夜无码区在线观看 | 夜精品a片一区二区三区无码白浆 | 精品无码成人片一区二区98 | 精品久久久久久亚洲精品 | 国产无遮挡吃胸膜奶免费看 | 少妇人妻偷人精品无码视频 | 久久五月精品中文字幕 | 中文字幕精品av一区二区五区 | 熟妇人妻激情偷爽文 | 99久久精品午夜一区二区 | 国产精品理论片在线观看 | 国产成人无码区免费内射一片色欲 | 国产肉丝袜在线观看 | 精品国产精品久久一区免费式 | 伊人久久婷婷五月综合97色 | 97精品人妻一区二区三区香蕉 | 国产特级毛片aaaaaaa高清 | 中文字幕亚洲情99在线 | 波多野结衣高清一区二区三区 | 免费观看又污又黄的网站 | 亚洲欧美精品伊人久久 | 国产又粗又硬又大爽黄老大爷视 | 成人性做爰aaa片免费看不忠 | 亚洲人成网站在线播放942 | 大屁股大乳丰满人妻 | 久久久久国色av免费观看性色 | 免费中文字幕日韩欧美 | 伊人久久大香线焦av综合影院 | 丰满少妇高潮惨叫视频 | 无码国产色欲xxxxx视频 | 2020最新国产自产精品 | 爱做久久久久久 | 乱码av麻豆丝袜熟女系列 | 国产精品丝袜黑色高跟鞋 | 久久综合给久久狠狠97色 | 少女韩国电视剧在线观看完整 | 久久精品女人的天堂av | 东京无码熟妇人妻av在线网址 | 国产精品美女久久久 | 东京热一精品无码av | 国产精品亚洲一区二区三区喷水 | 欧美午夜特黄aaaaaa片 | 欧美刺激性大交 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 成人一区二区免费视频 | 国产免费久久精品国产传媒 | aa片在线观看视频在线播放 | 亚洲の无码国产の无码影院 | 国产精品亚洲综合色区韩国 | 乱中年女人伦av三区 | 内射巨臀欧美在线视频 | 4hu四虎永久在线观看 | www国产亚洲精品久久网站 | 欧美日韩久久久精品a片 | 国产两女互慰高潮视频在线观看 | 在线a亚洲视频播放在线观看 | 女人被爽到呻吟gif动态图视看 | 999久久久国产精品消防器材 | 4hu四虎永久在线观看 | а√天堂www在线天堂小说 | 亚洲狠狠婷婷综合久久 | 久久综合九色综合欧美狠狠 | 国产精品内射视频免费 | 国产亚洲精品久久久久久国模美 | 久久久国产一区二区三区 | 国内精品人妻无码久久久影院 | 亚洲の无码国产の无码影院 | 国产精品亚洲五月天高清 | 国产激情无码一区二区app | 4hu四虎永久在线观看 | 丰满少妇高潮惨叫视频 | 老司机亚洲精品影院 | 日韩少妇内射免费播放 | 久久精品人人做人人综合 | 日产精品高潮呻吟av久久 | 好屌草这里只有精品 | 国产美女精品一区二区三区 | 风流少妇按摩来高潮 | 欧美35页视频在线观看 | 2019nv天堂香蕉在线观看 | 亚洲s码欧洲m码国产av | 无码精品国产va在线观看dvd | 国产成人无码一二三区视频 | 人人澡人人妻人人爽人人蜜桃 | 国产精品igao视频网 | 亚洲综合伊人久久大杳蕉 | 精品水蜜桃久久久久久久 | 狂野欧美激情性xxxx | 亚洲欧美日韩成人高清在线一区 | 国产成人人人97超碰超爽8 | 成人片黄网站色大片免费观看 | 日韩av激情在线观看 | av香港经典三级级 在线 | 妺妺窝人体色www婷婷 | 免费无码肉片在线观看 | 国产明星裸体无码xxxx视频 | 狠狠综合久久久久综合网 | 无码人妻出轨黑人中文字幕 | 国产亚洲精品精品国产亚洲综合 | 精品久久久久久人妻无码中文字幕 | 成人精品天堂一区二区三区 | 成人av无码一区二区三区 | 久久精品国产日本波多野结衣 | 无码一区二区三区在线 | 中文字幕日产无线码一区 | 久久熟妇人妻午夜寂寞影院 | 人人爽人人爽人人片av亚洲 | 国产日产欧产精品精品app | 国产成人精品视频ⅴa片软件竹菊 | 久久亚洲a片com人成 | 亚洲一区二区三区无码久久 | 毛片内射-百度 | 久久久久99精品国产片 | 久久国产精品二国产精品 | 又大又紧又粉嫩18p少妇 | 国产激情无码一区二区 | 天堂一区人妻无码 | 亚洲精品无码人妻无码 | 熟妇女人妻丰满少妇中文字幕 | 天干天干啦夜天干天2017 | 国产在线精品一区二区高清不卡 | 黑人大群体交免费视频 | 一本久久伊人热热精品中文字幕 | 丰满人妻精品国产99aⅴ | 国产疯狂伦交大片 | 国产成人无码一二三区视频 | 欧美肥老太牲交大战 | 在线播放亚洲第一字幕 | 无码帝国www无码专区色综合 | 偷窥日本少妇撒尿chinese | 国产精品手机免费 | 丝袜人妻一区二区三区 | 色婷婷欧美在线播放内射 | 玩弄中年熟妇正在播放 | 日本免费一区二区三区最新 | 国产精品18久久久久久麻辣 | 亚洲精品一区二区三区四区五区 | 亚洲中文字幕无码中字 | 国产九九九九九九九a片 | 午夜精品久久久内射近拍高清 | 丝袜 中出 制服 人妻 美腿 | 国产亚洲视频中文字幕97精品 | 麻花豆传媒剧国产免费mv在线 | 天堂一区人妻无码 | 自拍偷自拍亚洲精品10p | 四虎影视成人永久免费观看视频 | 日本高清一区免费中文视频 | 99久久99久久免费精品蜜桃 | 精品成在人线av无码免费看 | 精品久久8x国产免费观看 | 图片小说视频一区二区 | 午夜丰满少妇性开放视频 | 久久久av男人的天堂 | 国产亚洲精品久久久久久国模美 | 蜜桃视频韩日免费播放 | 精品日本一区二区三区在线观看 | 亚洲一区二区三区无码久久 | 国产人妻人伦精品 | 国产成人无码a区在线观看视频app | 久精品国产欧美亚洲色aⅴ大片 | 国产69精品久久久久app下载 | 欧美老妇交乱视频在线观看 | 精品午夜福利在线观看 | 免费播放一区二区三区 | 亚洲一区二区三区在线观看网站 | 国产激情一区二区三区 | 亚洲中文字幕在线无码一区二区 | 高清国产亚洲精品自在久久 | 日韩亚洲欧美中文高清在线 | 亚洲va欧美va天堂v国产综合 | 久久久久久a亚洲欧洲av冫 | 中文字幕日韩精品一区二区三区 | 999久久久国产精品消防器材 | 无码人妻av免费一区二区三区 | 国产成人无码av片在线观看不卡 | 久久久中文久久久无码 | 老太婆性杂交欧美肥老太 | 久久国产精品二国产精品 | 亚洲国产精品无码一区二区三区 | 内射爽无广熟女亚洲 | 亚洲国产精品美女久久久久 | 国产两女互慰高潮视频在线观看 | 国内少妇偷人精品视频 | 欧美性猛交内射兽交老熟妇 | 999久久久国产精品消防器材 | 东京一本一道一二三区 | 久久久久免费看成人影片 | 狠狠色色综合网站 | 亚洲狠狠婷婷综合久久 | 天堂在线观看www | 国产 精品 自在自线 | 人人妻在人人 | 红桃av一区二区三区在线无码av | 麻豆蜜桃av蜜臀av色欲av | 国产成人无码区免费内射一片色欲 | 少妇人妻大乳在线视频 | 久久99精品国产.久久久久 | 小泽玛莉亚一区二区视频在线 | 国产va免费精品观看 | 日韩av无码中文无码电影 | 精品无码国产一区二区三区av | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 国产av无码专区亚洲a∨毛片 | 国产做国产爱免费视频 | 99er热精品视频 | 97精品国产97久久久久久免费 | 亚洲色www成人永久网址 | 日日天日日夜日日摸 | 久久久久久av无码免费看大片 | 奇米影视7777久久精品人人爽 | 宝宝好涨水快流出来免费视频 | 波多野结衣av一区二区全免费观看 | 欧美日韩人成综合在线播放 | 免费网站看v片在线18禁无码 | 国产精品丝袜黑色高跟鞋 | 亚洲成a人片在线观看日本 | 中文字幕无码热在线视频 | 四虎国产精品一区二区 | 欧美性生交xxxxx久久久 | 国产又爽又猛又粗的视频a片 | 国产亚洲精品精品国产亚洲综合 | 人妻中文无码久热丝袜 | 国产成人无码区免费内射一片色欲 | 夫妻免费无码v看片 | av香港经典三级级 在线 | 日产国产精品亚洲系列 | 久精品国产欧美亚洲色aⅴ大片 | 亚洲色偷偷男人的天堂 | 国产在线精品一区二区高清不卡 | 漂亮人妻洗澡被公强 日日躁 | 免费人成网站视频在线观看 | 狠狠综合久久久久综合网 | 捆绑白丝粉色jk震动捧喷白浆 | 国产av久久久久精东av | 成熟女人特级毛片www免费 | 精品国产国产综合精品 | 国产成人无码av在线影院 | 奇米影视7777久久精品 | 四虎永久在线精品免费网址 | aⅴ在线视频男人的天堂 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲日本一区二区三区在线 | 欧美日本精品一区二区三区 | 初尝人妻少妇中文字幕 | 好屌草这里只有精品 | 一本色道久久综合狠狠躁 | 亚洲国产欧美在线成人 | 国产成人亚洲综合无码 | 色婷婷香蕉在线一区二区 | 97久久国产亚洲精品超碰热 | 无码一区二区三区在线观看 | 久久国产36精品色熟妇 | 日本欧美一区二区三区乱码 | 午夜福利一区二区三区在线观看 | 国产熟女一区二区三区四区五区 | 精品国精品国产自在久国产87 | 国内综合精品午夜久久资源 | 亚洲精品综合五月久久小说 | 人人爽人人澡人人人妻 | 在线欧美精品一区二区三区 | 亚拍精品一区二区三区探花 | 国产 精品 自在自线 | 精品偷拍一区二区三区在线看 | 久久久久久亚洲精品a片成人 | 丰腴饱满的极品熟妇 | 亚洲gv猛男gv无码男同 | 亚洲成av人片在线观看无码不卡 | 丰满少妇弄高潮了www | 少妇厨房愉情理9仑片视频 | 国产精品久免费的黄网站 | 人人妻人人澡人人爽人人精品 | 亚洲国产一区二区三区在线观看 | 色综合久久88色综合天天 | 亚洲小说春色综合另类 | 扒开双腿疯狂进出爽爽爽视频 | 色综合久久久无码网中文 | 黑人大群体交免费视频 | 中文字幕乱妇无码av在线 | 国产av剧情md精品麻豆 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲爆乳无码专区 | 亚洲欧美精品伊人久久 | 国产麻豆精品一区二区三区v视界 | 黑人玩弄人妻中文在线 | 国产熟女一区二区三区四区五区 | 国产亚洲欧美日韩亚洲中文色 | 一本久道久久综合狠狠爱 | 国产偷国产偷精品高清尤物 | 成年美女黄网站色大免费全看 | 欧美三级不卡在线观看 | 熟妇激情内射com | 少妇久久久久久人妻无码 | 成人免费无码大片a毛片 | 国产欧美熟妇另类久久久 | 国产特级毛片aaaaaaa高清 | 人妻夜夜爽天天爽三区 | 国产人妻精品一区二区三区不卡 | 99久久精品日本一区二区免费 | 亚洲成a人一区二区三区 | 夜精品a片一区二区三区无码白浆 | 欧美人与牲动交xxxx | 亚洲国产精品毛片av不卡在线 | 亚洲综合无码久久精品综合 | 国产乡下妇女做爰 | 欧美亚洲国产一区二区三区 | 亚洲成熟女人毛毛耸耸多 | 久久久www成人免费毛片 | 色偷偷人人澡人人爽人人模 | √8天堂资源地址中文在线 | 国产精品-区区久久久狼 | 精品国产福利一区二区 | 国产精品久久久久久久影院 | 激情国产av做激情国产爱 | 国精品人妻无码一区二区三区蜜柚 | 麻豆av传媒蜜桃天美传媒 | 免费国产黄网站在线观看 | 亚洲一区二区三区在线观看网站 | 久热国产vs视频在线观看 | 无码人妻精品一区二区三区不卡 | 日日摸日日碰夜夜爽av | 久久久久亚洲精品中文字幕 | 亚欧洲精品在线视频免费观看 | 国产疯狂伦交大片 | 丰满少妇熟乱xxxxx视频 | 日日碰狠狠丁香久燥 | 好男人社区资源 | 亚洲欧美色中文字幕在线 | 女人被爽到呻吟gif动态图视看 | 伊人久久大香线蕉亚洲 | 国产精品无码一区二区三区不卡 | 日日橹狠狠爱欧美视频 | 成人动漫在线观看 | 亚洲欧美日韩国产精品一区二区 | 精品久久综合1区2区3区激情 | 国产情侣作爱视频免费观看 | 午夜福利一区二区三区在线观看 | 日本免费一区二区三区最新 | 人人澡人人妻人人爽人人蜜桃 | 亚洲综合精品香蕉久久网 | 漂亮人妻洗澡被公强 日日躁 | 欧美熟妇另类久久久久久不卡 | 狠狠噜狠狠狠狠丁香五月 | 亚洲 另类 在线 欧美 制服 | 国产激情综合五月久久 | 任你躁国产自任一区二区三区 | 一本久久伊人热热精品中文字幕 | 国产黑色丝袜在线播放 | 88国产精品欧美一区二区三区 | 亚洲精品国产第一综合99久久 | 全球成人中文在线 | 青青草原综合久久大伊人精品 | 中文字幕 人妻熟女 | 鲁鲁鲁爽爽爽在线视频观看 | 日日麻批免费40分钟无码 | 夜精品a片一区二区三区无码白浆 | 乌克兰少妇xxxx做受 | 欧美日韩亚洲国产精品 | 精品无码av一区二区三区 | 亚洲成色在线综合网站 | 日韩精品无码一本二本三本色 | 国产精品美女久久久网av | 亚洲欧美色中文字幕在线 | 日韩人妻少妇一区二区三区 | 国产人妻久久精品二区三区老狼 | 欧美日本精品一区二区三区 | 久久精品成人欧美大片 | 任你躁国产自任一区二区三区 | 午夜精品一区二区三区在线观看 | 欧美性生交xxxxx久久久 | 呦交小u女精品视频 | 久久久中文字幕日本无吗 | 色老头在线一区二区三区 | 中文久久乱码一区二区 | 中文久久乱码一区二区 | aⅴ亚洲 日韩 色 图网站 播放 | 7777奇米四色成人眼影 | 久久99国产综合精品 | 日日干夜夜干 | 亚洲 激情 小说 另类 欧美 | 强奷人妻日本中文字幕 | 国产精品高潮呻吟av久久 | 好爽又高潮了毛片免费下载 | 最新国产乱人伦偷精品免费网站 | 国产精品无码mv在线观看 | 在线 国产 欧美 亚洲 天堂 | 欧美精品免费观看二区 | 精品 日韩 国产 欧美 视频 | 精品偷自拍另类在线观看 | 国产sm调教视频在线观看 | 国内精品久久久久久中文字幕 | 台湾无码一区二区 | 一区二区三区乱码在线 | 欧洲 | 国产香蕉尹人综合在线观看 | 偷窥日本少妇撒尿chinese | 一本加勒比波多野结衣 | 一本色道婷婷久久欧美 | 国产成人久久精品流白浆 | 日本在线高清不卡免费播放 | 捆绑白丝粉色jk震动捧喷白浆 | 免费网站看v片在线18禁无码 | 欧美怡红院免费全部视频 | 精品国产乱码久久久久乱码 | 日本大香伊一区二区三区 | 久久精品丝袜高跟鞋 | 国产精品香蕉在线观看 | 激情人妻另类人妻伦 | 国内精品九九久久久精品 | 午夜福利试看120秒体验区 | 国产特级毛片aaaaaa高潮流水 | 日日摸日日碰夜夜爽av | 国产精品亚洲专区无码不卡 | 久久久亚洲欧洲日产国码αv | 狂野欧美性猛交免费视频 | 男人和女人高潮免费网站 | 精品偷拍一区二区三区在线看 | 久久99精品久久久久婷婷 | 久久久精品国产sm最大网站 | 丰满人妻一区二区三区免费视频 | 青草视频在线播放 | 99精品国产综合久久久久五月天 | 亚洲精品无码人妻无码 | 亚洲国产精品久久人人爱 | 一本久道久久综合狠狠爱 | 亚洲国产日韩a在线播放 | 黑人巨大精品欧美一区二区 | 无码av最新清无码专区吞精 | 欧美日本免费一区二区三区 | 国产精品无码一区二区三区不卡 | 久久综合激激的五月天 | 国产精品视频免费播放 | 久久精品中文闷骚内射 | 国产亚洲精品久久久闺蜜 | 欧美日韩亚洲国产精品 | 国产精品va在线观看无码 | 麻豆av传媒蜜桃天美传媒 | 国产免费久久久久久无码 | 4hu四虎永久在线观看 | av香港经典三级级 在线 | 精品久久久久久人妻无码中文字幕 | 免费观看又污又黄的网站 | 久久伊人色av天堂九九小黄鸭 | 久久久中文字幕日本无吗 | 天天摸天天透天天添 | 东北女人啪啪对白 | 中文字幕av无码一区二区三区电影 | 国产精品欧美成人 | 国产精品美女久久久网av | 无码福利日韩神码福利片 | 无码毛片视频一区二区本码 | 欧美猛少妇色xxxxx | 久久午夜夜伦鲁鲁片无码免费 | 小泽玛莉亚一区二区视频在线 | 成年美女黄网站色大免费全看 | 欧美日韩在线亚洲综合国产人 | 扒开双腿疯狂进出爽爽爽视频 | 色综合久久88色综合天天 | 无码成人精品区在线观看 | 国产成人无码a区在线观看视频app | 久久久亚洲欧洲日产国码αv | 国产成人综合在线女婷五月99播放 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 中文字幕无码免费久久9一区9 | 中文字幕无码乱人伦 | 欧美 丝袜 自拍 制服 另类 | 国产成人一区二区三区别 | 国产无遮挡又黄又爽又色 | 成人性做爰aaa片免费看 | 天堂а√在线地址中文在线 | 成人试看120秒体验区 | 无码av免费一区二区三区试看 | 精品久久综合1区2区3区激情 | 国产精品欧美成人 | 久久精品国产一区二区三区肥胖 | 亚洲欧洲日本无在线码 | 亚洲一区二区三区偷拍女厕 | 99久久人妻精品免费二区 | 国产97色在线 | 免 | 日本欧美一区二区三区乱码 | 麻豆国产丝袜白领秘书在线观看 | 午夜精品一区二区三区的区别 | 男女下面进入的视频免费午夜 | 少妇高潮一区二区三区99 | 国产精品.xx视频.xxtv | 国产免费无码一区二区视频 | 99久久精品无码一区二区毛片 | 天天综合网天天综合色 | 欧美人与牲动交xxxx | 中文字幕无码日韩欧毛 | 欧美阿v高清资源不卡在线播放 | 色五月五月丁香亚洲综合网 | 日产精品高潮呻吟av久久 | 精品日本一区二区三区在线观看 | 国产人成高清在线视频99最全资源 | 国产精品国产自线拍免费软件 | 麻豆国产丝袜白领秘书在线观看 | 性欧美疯狂xxxxbbbb | 久久精品国产大片免费观看 | 久久无码专区国产精品s | 国产在热线精品视频 | 欧美人与禽zoz0性伦交 | 国产精品人妻一区二区三区四 | 亲嘴扒胸摸屁股激烈网站 | 亚洲 另类 在线 欧美 制服 | 亚洲第一网站男人都懂 | 欧美精品免费观看二区 | 无码精品国产va在线观看dvd | 丝袜美腿亚洲一区二区 | 国产亚洲精品久久久久久国模美 | 色偷偷人人澡人人爽人人模 | 成人毛片一区二区 | 天天爽夜夜爽夜夜爽 | 色妞www精品免费视频 | 亚洲人成人无码网www国产 | 日本免费一区二区三区最新 | 97精品人妻一区二区三区香蕉 | 国产精品内射视频免费 | 国产电影无码午夜在线播放 | 在线 国产 欧美 亚洲 天堂 | 天天拍夜夜添久久精品大 | 樱花草在线播放免费中文 | 久久久精品欧美一区二区免费 | 伊人久久大香线焦av综合影院 | 色一情一乱一伦 | 久久午夜无码鲁丝片 | 国产精品无码一区二区三区不卡 | 狠狠噜狠狠狠狠丁香五月 | 久久午夜无码鲁丝片 | 日日摸天天摸爽爽狠狠97 | 久久久成人毛片无码 | 国产精品亚洲专区无码不卡 | 国产人妻精品一区二区三区 | 在线亚洲高清揄拍自拍一品区 | 人人爽人人澡人人高潮 | 秋霞特色aa大片 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国产疯狂伦交大片 | 国产日产欧产精品精品app | 国产黄在线观看免费观看不卡 | 国产精品亚洲综合色区韩国 | 亚洲日本va中文字幕 | 国产免费观看黄av片 | 麻豆国产人妻欲求不满 | 99久久婷婷国产综合精品青草免费 | 国产精品永久免费视频 | 无码人妻出轨黑人中文字幕 | 少妇人妻av毛片在线看 | 天天拍夜夜添久久精品大 | 亚洲va欧美va天堂v国产综合 | a在线亚洲男人的天堂 | 牛和人交xxxx欧美 | 日本一卡二卡不卡视频查询 | 精品人人妻人人澡人人爽人人 | 蜜桃视频插满18在线观看 | 人人妻人人藻人人爽欧美一区 | 色妞www精品免费视频 | 性欧美videos高清精品 | 黄网在线观看免费网站 | 扒开双腿疯狂进出爽爽爽视频 | 99精品视频在线观看免费 | 精品 日韩 国产 欧美 视频 | 久9re热视频这里只有精品 | 国产黑色丝袜在线播放 | 女人被爽到呻吟gif动态图视看 | 性色欲情网站iwww九文堂 | 欧美日本精品一区二区三区 | 女人高潮内射99精品 | 精品成人av一区二区三区 | 狠狠综合久久久久综合网 | 人人超人人超碰超国产 | 国产三级精品三级男人的天堂 | 激情国产av做激情国产爱 | 亚洲 激情 小说 另类 欧美 | 国产黑色丝袜在线播放 | 人人妻人人澡人人爽人人精品 | 国产精品久久久一区二区三区 | 欧美成人高清在线播放 | 性开放的女人aaa片 | 亚洲综合无码久久精品综合 | 欧洲极品少妇 | 最近的中文字幕在线看视频 | 偷窥日本少妇撒尿chinese | 国产av久久久久精东av | 亚洲 激情 小说 另类 欧美 | 久久精品丝袜高跟鞋 | 麻豆果冻传媒2021精品传媒一区下载 | 亚洲精品无码人妻无码 | 精品国产一区二区三区四区在线看 | 在教室伦流澡到高潮hnp视频 | 欧美日本精品一区二区三区 | 中文字幕乱码中文乱码51精品 | 国产无遮挡又黄又爽免费视频 | 国产精品无码一区二区桃花视频 | 日本大香伊一区二区三区 | 久久久久久av无码免费看大片 | 色一情一乱一伦一视频免费看 | ass日本丰满熟妇pics | 久久99精品久久久久婷婷 | a片免费视频在线观看 | 国产精品无码成人午夜电影 | 国产精品亚洲一区二区三区喷水 | 中文字幕亚洲情99在线 | 国产suv精品一区二区五 | 丰满妇女强制高潮18xxxx | 成熟妇人a片免费看网站 | 国产另类ts人妖一区二区 | 欧美国产日韩久久mv | 午夜精品久久久久久久久 | 精品久久8x国产免费观看 | 日韩无套无码精品 | 无遮无挡爽爽免费视频 | 99久久人妻精品免费二区 | 国产香蕉尹人视频在线 | 亚洲中文字幕在线观看 | 中文字幕色婷婷在线视频 | 国产激情艳情在线看视频 | 强伦人妻一区二区三区视频18 | 国产精品18久久久久久麻辣 | 国产精品-区区久久久狼 | 黑人粗大猛烈进出高潮视频 | 澳门永久av免费网站 | 色综合天天综合狠狠爱 | 内射巨臀欧美在线视频 | 国产麻豆精品精东影业av网站 | 国产精品久久国产精品99 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产精品福利视频导航 | 亚洲中文字幕无码中字 | 人妻熟女一区 | 久久99热只有频精品8 | 亚洲阿v天堂在线 | 香蕉久久久久久av成人 | 日本va欧美va欧美va精品 | 亚洲阿v天堂在线 | 人人妻人人澡人人爽人人精品浪潮 | 波多野结衣高清一区二区三区 | 中文字幕 亚洲精品 第1页 | 日本一卡2卡3卡四卡精品网站 | 强伦人妻一区二区三区视频18 | 免费乱码人妻系列无码专区 | 色综合久久久久综合一本到桃花网 | 麻豆果冻传媒2021精品传媒一区下载 | 日本丰满熟妇videos | 国产在线无码精品电影网 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 久久国产精品偷任你爽任你 | 免费看少妇作爱视频 | 2019午夜福利不卡片在线 | 国产精品va在线观看无码 | 在线精品国产一区二区三区 | 国产欧美亚洲精品a | 亚洲欧美国产精品久久 | 天天躁日日躁狠狠躁免费麻豆 | 午夜不卡av免费 一本久久a久久精品vr综合 | 亚洲色偷偷偷综合网 | 成人无码精品1区2区3区免费看 | 无遮挡啪啪摇乳动态图 | 成人欧美一区二区三区黑人 | 亚洲欧美日韩成人高清在线一区 | 兔费看少妇性l交大片免费 | 亚洲大尺度无码无码专区 | 色五月五月丁香亚洲综合网 | 国产精品人妻一区二区三区四 | 大地资源网第二页免费观看 | 欧美高清在线精品一区 | 中文字幕无码av波多野吉衣 | 97精品人妻一区二区三区香蕉 | 日本乱偷人妻中文字幕 | 高中生自慰www网站 | 狂野欧美激情性xxxx | 无码av免费一区二区三区试看 | 无人区乱码一区二区三区 | 人人妻人人藻人人爽欧美一区 | 国内丰满熟女出轨videos | 中文字幕+乱码+中文字幕一区 | 亚洲国产精品久久久天堂 | 欧美喷潮久久久xxxxx | 曰韩少妇内射免费播放 | 好屌草这里只有精品 | 1000部夫妻午夜免费 | 成 人 网 站国产免费观看 | 无码av岛国片在线播放 | 日欧一片内射va在线影院 | 自拍偷自拍亚洲精品被多人伦好爽 | 骚片av蜜桃精品一区 | 四虎国产精品一区二区 | 四虎国产精品免费久久 | av在线亚洲欧洲日产一区二区 | a在线亚洲男人的天堂 | 丝袜美腿亚洲一区二区 | 亚洲国产成人a精品不卡在线 | 色婷婷综合中文久久一本 | 国产精品沙发午睡系列 | 色婷婷综合激情综在线播放 | 国产人成高清在线视频99最全资源 | 国内揄拍国内精品少妇国语 | 久久久久久av无码免费看大片 | 久久成人a毛片免费观看网站 | 亚洲欧美精品aaaaaa片 | 无遮挡国产高潮视频免费观看 | 中文字幕 人妻熟女 | 久久久久成人精品免费播放动漫 | 欧美黑人性暴力猛交喷水 | 国产网红无码精品视频 | 成人欧美一区二区三区黑人免费 | 亚洲精品无码国产 | 一本久久a久久精品亚洲 | 一本色道婷婷久久欧美 | 久久婷婷五月综合色国产香蕉 | 亚洲色偷偷男人的天堂 | 欧美阿v高清资源不卡在线播放 | 色婷婷av一区二区三区之红樱桃 | 国产午夜无码精品免费看 | 丝袜足控一区二区三区 | 成人无码精品1区2区3区免费看 | 久久精品国产99久久6动漫 | 国产色视频一区二区三区 | 国产suv精品一区二区五 | 高清无码午夜福利视频 | 国产精品资源一区二区 | 无码国内精品人妻少妇 | 丰满人妻被黑人猛烈进入 | 国产精品久久久久久亚洲毛片 | 国产成人无码一二三区视频 | 亚洲gv猛男gv无码男同 | 小泽玛莉亚一区二区视频在线 | 国产精品国产自线拍免费软件 | 欧美老妇交乱视频在线观看 | 中文字幕无码人妻少妇免费 | 国产激情精品一区二区三区 | 日本va欧美va欧美va精品 | 欧美怡红院免费全部视频 | 男女爱爱好爽视频免费看 | 黑人粗大猛烈进出高潮视频 | 日本一区二区三区免费播放 | 亚洲人亚洲人成电影网站色 | 久久久久成人精品免费播放动漫 | 波多野结衣av一区二区全免费观看 | 欧美兽交xxxx×视频 | 久9re热视频这里只有精品 | 亚洲日韩中文字幕在线播放 | 欧美肥老太牲交大战 | 四十如虎的丰满熟妇啪啪 | 国产亚洲精品久久久ai换 | 男女下面进入的视频免费午夜 | 国产成人一区二区三区在线观看 | 一本久久伊人热热精品中文字幕 | 黑人玩弄人妻中文在线 | 国产成人无码一二三区视频 | 亚洲精品一区二区三区四区五区 | 久久zyz资源站无码中文动漫 | 精品国产一区二区三区四区 | 网友自拍区视频精品 | 国产亚洲人成a在线v网站 | 麻豆国产97在线 | 欧洲 | 中文字幕无码av激情不卡 | 玩弄人妻少妇500系列视频 | 内射白嫩少妇超碰 | 成年美女黄网站色大免费视频 | 一本久道久久综合狠狠爱 | 免费观看的无遮挡av | 日本一区二区三区免费播放 | 亚洲精品综合一区二区三区在线 | 国产口爆吞精在线视频 | 日产国产精品亚洲系列 | yw尤物av无码国产在线观看 | 在线精品亚洲一区二区 | 伊人久久大香线蕉av一区二区 | 麻豆国产丝袜白领秘书在线观看 | 国产精品久久国产三级国 | 国产精品无套呻吟在线 | 久久 国产 尿 小便 嘘嘘 | 小鲜肉自慰网站xnxx | 中文字幕无码日韩专区 | 国产精品久久久久久久9999 | 激情综合激情五月俺也去 | 欧美日韩在线亚洲综合国产人 | 国产内射老熟女aaaa | 妺妺窝人体色www婷婷 | 国产三级精品三级男人的天堂 | 2020最新国产自产精品 | 亚洲色欲色欲欲www在线 | 妺妺窝人体色www婷婷 | 日本一区二区更新不卡 | 国产亚洲精品精品国产亚洲综合 | 纯爱无遮挡h肉动漫在线播放 | 精品国产一区二区三区四区 | 亚洲熟熟妇xxxx | 18禁黄网站男男禁片免费观看 | 好屌草这里只有精品 | 国产熟女一区二区三区四区五区 | 国产精品毛多多水多 | 熟妇人妻激情偷爽文 | 亚洲日韩av片在线观看 | 无码一区二区三区在线 | 无码午夜成人1000部免费视频 | 97人妻精品一区二区三区 | 最近免费中文字幕中文高清百度 | 欧美熟妇另类久久久久久不卡 | 国产成人无码专区 | 亚洲va中文字幕无码久久不卡 | 久久综合给合久久狠狠狠97色 | 精品少妇爆乳无码av无码专区 | 精品一区二区三区无码免费视频 | 台湾无码一区二区 | 久久www免费人成人片 | 色一情一乱一伦一视频免费看 | 人妻插b视频一区二区三区 | 自拍偷自拍亚洲精品10p | 老熟妇乱子伦牲交视频 | 国产人妻精品午夜福利免费 | 午夜精品久久久久久久久 | 成年女人永久免费看片 | 性做久久久久久久久 | 国产乱人无码伦av在线a | 日日鲁鲁鲁夜夜爽爽狠狠 | 中文字幕无码人妻少妇免费 | 亚洲中文字幕无码中文字在线 | 激情国产av做激情国产爱 | 中国女人内谢69xxxx | 国精品人妻无码一区二区三区蜜柚 | 成在人线av无码免观看麻豆 | 亚洲成av人片在线观看无码不卡 | 欧美国产日韩久久mv | 亚洲精品无码国产 | 亚洲の无码国产の无码影院 | 中文无码成人免费视频在线观看 | 日本爽爽爽爽爽爽在线观看免 | 曰本女人与公拘交酡免费视频 | 成人欧美一区二区三区 | 欧美 亚洲 国产 另类 | 免费中文字幕日韩欧美 | 色婷婷久久一区二区三区麻豆 | 超碰97人人射妻 | 亲嘴扒胸摸屁股激烈网站 | 国产精品a成v人在线播放 | 玩弄中年熟妇正在播放 | 激情内射日本一区二区三区 | 亚洲国产成人av在线观看 | 日韩精品无码一区二区中文字幕 | 国产高清av在线播放 | 波多野结衣av在线观看 | 女人被男人爽到呻吟的视频 | 亚洲啪av永久无码精品放毛片 | 午夜无码区在线观看 | 日韩精品a片一区二区三区妖精 | 内射后入在线观看一区 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产激情无码一区二区app | 无码人妻精品一区二区三区不卡 | 国产在线aaa片一区二区99 | 日韩精品a片一区二区三区妖精 | 激情五月综合色婷婷一区二区 | 亚洲一区二区三区偷拍女厕 | 精品夜夜澡人妻无码av蜜桃 | 精品一区二区三区波多野结衣 | 无码av岛国片在线播放 | 秋霞成人午夜鲁丝一区二区三区 | 99久久久国产精品无码免费 | 亚洲gv猛男gv无码男同 | 亚洲精品综合一区二区三区在线 | 色综合久久久无码中文字幕 | 熟妇人妻激情偷爽文 | 成人欧美一区二区三区黑人免费 | 亚洲区小说区激情区图片区 | 亚洲精品午夜国产va久久成人 | 高清无码午夜福利视频 | 丝袜 中出 制服 人妻 美腿 | 亚洲s码欧洲m码国产av | 久久综合给久久狠狠97色 | 图片小说视频一区二区 | 成 人 免费观看网站 | 熟妇人妻中文av无码 | 亚洲精品国产精品乱码不卡 | 亚洲综合无码久久精品综合 | 欧美亚洲国产一区二区三区 | 国产精品亚洲五月天高清 | 欧美野外疯狂做受xxxx高潮 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲精品欧美二区三区中文字幕 | 日韩精品无码一区二区中文字幕 | 国产真实夫妇视频 | 亚洲精品欧美二区三区中文字幕 | 亚洲狠狠色丁香婷婷综合 | 九月婷婷人人澡人人添人人爽 | 色综合视频一区二区三区 | 成人综合网亚洲伊人 | 日韩av激情在线观看 | 国产精品亚洲五月天高清 | 国产猛烈高潮尖叫视频免费 | 久久久久亚洲精品男人的天堂 | 又大又紧又粉嫩18p少妇 | 久久婷婷五月综合色国产香蕉 | 久久亚洲中文字幕精品一区 | 东京热无码av男人的天堂 | 呦交小u女精品视频 | 熟妇人妻激情偷爽文 | 色欲综合久久中文字幕网 | 18无码粉嫩小泬无套在线观看 | 牲交欧美兽交欧美 | 亚洲精品中文字幕 | 爽爽影院免费观看 | 成人三级无码视频在线观看 | 日本一区二区三区免费播放 | 无码纯肉视频在线观看 | 偷窥村妇洗澡毛毛多 | 久久成人a毛片免费观看网站 | 亚洲一区二区三区 | 久久精品人妻少妇一区二区三区 | 综合人妻久久一区二区精品 | 免费观看激色视频网站 | 亚洲成a人一区二区三区 | 18禁黄网站男男禁片免费观看 | 国产午夜无码精品免费看 | 草草网站影院白丝内射 | 亚洲a无码综合a国产av中文 | 亚洲国产av精品一区二区蜜芽 | 人妻少妇精品无码专区动漫 | 国产精品99爱免费视频 | 精品无码一区二区三区的天堂 | 亚洲小说图区综合在线 | 在线a亚洲视频播放在线观看 | 欧美老人巨大xxxx做受 | 午夜精品久久久久久久久 | 一本色道久久综合亚洲精品不卡 | 我要看www免费看插插视频 | 55夜色66夜色国产精品视频 | 国产在线精品一区二区三区直播 | 亚洲中文字幕无码一久久区 | 狂野欧美激情性xxxx | 国产亲子乱弄免费视频 | 无码免费一区二区三区 | 亚洲一区二区三区含羞草 | 成人三级无码视频在线观看 | 男女性色大片免费网站 | av人摸人人人澡人人超碰下载 | 四虎永久在线精品免费网址 | 国精品人妻无码一区二区三区蜜柚 | 综合网日日天干夜夜久久 | 日本又色又爽又黄的a片18禁 | 亚洲欧美日韩国产精品一区二区 | 亚洲成av人片天堂网无码】 | 亚洲中文字幕无码中文字在线 | 99久久婷婷国产综合精品青草免费 | 午夜熟女插插xx免费视频 | 国产精品无码mv在线观看 | 久久精品国产精品国产精品污 | 内射后入在线观看一区 | 亚洲国产午夜精品理论片 | www国产精品内射老师 | 欧美黑人乱大交 | 97人妻精品一区二区三区 | 国产精品嫩草久久久久 | 亚洲欧洲日本无在线码 | 秋霞成人午夜鲁丝一区二区三区 | 欧洲vodafone精品性 | 中文精品无码中文字幕无码专区 | 国产精品久久久久久亚洲毛片 | 精品久久久无码中文字幕 | 国内少妇偷人精品视频免费 | 水蜜桃亚洲一二三四在线 | 国产乱人无码伦av在线a | 少女韩国电视剧在线观看完整 | 亚欧洲精品在线视频免费观看 | 99久久精品国产一区二区蜜芽 | 国产精品久久久久影院嫩草 | 精品一区二区三区波多野结衣 | 国产精品二区一区二区aⅴ污介绍 | 国产精品高潮呻吟av久久4虎 | 久久国产精品偷任你爽任你 | 国产电影无码午夜在线播放 | 国产免费观看黄av片 | 亚洲熟妇色xxxxx欧美老妇y | 天天拍夜夜添久久精品 | a国产一区二区免费入口 | 九一九色国产 | 鲁大师影院在线观看 | 亚洲精品一区二区三区婷婷月 | 少妇性l交大片欧洲热妇乱xxx | 图片区 小说区 区 亚洲五月 | 精品无码一区二区三区爱欲 | 亚洲午夜久久久影院 | 熟女体下毛毛黑森林 | 午夜精品一区二区三区在线观看 | 无码国模国产在线观看 | 亚洲欧美精品aaaaaa片 | 日日摸夜夜摸狠狠摸婷婷 | 国产午夜手机精彩视频 | 亚洲精品鲁一鲁一区二区三区 | 中文字幕人成乱码熟女app | 乱人伦中文视频在线观看 | 久久久久av无码免费网 | 欧美freesex黑人又粗又大 | 白嫩日本少妇做爰 | 亚洲无人区午夜福利码高清完整版 | 免费观看又污又黄的网站 | 人妻少妇精品视频专区 | 久久久婷婷五月亚洲97号色 | 黑人巨大精品欧美黑寡妇 | 2020久久香蕉国产线看观看 | 国产精品人妻一区二区三区四 | 国产成人无码a区在线观看视频app | 国产精品自产拍在线观看 | 久久久久久亚洲精品a片成人 | 人人妻人人藻人人爽欧美一区 | 亚洲毛片av日韩av无码 | 人人妻人人澡人人爽人人精品浪潮 | 人人妻人人澡人人爽精品欧美 | 亚洲 日韩 欧美 成人 在线观看 | 99在线 | 亚洲 | 日本熟妇人妻xxxxx人hd | 成人无码视频在线观看网站 | 久久无码人妻影院 | 国产av剧情md精品麻豆 | 亚洲无人区一区二区三区 | 日本一本二本三区免费 | 久久久久久久女国产乱让韩 | 中文毛片无遮挡高清免费 | 国产人成高清在线视频99最全资源 | 国产国语老龄妇女a片 | 一本久道高清无码视频 | 精品久久8x国产免费观看 | 亚洲人成网站在线播放942 | 亚洲国产av美女网站 | 无套内射视频囯产 | 天堂а√在线地址中文在线 | 狠狠噜狠狠狠狠丁香五月 | 亚洲国产一区二区三区在线观看 | 国产精品久久久久久久影院 | 亚洲成av人影院在线观看 | 国产精品福利视频导航 | 久久久久se色偷偷亚洲精品av | 性色av无码免费一区二区三区 | 亚洲无人区午夜福利码高清完整版 | www国产精品内射老师 | 无码播放一区二区三区 | 中文字幕无码av波多野吉衣 | 人人妻人人澡人人爽欧美一区 | 欧美xxxx黑人又粗又长 | 亚洲爆乳精品无码一区二区三区 | 国产偷国产偷精品高清尤物 | 成 人 网 站国产免费观看 | 日本成熟视频免费视频 | 久久综合激激的五月天 | 99久久久无码国产aaa精品 | 亚洲毛片av日韩av无码 | 亲嘴扒胸摸屁股激烈网站 | 欧美真人作爱免费视频 | 亚洲成av人综合在线观看 | 国产高清不卡无码视频 | 国产精品二区一区二区aⅴ污介绍 | 亚洲色在线无码国产精品不卡 | 国产成人精品三级麻豆 | 美女毛片一区二区三区四区 | 强辱丰满人妻hd中文字幕 | 麻豆av传媒蜜桃天美传媒 | 嫩b人妻精品一区二区三区 | 麻豆蜜桃av蜜臀av色欲av | 伊人久久大香线焦av综合影院 | 成人精品视频一区二区 | 76少妇精品导航 | 无码精品人妻一区二区三区av | 国产乱人无码伦av在线a | 免费国产成人高清在线观看网站 | 亚洲自偷精品视频自拍 | 激情人妻另类人妻伦 | 狠狠色色综合网站 | 夜夜影院未满十八勿进 | 性欧美疯狂xxxxbbbb | 青青久在线视频免费观看 | 成人av无码一区二区三区 | 性做久久久久久久久 | 一本大道伊人av久久综合 | 成人试看120秒体验区 | v一区无码内射国产 | 俺去俺来也在线www色官网 | 丰满人妻一区二区三区免费视频 | 樱花草在线播放免费中文 | 中文字幕人成乱码熟女app | 少妇被粗大的猛进出69影院 | 久久99精品国产.久久久久 | 亚洲日韩一区二区 | 国产成人综合美国十次 | 国产女主播喷水视频在线观看 | 成人aaa片一区国产精品 | 在线观看国产一区二区三区 | 蜜臀av无码人妻精品 | 精品无码成人片一区二区98 | 大肉大捧一进一出视频出来呀 |