监听 toast 弹出内容如何监听?

我尝试

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


toast("测试")
toast("测试")
toast("测试")
toast("测试")
toast("测试")
setInterval(() => { }, 1000);

失败!!!!

在autox.js中,如果你想要监听一个Toast弹出的内容,可以通过hook系统API的方式来实现。你可以使用autox.js提供的interceptor方法来拦截Toast的调用,并获取Toast的内容。

以下是一个示例代码,演示如何使用autox.js拦截Toast并获取弹出的内容:

var toastInterceptor = Java.use("android.widget.Toast$TN").show.overload();
toastInterceptor.implementation = function() {
    var toast = arguments[0];

    var toastMessage = "";
    var textView = toast.getView().findViewById(android.R.id.message);
    if (textView) {
        toastMessage = textView.getText().toString();
    }

    // 在这里处理toastMessage的内容,可以打印、保存、发送等操作
    console.log("Toast内容: " + toastMessage);

    // 调用原始的Toast.show()方法,保持正常的Toast弹出行为
    this.show.apply(this, arguments);
};

上述代码通过hook android.widget.Toast$TN.show() 拦截Toast,并获取Toast的内容,并在控制台(console)中打印出来。你可以根据自己的需求,对获取的内容进行进一步的处理和操作。

需要注意的是,为了使用Java的API,在autox.js中需要使用Java.use()方法来获取Java类,并利用interceptor机制来实现方法的重写。

希望这个示例对你有帮助。如果有其他问题,欢迎随时提问!