最新一键热更新启动界面Autojs源码

// 此代码由autojs开发交流群整理提供,如有侵权,请联系我删除! 

"ui";
importClass(android.view.View);
//设置状态栏为透明
ui.statusBarColor(colors.TRANSPARENT);
startUI();

function startUI() {
    ui.layout(
        <frame>
            <img id="advertising" scaleType="fitXY" src="file://./res/background.jpg" />
            <vertical id="skip" w="90" h="auto" bg="#00000000" margin="0 {
   
   {getNavigationBarHeight()}}px 15 0" layout_gravity="right" >
                <card w="*" h="*" cardCornerRadius="3dp" cardElevation="0dp" cardBackgroundColor="#55000000" >
                    <horizontal gravity="center" >
                        <text id="countdown" textSize="13" layout_gravity="center" textColor="#ffffff" />
                        <View bg="#778899" w="1" h="20" margin="5" layout_gravity="center_vertical"/>
                        <img w="20" h="20" padding="0" src="@drawable/ic_clear_black_48dp" tint="#ffffff" layout_gravity="center"/>
                    </horizontal>
                </card>
            </vertical>
            <vertical w="*" h="{
   
   {Math.floor(getNavigationBarHeight() * 3.5)}}px" bg="#66987654" layout_gravity="bottom">
                <horizontal h="*" gravity="center" >
                    <img src="file://./res/icon.png" w="60" h="60" scaleType="fitXY" radius="10"/>
                    <vertical gravity="center" margin="15 0">
                        <text text="{
   
   {getAppName()}}" w="auto" h="auto" textSize="24" textColor="#ffffff" textStyle="bold" />
                        <text text="version: {
   
   {app.versionName}}" w="auto" h="auto" textSize="16" textColor="#ffffff"/>
                    </vertical>
                </horizontal>
            </vertical>
        </frame>
    )
}

//透明状态栏{沉浸模式}
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

//线程启动倒计时
threads.start(function() {
    if (CheckFd()) {
        toastLog("请关闭vpn/代理,重新打开");
        exit();
    } else {
        getNetwork();
    }
    var time = 3;
    if (getNetwork()) {
        while (time >= 0) {
            ui.post(() => {
                ui.countdown.setText("等待" + time + "秒");
                time--;
            })
            if (time <= 0) {
                SkipStartPage();
            }
            sleep(1000)
        }
    }
})

//跳转广告页或第三方应用
ui.advertising.on("click", () => {
    app.openUrl("zwk365.com")
    threads.shutDownAll()
})

//当用户回到本界面时,resume事件会被触发,避免卡在启动页
ui.emitter.on("resume", function() {
    SkipStartPage();
});

//跳过等待页面
ui.skip.on("click", () => {
    threads.shutDownAll()
    SkipStartPage();
})

//跳过启动页/在这里修改下一步要运行的脚本路径
function SkipStartPage() {
    engines.execScriptFile("./一键热更新登录界面.js");
    ui.finish()
}

//获取状态栏高度
function getNavigationBarHeight() {
    var navigationBarHeight = 0;
    var rid = context.getResources().getIdentifier("config_showNavigationBar", "bool", "android");
    if (rid != 0) {
        var resourceId = context.getResources().getIdentifier("navigation_bar_height", "dimen", "android");
        navigationBarHeight = context.getResources().getDimensionPixelSize(resourceId);
    }
    return navigationBarHeight;
}

//获取当前App应用名字
function getAppName() {
    var packageManager = context.getPackageManager();
    var applicationInfo = packageManager.getApplicationInfo(context.getPackageName(), 0);
    return packageManager.getApplicationLabel(applicationInfo);
}

//判断当前网络是否可用
function getNetwork() {
    importClass(android.net.ConnectivityManager);
    var cm = context.getSystemService(context.CONNECTIVITY_SERVICE);
    var net = cm.getActiveNetworkInfo();
    if (net == null || !net.isAvailable()) {
        toastLog("当前网络不可用,请检查网络链接状态");
        exit();
    } else {
        return true;
    }
}

//检测抓包fd
function CheckFd() {
    try {
        var niList = java.net.NetworkInterface.getNetworkInterfaces();
        if (niList) {
            var VPN;
            var arry = java.util.Collections.list(niList).toArray()
            for (ary = 0; ary < arry.length; ary++) {
                if (!arry[ary].isUp() || arry[ary].getInterfaceAddresses().size() == 0) {
                    continue;
                }
                if (arry[ary].getName().search("tun0") !== -1 || arry[ary].getName().search("ppp0") !== -1) {
                    VPN = true;
                    return true
                } else {
                    VPN = false
                }
            }
            return VPN
        }
    } catch (error) {}
}

//让返回键失效
var Liuyun_back = false;
ui.emitter.on("back_pressed", e => {
    if (!Liuyun_back) {
        Liuyun_back = false;
        e.consumed = true;
    } else {
        e.consumed = false;
    };
});

猜你喜欢

转载自blog.csdn.net/m0_55125030/article/details/118499198
今日推荐