Autojs实战教程---番茄免费小说Apk文件和源码

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Autojs实战教程---番茄免费小说Apk文件和源码


字节跳到的App,推荐给大家,还是值得用一用的。不废话直接代码。

代码是带UI的复制后可以直接使用。

"ui";
//#region UI
var rootUrl = "http://114.115.220.1:91";//各位大神小弟自己的服务器别黑谢谢
var storaySign = "FanqieXiaoShuo0412326@163.com";
var woolStorage = storages.create(storaySign);//创建本地存储
var storyThread = null;
ui.layout(
    <drawer id="drawer">
        <relative>
            <viewpager id="viewpager">
                <relative id="welecome">
                    <vertical w="*" h="*" id="firstpage" gravity="center">
                        <text text="欢迎使用番茄小说阅读辅助" textSize="32sp" textColor="#FFFFFF" gravity="center" />
                        <text text="滑动屏幕来了解更多信息" marginTop="10" textSize="25sp" textColor="#A0FFFFFF" gravity="center" id="txtTimeTip" />
                    </vertical>
                    <text id="skip" text="单击此处以跳过" marginBottom="100" textSize="13sp" textColor="#30FFFFFF" gravity="center" layout_alignParentBottom="true" layout_centerHorizontal="true" />
                </relative>
                <vertical id="secondpage" gravity="center">
                    <text text="艾尔摩迪恩" textSize="45sp" textColor="#FFFFFF" gravity="center" />
                    <text text="让生活更简单" marginTop="10" textSize="15sp" textColor="#A0FFFFFF" gravity="center" />
                    <webview id="adWebview" h="*" margin="0 16"/>
                </vertical>
                <vertical id="startpage" >
                    <vertical>
                        <appbar>
                            <toolbar bg="#FF5c50e6" id="toolbar" title="番茄小说阅读辅助v0.4.1" paddingTop="2dp" h="auto" >
                            </toolbar>
                            <tabs id="drawerTabs" />
                        </appbar>
                        <viewpager id="ToutiaoView" >
                            <frame id="shua">
                                <scroll>
                                    <vertical>
                                        <vertical>
                                            <Switch id="autoService" text="开启无障碍服务:" checked="{{auto.service != null}}" textColor="red" padding="8 8 8 8" textSize="15sp" />
                                        </vertical>
                                        <vertical>
                                            <Switch id="switchEnbleFloating" text="开启悬浮窗:" checked="{{auto.service != null}}" padding="8 8 8 8" textSize="15sp" textColor="red" />
                                        </vertical>
                                        <vertical>
                                            <text text="平台名称:" textColor="red" padding="8 8 8 8" />
                                            <spinner id="spStoryPlateform" entries="番茄免费小说" spinnerMode="dialog" />
                                        </vertical>
                                        <vertical>
                                            <text text="小说名称:" textColor="red" padding="8 8 8 8" />
                                            <input id="txtStoryName" text="我和女神合租的日子" />
                                        </vertical>
                                        <vertical>
                                            <text text="滑动屏幕次数::" textColor="red" padding="8 8 8 8" />
                                            <input id="txtStoryScreenSileTimes" text="400" hint="App被滑动屏幕次数" inputType="number" padding="8 8 8 8" />
                                        </vertical>
                                        <vertical>
                                            <text text="时间间隔(秒):" textColor="red" padding="8 8 8 8" />
                                            <input id="txtScreenSileTimesInterval" text="20" hint="翻页时间间隔" inputType="number" padding="8 8 8 8" />
                                        </vertical>
                                        <vertical>
                                            <Switch id='switchIsShowConsole' text="是否开启控制台:" padding="8 8 8 8" textColor="black" />
                                        </vertical>
                                        <vertical>
                                            <Switch id='switchIsAutoSign' text="是否自动签到:" padding="8 8 8 8" textColor="black" />
                                        </vertical>
                                    </vertical>
                                </scroll>
                                <horizontal gravity="right|bottom">
                                    <button style="Widget.AppCompat.Button.Colored" id="btnAutoStory" text="自动刷" padding="12dp" w="auto" />
                                    <button style="Widget.AppCompat.Button.Colored" id="btnCloseAutoThread" text="关闭线程" padding="12dp" w="auto" />
                                    <button style="Widget.AppCompat.Button.Colored" id="btnSaveConfig" text="保存配置" padding="12dp" w="auto" />
                                </horizontal>
                            </frame>
                            <frame>
                                <scroll>
                                    <vertical padding="8 8 8 8">
                                        <vertical padding="8 8 8 8">
                                            <text w="auto" color="#111111" size="26" text="邀请码" textColor="black" padding="8 8 8 8" />
                                            <list id="recommandList">
                                                <horizontal h="40">
                                                    <text id="txtAppName" textSize="16sp" textColor="#000000" text="{{AppName}}" textColor="#228B22" />
                                                    <text id="txtAppCode" textSize="16sp" textColor="#000000" text="{{AppCode}}" textColor="#228B22" />
                                                    <button text="复制" id="btnCopyText" style="Widget.AppCompat.Button.Borderless" w="52" textColor="#FF7F50" />
                                                </horizontal>
                                            </list>
                                        </vertical>
                                        <vertical padding="8 8 8 8">
                                            <text color="#228B22" size="16" text="如果我帮助到了你,希望你也帮助我.毕竟您的支持才是我前进最大的动力。"></text>
                                            <vertical padding="8 8 8 8">
                                                <img src="http://114.115.220.1:91/app/Resources/Images/副业赚钱.jpg" />
                                            </vertical>
                                            <vertical padding="8 8 8 8">
                                                <img src="http://114.115.220.1:91/app/Resources/Images/zhifubao.jpg" />
                                            </vertical>
                                            <vertical padding="8 8 8 8">
                                                <img src="http://114.115.220.1:91/app/Resources/Images/副业赚钱课.jpg" />
                                            </vertical>
                                            <vertical padding="8 8 8 8">
                                                <img src="http://114.115.220.1:91/app/Resources/Images/理财可以很简单.jpg" />
                                            </vertical>
                                        </vertical >
                                        <vertical padding="8 8 8 8">
                                            <text w="auto" color="#111111" size="26" text="权限设置" textColor="black" padding="8 8 8 8" />
                                            <vertical padding="8 8 8 8">
                                                <text w="auto" color="#228B22" size="16" text="一、需要启动无障碍服务。因为本程序是基于Autojs4.1.0编写,AutoJs是基于无障碍服务的插件。" />
                                                <text w="auto" color="#228B22" size="16" text="1、首先打开设置页面后,然后向下滑动。" />
                                                <text w="auto" color="#228B22" size="16" text="2、此时我们我们将会看到辅助功能。" />
                                                <text w="auto" color="#228B22" size="16" text="3、在辅助功能页面中我们继续向下滑动。" />
                                                <text w="auto" color="#228B22" size="16" text="4、直到我们会看到无障碍,然后点击进去。" />
                                                <text w="auto" color="#228B22" size="16" text="5、最后,我们找到想要设置的程序点击进去。" />
                                                <text w="auto" color="#228B22" size="16" text="6、这时候我们点开开关即可成功启动。" />
                                                <text w="auto" color="red" size="12" text="注:不同的android版本设置可能不同。" />
                                            </vertical>
                                            <vertical padding="8 8 8 8">
                                                <text w="auto" color="#228B22" size="16" text="二、允许app显示在其他应用的上层。" />
                                                <text w="auto" color="#228B22" size="16" text="1、首先打开设置页面后,然后向下滑动找到应用。" />
                                                <text w="auto" color="#228B22" size="16" text="2、此时我们点击应用找到权限管理。" />
                                                <text w="auto" color="#228B22" size="16" text="3、点击权限管理进入后可以搜索薅羊毛UI版或者滑动查找。" />
                                                <text w="auto" color="#228B22" size="16" text="4、点击薅羊毛UI版进入后找到悬浮窗。" />
                                                <text w="auto" color="#228B22" size="16" text="4、点击悬浮窗进入后点击允许即可。" />
                                            </vertical>
                                            <text w="auto" color="#111111" size="26" text="小说阅读辅助App" textColor="black" padding="8 8 8 8" />
                                            <vertical padding="8 8 8 8">
                                                <text w="auto" color="#228B22" size="16" text="     点击“薅羊毛”选项卡查看哪些应用被支持,然后去应用市场或者直接在我的博客中下载相应的App。无论是在哪里下载的App都要在“推荐码”中复制邀请码,填写到App邀请中,双方互惠互利,也算是对作者的支持,在此谢过了!!!" />
                                            </vertical>
                                            <text w="auto" color="#111111" size="26" text="配置小说阅读辅助App" textColor="black" padding="8 8 8 8" />
                                            <vertical padding="8 8 8 8">
                                                <text w="auto" color="#228B22" size="16" text="     点击“配置”选项卡,在里面进行App打开次数和薅羊毛次数已经是否显示控制台等配置。其中无障碍模式和悬浮窗权限均可以在配置中设置。" />
                                                <text w="auto" color="red" size="12" text="注1:控制台最好不开启,防止click直接点击屏幕失效。" />
                                                <text w="auto" color="red" size="12" text="注2:防止封号建议遍历次数多设置几次,而滑动屏幕次数少一些建议不要超过500次。" />
                                            </vertical>
                                            <text w="auto" color="#111111" size="26" text="关于" textColor="black" padding="8 8 8 8" />
                                            <vertical padding="8 8 8 8">
                                                <text w="auto" color="#228B22" size="16" text="    小说阅读辅助App纯属个人爱好,如果涉及到侵权请通知作者,作者会尽快解决相应问题。作者邮箱:zy0412326@sina.com." />
                                            </vertical>
                                        </vertical>
                                    </vertical>
                                </scroll>
                            </frame>
                            <frame>
                                <scroll>
                                    <vertical>
                                        <text w="auto" color="#111111" size="20" text="主公别忘记填写邀请码。填写完成大家都有金币!" textColor="black" padding="8 8 8 8" />
                                        <vertical padding="8 8 8 8">
                                            <text w="auto" color="#228B22" size="16" text="七猫免费小说:5K9FRS"  />
                                            <text w="auto" color="#228B22" size="16" text="番茄免费小说:782383363" />
                                            <text w="auto" color="#228B22" size="16" text="免费淘小说:A74219742" />
                                        </vertical>
                                        <text w="auto" color="#111111" size="20" text="设备概况" textColor="black" padding="8 8 8 8" />
                                        <vertical padding="8 8 8 8">
                                            <text w="auto" color="#228B22" size="16" text="设备名称:" id="txtDeviceName" />
                                            <text w="auto" color="#228B22" size="16" text="设备分辨率:" id="txtDeviceResolution" />
                                            <text w="auto" color="#228B22" size="16" text="设备型号:" id="txtDeviceModel" />
                                            <text w="auto" color="#228B22" size="16" text="Android版本:" id="txtAndroidModel" />
                                            <text w="auto" color="#228B22" size="16" text="IMEI:" id="txtDeviceIMEI" />
                                            <text w="auto" color="#228B22" size="16" text="IMEI:" id="txtDeviceUUID" />
                                        </vertical>
                                    </vertical>
                                </scroll>
                            </frame>
                        </viewpager>
                    </vertical>
                </vertical>
            </viewpager>
        </relative>
        {/* drawer */}
        <vertical layout_gravity="left" bg="#ffffff" w="280">
            <img w="280" h="200" scaleType="fitXY" src="{{rootUrl}}/app/Resources/Images/weixin.jpg" />
            <scroll>
                <list id="menu">
                    <horizontal bg="?selectableItemBackground" w="*">
                        <img w="50" h="50" padding="16" src="{{icon}}" />
                        <text textColor="black" textSize="15sp" text="{{title}}" layout_gravity="center" />
                    </horizontal>
                </list>
            </scroll>
        </vertical>
    </drawer>
);
//#endregion
//#region 初始化方法
initializeUI();
initializeRightMenu();
initializeHeaderMenu();
initializeData();
initializeEvent();
/**
 * 初始化UI
 */
function initializeUI() {
    ui.ToutiaoView.setTitles(["自动刷", "打赏&帮助", "设备"]);//设置滑动页面的标题
    ui.drawerTabs.setupWithViewPager(ui.ToutiaoView);//让滑动页面和标签栏联动
    activity.setSupportActionBar(ui.toolbar);
    activity.window.addFlags(android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏
    ui.viewpager.overScrollMode = android.view.View.OVER_SCROLL_NEVER;//删除滑动到底时的边缘阴影
    //为页面设置渐变色背景
    ui.firstpage.backgroundDrawable = GradientDrawable("TL_BR", ["#81C784", "#2E7D32", "#2E7D32"]);
    ui.secondpage.backgroundDrawable = GradientDrawable("TL_BR", ["#FFF176", "#F9A825", "#F9A825"]);
    ui.skip.click(() => ui.viewpager.currentItem = ui.viewpager.childCount - 1);//点击跳过则跳转到最后一页
    permissionpage = ui.viewpager.childCount - 1 - 1;//授权页下标(启动页前一页)(启动页固定最后一页)
    ui.txtTimeTip.setText("今天是:" + getDate());
    ui.adWebview.loadUrl("http://114.115.220.1:91/app/Resources/Images/99个道德经的知识.jpg");
    /**
     * 邀请码绑定按钮点击事件
     */
    ui.recommandList.on("item_bind", function (itemView, itemHolder) {
        itemView.btnCopyText.on("click", function () {
            let item = itemHolder.item;
            toast("复制成功: " + item.AppCode);
            setClip(item.AppCode);
        });
    });
    var items = [
        { AppName: "1、七猫免费小说", AppCode: "5K9FRS" },
        { AppName: "2、番茄免费小说", AppCode: "782383363" },
        { AppName: "3、免费淘小说", AppCode: "A74219742" },
        { AppName: "小米应用商店该有的都有", AppCode: "http://app.mi.com" },
    ];
    ui.recommandList.setDataSource(items);
    let deviceName = device.device;
    let androidVersion = device.release;
    let deviceResolution = device.width + "X" + device.height;
    let deviceModel = device.model;
    let deviceUUID = device.fingerprint;
    ui.txtDeviceName.setText("设备名称:" + deviceName);
    ui.txtDeviceResolution.setText("设备分辨率:" + deviceResolution + "宽X高");
    ui.txtDeviceModel.setText("设备型号:" + deviceModel);
    ui.txtAndroidModel.setText("Android版本:" + androidVersion);
    ui.txtDeviceUUID.setText("唯一标识码:" + deviceUUID);
    try {
        ui.txtDeviceIMEI.setText("设备IMEI:" + device.getIMEI());
    } catch (error) {
        ui.txtDeviceIMEI.setText("设备IMEI:没有权限读取");
    }
}
function initializeRightMenu() {
    ui.menu.setDataSource([
        { title: "更新日志", icon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAC8klEQVRYR82XT2sTQRjGn3cTaG8mG28eqrATEQ8NePIiFRFURCoigohWVOxORNtP0PQTmKKZHEQoRQQtUpQigmjrBxDqRbGzYj140kziLaXpjszalDSm+bOxxDkF8s7z/N5535nZIfR4UI/90RTAFvJpN4Da1zPFW8n5ZhoNAezc5wzIugngdjcAAE4S4UjBZc52Oo0BhPyuONvTpXkwfff9L0ltrY8XeNJtpPcXwMayzyrOZv8FgNGIC7lQ5OxozwBsId8ozo71EGD5teLJ410BxPKf9qLcXwpE+suxkntgpSoYyy2nQLRri8Fq9ENpfF8Qb+flK+WyE10BJIRc1KABQBvRlOJss39sIZcADNYZjCvOsgGAkC8VZ6dCAZjsLKIrAMbqBLIW4flPly22alZbePOKO6dDASSEN6yh5wB881ejKSNi9VWM6SA0JlWaZVoBJIR8UeDsTCiAjSXUBLwrcDb0p6ZeFlrf8VejcVPnViWIC2+uyJ2zoQDsnMyAMBFM1nqMNK1oC9MAYiCaUq4zZsoUtShWa1ApR5c2m1B4zxR3zoUCiN39Gov2V1K+DkwHNkR+EWhkndaWanfDdqWw83JWuex8KIDqJFssT4OsEnxdAmFYcRb0Q7UkWustuyBCmKw2qJ2TT1SaXegKoFmjmTIRIegPM3xCKQJkNwHy3mPlOhd3DKDlLsjLRwWXXQoFkMgtj2jLHECdDb8cnao2YVzImSJnl0MB2EKaI7djANL6aiGdNI0L0z+KJ0dCAXSWd+NoOy8fKpdd6x2A8B4o7twIBWALaS6frTdde8tScxl1AdDolGvHv+4kDL8C7Zi1irG7KUEr8Xb+j+fk+2KaHQrVA+0YNIsxH6SkdR+IDsPCQTXKPtbG7+hnefC+AKDS+zOxe3LIsvwh87s1QF5OQGO07YeJBU0+VXzQGpFfIdBawXXeGqNEXnrrFVy3IliIaGI/0o7XEqAaUM0gTBlqMzU69ZlXNf/vx2mYzDud8xtjzpswrqCXXwAAAABJRU5ErkJggg==" },
        { title: "检查更新", icon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADnUlEQVRYR+2WTWgcZRjHf890k6KoTQ8F6xcRRcXWj9DubKmXFLQoRCtCg1KwTYspFrzYmJ3RwzYHs7PRXvSgCW20wQ9owWDAQ6jS3NZMElqKGkKbUhE/etBCDqE2yTwy484yHbLZ2cS2F9/bzPs8//+f//O8z/sKN3nJTebnfwE1O5Ap6DOesl3gceAJgQWFCWBShG9Hs3KylrImFmDm9RDCC0BTFYLTKEOuLYeSCEkkwCxoDiUO+AfwO+AJrFe4K0Y46FryUjURVQVkHD2p8HQIpEKf4dE3aotve3ll8rrJM2gXpT3y+xvXkpalRCwpwCxoD8pbJYApPNrct6W4FKDZoy3i0Vt2RHjdzcrHlXIWFZA+rPfKPDtQPiwlXnItubOandF909FzwIPBP+ENTfH12EH5JY5xjYDNeW0SoVMImu3WcrDS6tpyohYBfklUGI/kzCoMGcr70fKVBfjHS5VPgLujRH7Nx7KyvxbyMDbt6CmB5miuwG8Ke11Lhv81B9ic12ZDOBUJPIrBd6tSDBfflL+WQx7mPJnThvrVNCO0IrwS/veUbeO2jAQCokoNYcf3WRlaCWml3IyjHQrv+fsKI2OWbJPSgMmVkj5yLTlwPchDzExe21XoDb6VLkk7+qXAyygzri1rrid5iG06OgPcDgyK6egU8BDwo2vJxhshIO3opMAjwLSYBb2M0oBSdG3ZeiMEmI76w2yL77rvwCDwInDRteT+WgXs2pW7Y9Utc40DR7rPJs01Hf0ZuA8Y9h3IojjAVUnRNNohPyUFamuzH/UMjgMbVLVroN+pegNuyWujJ/hlrw+aMJPX7SoEQ6GWPoiSBwNFtfPTfic4Ykut2HB6NpgDpqP+uX++lHh6wWDnRKdMVwKKkyucGDiab61CvFXgc6CxFNfjWpINBDz3ga7+c5YrEYBZFT7Do4jHmbF35Ey4FyefT60ZmWrMdlUiF+EeEZ5C2RvYXloLa6mf2C9z5bugqVvX1Rt8Eb37w2BJsSHsjd37bH9kB/N95rbH+HV9ebpWcz/cn/SUlnFbLgSli2elC3pAlNf8xgLqgqCIgFf32ccFdtYo4KrCDyJ85Wbl3ShnxQfJpl6tkxkerpvnStGW88stQcrg0tw05yf6ZG4xi6o+yRZLWk4TVuyRpIWLx8VFoHL4WH93R614y3JgsXIkHURxgSsS4IPt2ZNr0NTfDxw74lzzSk7qxIoFJCX6z3tgpcRh/j9lvlrSBRsylQAAAABJRU5ErkJggg==" },
        { title: "教程", icon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAgCAYAAACLmoEDAAAD4ElEQVRYR+1YXWgcVRg9350UpQ91d5NspIhE3UmqghQS3QqKqaDQ6osgYhUK+mBxkpYWoXlRqNSH4oMVutm2YlX6WKWiD33og11FSJEGxAdLMhsLFtLuJp0NrURMM/fIXXZkMk3qTEeDlVy4cO/wfec797vn/swVhErmkDsgFp4RIG8qyS4A+VY1lnVTRaRGoG6qCL7DdYx6u+yrAVTm4IWMdcf8gIZ6NC1WmJ+YTrb8yyOA/4kAfQBOE6gJ2CSkiGltWXUsAErYQaBThJ1sDkLyAJ8DMEWo/Q3ngSO5I+5D0DgB4GEA3wBSJ/S0gqoTvEzhZYille/ntaCzmRRIlwAmMc8CuKh9bJ/daVfCRE1bug5X89fJGsCPKOr4gvLHr+3onYkaLtVff/Tc2jl9V68FeZnkXhFsJ3Ec1O9S1pxsOPf/FAcnsGkvTRSp8Dogb6wR6aq9WTAz+VeRXNn9AsBaz7G3JgGO2ubK7gmQWyHqZ88pPJYS6xSAOc+xX4yS/VUo718ZLJTSBGgvVd+m4n6A73lOzzupsEaqQxTu9Rz73ihZah+bl9JIkoCZkrtbKRzUGntmh+wPk/hGbc1CVxbOeI7dXFNBMTK4gawxjhssGGQQIDrwNFixyGbL7hkBYhEOAJcja5IRZ+AEKg3H3mxsE2U2DvhyU/ePSCqJDFbJJshAIhkYzcbFjuosKoM0WLEX2G1DNi7RsN1yu0EarFiZTRPgf70bmItUkJzg4pJ4gd3sUIhOT3gjT5rZjtJkj1Z6XEH6Z5zCWOJD4e+OyKXuEbeq2dRkV0KzweCisczMmG+xLzIrRlbpAQLtImrIXP5BXtJaNf8Q/lNkg4TcFjIIk6XSuwVy7JYW2ErI4GYxEm1dq2QTZGDZzGbLrqvI4SuDPScT4N1gmi27wwIcAPRbntP7QSqskcltInrEc+xcGEdy5YmjZsvwBnv3RQN0lKt9PtAn9NcD1m+iWKNGTc+3/TC7577ZsH1uxD0mgldJfSCK1f3phTuv/r6wkeBGIe8O/AhVb4Ocnh4sVBdjje+jqOcbjt2/iGy2XN0i4CmIfCb0vyLUUwSebL3OGNspAhMtp3sEKLTaPwKoCPS3GvK0QHaC/BIiLxA8pIgKRbZA8ASIDS2fCQJTpi2CB8HmK4wpZ0GMao2vlcVt5pEDwEueY3++iKzp5MqTrwF8BaB5nBgF9VmqtnOWssZmdnRfCjus+/hizpr/oyj0ixC1CcDjANYZgg2nZ1cIq5+QihDfa82xtjl/bGZ4w7UwVubw+W6lVRFQRShsAptYMC86S830ov/yNDpbCd9Vsv9Wlv8E0mP+P0I4oqkAAAAASUVORK5CYII=" },
        { title: "关于", icon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAE3ElEQVRYR61Xa4hUZRh+3jOrK1G7M2fGtIug654xS1IqSIpCKKlMtCL3RyCx5YU940oKJmSQCxoUhOU232Sp+K/UH1mkGRiKGV0oumDFzhnTMipx58xgCO26c574zjmj42Vmzkrn38z3vO/7fO/9E0T8EluOtRuet4DkQoF0EEgBkgzEWRRgkEBePG+nnOWBwbW3/BNFtTQDJbP56RDpJfAUgPZm+PC8JMB7IPuLmfQvjWQaEkjk8huE0gugLVRyBsAXAhwmcYpi/K3/F3oTRTCB4D0QmQtibBVPYX+pJ/1iPRJ1CZjK2QVgkS8o8qlHbi6nhvaja8Zwoxu1bT1pxoaHngS4TIA7wxB95trp+68kd0UCpiocBzg5FFjq2tbWiK6/CJZQhWUCbglJDLp2evylei4jYKr8aUBSfmohNrNkd/x4NcarMglVeETAfcFvOeHanVNq9V1EwFT5w4DcpwGubTVN0NEQM5XDEL/bta2uqux5I2HCrQtuLvNKdufHUQyYbzm3soI59PBzudc6VE8moX69XVD5wdcv3FhNTJ+ALjWKfBlme+SYj88evbYirVruNt8wvT43M219PRKmcpYAeAfAGSFn6xINCChHEejR2e72dD4Y5eYaE+935hgxHLyAp+va6bA5XVmLmSscAPmAALmibdk+AVM5vwOY5AELy7b1YVQC120ZSI2pGKfP40V2uD2d3Y3k48pZYAAfAPjTta2bJJ49PsuQke8AlN1TQxPQ17jOL1VuKmeRAIsJDrh2ek1T8ruOjjUHWzXpNhHvbknmCitJvkHInpLd+XhTBf8DwFTOfgAPgVgtZtbZBsEzAqwr2tbLo9Xf/qZzhxBtjSrgUp1J5bxAYCOI7WIq5wiAe0EscTPWtqgEJuQK1w97XAXBKgFam1VArV4z6zwLge6un2sCOh4pwphfsqfujUIgofKbBaJ7+8wafJdrW7ujyR97VOB9BGBw1AT8IUW2VCqyJtaCQtWgERtz4+DyyX+NhgCJ01cdgnY10BGDcSzonPi2ZFt3RTHul30YAgKHrjoJE+q8G5t2wHpJSELpMlxBsh/gXtdOz496i4QqrBHw1aAFjy6Bq2UoZLfoYQIPP0EwPDJm3A1nlkxyo5Aws/m9EJnnYwUPuz3WJ4lcYQb/jf1RXjWlXFdHTSPyZGRKtRUf1QOFkOUlu/PtSASUcw5AS0BAdoDeOAF3Fu1pexrJJ9XAY4TxPsiv3Ex6djgNC+so3BA1mXQPOEeeqjVEcm0pkw5CUueLbzoeN1pH9PCaVb1s4IHNThtaoMfq9CheiGfzswwRrSgOcICM9ZUyU99t5jlTOZsAPFd70ZqFxOkRQgU51Xwh0aNYY6O2YFPluwHZ7keM7C5m0juC9Kn5ajfh/3MlM5UzG4AeQPpdsdW1raVVs5cvpVnnJAQ3R/VEM7fr84RyDgqgPfa158W6yis6fqtLIBT45sJOj9e9oZa+hqXVhIWZHVgPMV4KLsX+kp1e2ZCAPkzmCq+QfD4Efi/w+oqpc/uaPUzqcTGVsxrAa+H5bncEi7HSGmq4eiez+Sc8kd7QfVr2sqcZK97ZKGHwE67Fmyg0gmohj1SET0fa/f1tVtAFYm5UY1Fw/jCKAqxizGxhkgALabCDREpEkiSvGY2OWqyInPgPdzcwBtuCmgYAAAAASUVORK5CYII=" },
        { title: "退出", icon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADd0lEQVRYR+2XS4hcRRSGv7o9pnHR4/TtnoVBhJDUBE2UiLrxEaISV+LCx+DaxBiqJxGi4iNrxQhGzKTLCYLiwoWOsxIRA5r4wo34IFEmXRnduFFmqmOycYaZKqmem9jT3u7b3bZkY8GFpuucU9/969SpcwWXeYjLvD59A8TarAR4W168kvGtS/2+yL8B8AlA/j8DKGmjF5RUaW8Xa9MRoKhrR+pqbH+WMqkKFI/NXcuKe1vADqtkqk1Jmz895G15MVWBBPBjrmC3fUz+2g4kNXiszSfA3UDNKrk5zbkLgNPAFuBTq+Q9XQMUtXlGwEvABbfC/ef2yZN9AUyZ63G8FyA8PFtX8lBanDUKjFR/2RaJ5c+BAvhHrRp7qx15lgLBb+R1c1PkCfG880Pbz1U2fN8abw1ArM0rwAFg2io53imBugEI/iVtnvPwInDYKvlkW4Dhw6fjofy6UwixPoqiW+f3bvxmEAAhRlyt/QzklxeXbjh/YKttjntJgWLVKCGoAu9aJR/JOj7dKtAA0OYNYLf3VOoVqVMBYl07BmKPJ7qvrjZ+OEiAkUmzI8pxAs+btiJ3pSugzYlw7kVu6LqFxzfMZgFkFaJm//LRuTEXuTPAV1bJO9ptwe9CMBrlR4bnd41eGCjAodmCK+TOA/NWydE2W2CCQYFlrrL7ZfjdccTaLCZ3QSHrLoiPmGGG+CPUFqvkcDuAINEYEVvsXvlTFkAv8/FqUfoxrbL+fQqSHADGrZLTvSyQZVuq1h7wQsx4OFlX8q5UBUraVDwc7aYIZS3YOl+smkkhmBBwcEHJUJQujSYFZm8U5H5ozDhusxPy614XSrNP9v8zYFtagWstxe8DDw5ShVjXXgbxNDBjlXyoFXINQFGfuVMQhcsDvHjKVjaFu6HvEU/VduLE8UY43Pa62vxFR4AwGToZgdjXOGJtmpFuiS4Wq3AZ1ZU8mOaX3hFpYwRsShx6PhWxNg9DoxcI4x/VLzUJW+libb4Ebk/+n8bxalZilvXZmx1uT7hTVmXnbF1J2Umxjl1xUZsXBDzfFOAjL3hHCL5jidU+bx3X4BqtV3jr8KymEH6y76a0mThJzCeS09HN9s943GtpCdd1DqQZlqfmbvHO3etgp4D1wNWAEILfvG88H+Q8x+cn5LfdUF606fvDpJdF+s6BQS3yP0AnBf4C4vh6MKas2UAAAAAASUVORK5CYII=" }
    ]);
    ui.menu.on("item_click", item => {
        switch (item.title) {
            case "更新日志":
                app.openUrl(rootUrl + "/app/WoolUpgradeLog.html");
                break;
            case "检查更新":
                threads.start(function () {
                    let titileAndVersion = ui.toolbar.getTitle();
                    let appNameAndVersionArray = titileAndVersion.split("v");
                    let appName = appNameAndVersionArray[0];
                    let appVersion = appNameAndVersionArray[1];
                    var url = rootUrl + "/app/WebService.asmx/CheckAppVersion";
                    var version = appVersion;
                    var res = http.post(url, { "appName": appName, "version": version });
                    var returnString = res.body.string();
                    let json = JSON.parse(returnString);
                    if (json.success == "true") {
                        if (json.data.upgrade == "true") {
                            app.openUrl(rootUrl + "/app/WebService.asmx/DownLoadWoolUIApk");
                        } else {
                            toast("已经是最新版");
                        }
                    } else {
                        toast("请求远端服务器出现异常!请稍后重试!");
                    }
                });
                break;
            case "教程":
                app.openUrl("https://blog.csdn.net/zy0412326/article/details/104767602");
                break;
            case "关于":
                dialogs.build({
                    title: "关于",
                    positive: "确定",
                    items: ["抖音小助手版纯属个人爱好,如果涉及到侵权请通知作者,作者会尽快解决相应问题。作者邮箱:zy0412326@sina.com"]
                }).on("show", (dialog) => { }).show();
                break;
            case "退出":
                ui.finish();
                break;
        }
    });
    //让工具栏左上角可以打开侧拉菜单
    ui.toolbar.setupWithDrawer(ui.drawer);
}
/**
* 创建选项菜单(右上角)右上角菜单事件
*/
function initializeHeaderMenu() {
    ui.emitter.on("create_options_menu", menu => {
        menu.add("更新日志");
        menu.add("打赏");
        menu.add("教程");
        menu.add("关于");
        menu.add("退出");
    });
    ui.emitter.on("options_item_selected", (e, item) => {
        switch (item.getTitle()) {
            case "更新日志":
                app.openUrl(rootUrl + "/app/WoolUpgradeLog.html");
                break;
            case "打赏":
                app.openUrl(rootUrl + "/app/index.aspx");
                break;
            case "教程":
                app.openUrl("https://blog.csdn.net/zy0412326/article/details/104767602");
                break;
            case "关于":
                dialogs.build({
                    title: "关于",
                    positive: "确定",
                    items: ["薅羊毛UI版纯属个人爱好,如果涉及到侵权请通知作者,作者会尽快解决相应问题。作者邮箱:zy0412326@sina.com"]
                }).on("show", (dialog) => { }).show();
                break;
            case "退出":
                ui.finish();
                break;
        }
        e.consumed = true;
    });
}
/**
 * 初始化配置数据
 */
function initializeData() {
    let StoryPlateform = woolStorage.get("StoryPlateform");
    if (StoryPlateform != null) {
        if (StoryPlateform == "七猫免费小说") {
            ui.spStoryPlateform.setSelection(0);
        } else if (StoryPlateform == "番茄免费小说") {
            ui.spStoryPlateform.setSelection(1);
        }
        else if (StoryPlateform == "疯读小说") {
            ui.spStoryPlateform.setSelection(2);
        }
    }
    let StoryName = woolStorage.get("StoryName");
    if (StoryName != null) {
        ui.txtStoryName.setText(StoryName);
    }
    let StoryScreenSileTimes = woolStorage.get("StoryScreenSileTimes");
    if (StoryScreenSileTimes != null) {
        ui.txtStoryScreenSileTimes.setText(StoryScreenSileTimes);
    }
    let ScreenSileTimesInterval = woolStorage.get("ScreenSileTimesInterval");
    if (ScreenSileTimesInterval != null) {
        ui.txtScreenSileTimesInterval.setText(ScreenSileTimesInterval);
    }
    var IsAutoSign = woolStorage.get("IsAutoSign");
    if (IsAutoSign != null && IsAutoSign == "true") {
        ui.switchIsAutoSign.setChecked(true);
    } else {
        ui.switchIsAutoSign.setChecked(false);
    }
    var isShowConsole = woolStorage.get("isShowConsole");
    if (isShowConsole != null && isShowConsole == "true") {
        ui.switchIsShowConsole.setChecked(true);
    } else {
        ui.switchIsShowConsole.setChecked(false);
    }
}
//#region 初始化事件
function initializeEvent() {
    ui.btnAutoStory.click(function () {
        let isAutoSign = ui.switchIsAutoSign.isChecked();
        let isShowConsole = ui.switchIsShowConsole.isChecked();
        let StoryPlateform = ui.spStoryPlateform.getSelectedItem();
        let StoryName = ui.txtStoryName.getText();
        let StoryScreenSileTimes = ui.txtStoryScreenSileTimes.getText();
        let ScreenSileTimesInterval = ui.txtScreenSileTimesInterval.getText();
        let tipMessage="准备阅读番茄小说"
        confirm(tipMessage).then(value => {
            //当点击确定后会执行这里, value为true或false, 表示点击"确定"或"取消"
            if (value) {
                storyThread = threads.start(function () {
                    threads.start(function () {
                        auto.waitFor();
                        app.launchApp(StoryPlateform);
                        toastLog("正在进入" + StoryPlateform + "......");
                        autoBrush(StoryPlateform, StoryName, StoryScreenSileTimes, ScreenSileTimesInterval, isShowConsole, isAutoSign);
                    });
                });
            } else {
            }
        });
    });
    ui.btnSaveConfig.click(function () {
        woolStorage.put("StoryPlateform", "" + ui.spStoryPlateform.getSelectedItem() + "");
        woolStorage.put("StoryName", "" + ui.txtStoryName.getText() + "");
        woolStorage.put("StoryScreenSileTimes", "" + ui.txtStoryScreenSileTimes.getText() + "");
        woolStorage.put("ScreenSileTimesInterval", "" + ui.txtScreenSileTimesInterval.getText() + "");
        woolStorage.put("IsAutoSign", "" + ui.switchIsAutoSign.isChecked() + "");
        woolStorage.put("isShowConsole", "" + ui.switchIsShowConsole.isChecked() + "");
        toast("自动刷配置保存成功!");
    });
}
//#endregion
//#endregion
//#region 业务方法
/**
 * 自动刷方法
 * @param {软件名} appName 
 * @param {阅读小说名} StoryName 
 * @param {翻页次数} StoryScreenSileTimes 
 * @param {翻页时间间隔} ScreenSileTimesInterval 
 * @param {是否显示控制台} isShowConsole 
 * @param {是否自动签到} isAutoSign 
 */
function autoBrush(appName, StoryName, StoryScreenSileTimes, ScreenSileTimesInterval, isShowConsole, isAutoSign) {
    threads.start(function () {
        if (isShowConsole) {
            console.show();
            console.setSize(device.width, device.height / 4);
        }
    });
    sleep(10000);
    adolescentWindows();
    if (isAutoSign) {
        sign(appName);
    }
    if (appName == '七猫免费小说') {
        try {
            if (className("android.widget.TextView").text("" + StoryName + "").exists()) {
                let b = className("android.widget.TextView").text("" + StoryName + "").findOnce().bounds();
                click(b.centerX(), b.centerY());
            } else {
                let bookList = className("android.widget.LinearLayout").find();
                if (bookList != null) {
                    bookList[2].click();
                }
            }
        } catch (e) { }
        for (var i = 1; i < StoryScreenSileTimes; i++) {
            toastLog("七猫免费小说滑动" + i + "次" + "总计:" + StoryScreenSileTimes + "次");
            swipe(device.width * 0.65, device.height * 0.05, device.width * 0.08, device.height * 0.05, 300);
            let times = parseInt(ScreenSileTimesInterval) * 1000;
            sleep(times);
        }
    } else if (appName == '番茄免费小说') {
        try {
            if (className("android.widget.RadioButton").text('书架').exists()) {
                let bookshelf = className("android.widget.RadioButton").text('书架').findOnce();
                bookshelf.click();
                sleep(2000);
                if (className("android.widget.TextView").text("" + StoryName + "").exists()) {
                    let b = className("android.widget.TextView").text("" + StoryName + "").findOnce().bounds();
                    click(b.centerX(), b.centerY());
                } else {
                    let booklist = className('android.view.ViewGroup').find();//查找到的所有ViewGroup
                    if (booklist != null) {
                        booklist[1].click();//第一本书的ViewGroup
                    }
                }
            }
        } catch (e) { }
        sleep(10000);
        for (var i = 1; i < StoryScreenSileTimes; i++) {
            toastLog("番茄免费小说滑动" + i + "次" + "总计:" + StoryScreenSileTimes + "次");
            swipe(device.width * 0.65, device.height * 0.5, device.width * 0.08, device.height * 0.5, 300);
            let times = parseInt(ScreenSileTimesInterval) * 1000;
            sleep(times);
        }
    } else if (appName == '疯读小说') {
        if (className("android.widget.TextView").text("" + StoryName + "").exists()) {
            let b = className("android.widget.TextView").text("" + StoryName + "").findOnce().bounds();
            click(b.centerX(), b.centerY());
        } else {
            let bookList=className("android.view.ViewGroup").find();
            if(bookList.length!=0){
                console.warn(bookList.length);
                bookList[1].click();
            }
        }
        for (var i = 1; i < StoryScreenSileTimes; i++) {
            toastLog("疯读小说滑动" + i + "次" + "总计:" + StoryScreenSileTimes + "次");
            swipe(device.width * 0.65, device.height * 0.05, device.width * 0.08, device.height * 0.05, 300);
            let times = parseInt(ScreenSileTimesInterval) * 1000;
            sleep(times);
        }
    }
}
/**
 * 小说签到
 * @param {平台名} appName 
 */
function sign(appName) {
    sleep(1000);
    if (appName == '七猫免费小说') {
        if (className("android.widget.TextView").text("福利").exists()) {
            let b = className("android.widget.TextView").text("福利").findOnce().bounds();
            click(b.centerX(), b.centerY());
        }
        sleep(3000);
        try {
            if (className("android.view.View").text("签到+20金币").exists()) {
                console.info("七猫免费小说。福利签到+20金币");
                className("android.view.View").text("签到+20金币").findOnce().click();
                recordSignTime(appName);
            } else if (className("android.view.View").text("已签到").exists()) {
                toastLog("已签到记录时间");
                className("android.view.View").text("已签到").findOnce().click();
                recordSignTime(appName);
            }
            if (className("android.view.View").text("立即签到").exists()) {
                className("android.view.View").text("立即签到").findOnce().click();
                recordSignTime(appName);
            }
            sleep(3000);
            recordSignTime(appName);//记录时间
            back();
            if (className("android.widget.TextView").text("书架").exists()) {
                let b = className("android.widget.TextView").text("书架").findOnce().bounds();
                click(b.centerX(), b.centerY());
            }
        } catch (e) { }
    } else if (appName == '番茄免费小说') {
        if (className("android.widget.RadioButton").text("福利").exists()) {
            console.log("番茄免费小说,点击福利");
            className("android.widget.RadioButton").text("福利").findOnce().click();
            sleep(3000);//福利页面加载很慢所以等一会
            recordSignTime(appName);
            if (className("android.widget.RadioButton").text("书架").exists()) {
                className("android.widget.RadioButton").text("书架").findOnce().click();
            }else{
                back();
            }
            sleep(2000);
        }
    } else if (appName == '疯读小说') {
        if (className("android.widget.TextView").text("我").exists()) {
            let b = className("android.widget.TextView").text("我").findOnce().bounds();
            click(b.centerX(), b.centerY());
        }
        sleep(3000);//特别慢得等一会
        if (className("android.widget.TextView").text("福利中心").exists()) {
            let b = className("android.widget.TextView").text("福利中心").findOnce().bounds();
            click(b.centerX(), b.centerY());
        }
        sleep(12000);//更慢
        if (className("android.widget.Button").text("继续").exists()) {
            let b = className("android.widget.TextView").text("继续").findOnce().click();
        }
        sleep(3000);
        if (className("android.view.View").text("去签到").exists()) {
            recordSignTime(appName);
            let b = className("android.view.View").text("去签到").findOnce().click();
        }
        recordSignTime(appName);
        back();
        if (className("android.widget.TextView").text("书架").exists()) {
            let b = className("android.widget.TextView").text("书架").findOnce().bounds();
            click(b.centerX(), b.centerY());
        }
        sleep(1000);//慢得等一会
    }
}
//#endregion
//#region 公共方法
/**
 * 输出Tosat和Info日志
 * @param {日志消息} messagge 
 */
function toastInfo(message) {
    toast(message);
    console.info(getTime() + "" + message);
}
/**
 * 输出Tosat和Error日志
 * @param {日志消息} messagge 
 */
function toastError(message) {
    toast(message);
    console.error(getTime() + "" + message);
}
function toastLog(message) {
    toast(message);
    console.log(getTime() + "" + message);
}
function toastWarn(message) {
    toast(message);
    console.warn(getTime() + "" + message);
}
/**
 * 记录App签到时间
 * @param {App名称} appName 
 */
function getSignTime(appName) {
    let key = appName + storaySign;
    let value = woolStorage.get(key);
    return value;
}
function Color(color) {
    return android.graphics.Color.parseColor(color);
}
function GradientDrawable(orientation, color) {
    var colors = [];
    color.forEach(color => colors.push(Color(color)));
    return new android.graphics.drawable.GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation[orientation], colors);
}
/**
 * 青少年窗口
 */
function adolescentWindows() {
    if (text("我知道了").exists()) {
        text("我知道了").findOnce().click();
    }
    if (text("知道了").exists()) {
        text("知道了").findOnce().click();
    }
}
/**
 * 记录App签到时间
 * @param {App名称} appName 
 */
function recordSignTime(appName) {
    let key = appName + storaySign;
    let value = getDate();
    woolStorage.put(key, value);
}
/**
 * 记录App一次运行的时间
 * @param {appName} appName 
 * @param {本次运行时间} recordTimes 
 */
function appRunTimeRecord(appName, recordTimes) {
    let key = appName + storaySign + getDate();
    var havedRunTimes = woolStorage.get("" + key + "");
    let value = "";
    if (havedRunTimes == null) {
        woolStorage.put(key, parseInt(recordTimes));
    } else {
        value = parseInt(havedRunTimes) + parseInt(recordTimes);
        woolStorage.put(key, value);
    }
}
/**
 * 秒转换成小时
 * @param {*} appCount 
 * @param {*} foreachCount 
 * @param {*} slideTimes 
 * @param {*} timesInterval 
 * @param {*} isExistsLongTimes 
 */
function computerTime(appCount, foreachCount, slideTimes, timesInterval, isExistsLongTimes) {
    let maxSecond = appCount * foreachCount * slideTimes * timesInterval;
    let maxHour = maxSecond / 3600;
    return Math.round(maxHour);
}
/**
 * 获取当前时间格式yyyyMMdd
 */
function getDate() {
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    if (month < 10) {
        month = "0" + month;
    };
    var day = date.getDate();
    if (day < 10) {
        day = "0" + day;
    };
    return year + "-" + month + "-" + day;
}
function getTime() {
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    if (month < 10) {
        month = "0" + month;
    };
    var day = date.getDate();
    if (day < 10) {
        day = "0" + day;
    };
    var hour = date.getHours();
    if (hour < 10) {
        hour = "0" + hour;
    };
    var minute = date.getMinutes();
    if (minute < 10) {
        minute = "0" + minute;
    };
    return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + "0";
};
//#endregion

 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
6月前
|
JavaScript Android开发
AutoJs4.1.0实战教程---js文件打包发布成APK文件
AutoJs4.1.0实战教程---js文件打包发布成APK文件
956 0
AutoJs4.1.0实战教程---js文件打包发布成APK文件
|
6月前
|
JavaScript Android开发
【问题篇】打包Vue-cli3创建的vue项目成App的apk文件
【问题篇】打包Vue-cli3创建的vue项目成App的apk文件
120 0
|
5月前
|
Android开发
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
275 0
|
6月前
|
Ubuntu Java Shell
反编译apk文件,得到其源代码的方法!!
反编译apk文件,得到其源代码的方法!!
105 1
|
6月前
|
JavaScript 前端开发 Android开发
Auto.js如何打包成APK文件
Auto.js如何打包成APK文件
|
6月前
|
Android开发
Android 高通平台集成无源码apk示例
Android 高通平台集成无源码apk示例
93 0
|
6月前
|
IDE 开发工具 Android开发
Android Studio 下发布项目成APK文件
Android Studio 下发布项目成APK文件
168 1
|
6月前
|
算法 数据库 Android开发
安卓逆向 -- APK文件结构
安卓逆向 -- APK文件结构
77 0
|
6月前
|
算法 Java Android开发
安卓逆向 -- 调用其他APK的SO文件
安卓逆向 -- 调用其他APK的SO文件
93 0
|
6月前
|
Android开发 开发者
Android Split APK介绍
【2月更文挑战第5天】