概要
autoxjs开发中可以通过ui模块,来开发apk,可以打包安卓,本文主要分享如何通过代码实现小红书apk;
代码
参考了牙叔教程
"ui";
//主要方法参考牙叔教程
importClass(android.webkit.WebChromeClient);
importClass("com.stardust.autojs.core.web.InjectableWebClient");
/* -------------------------------------------------------------------------- */
let sScriptEngine = engines.myEngine();
let scriptableContext = sScriptEngine.context;
let scriptableScriptable = sScriptEngine.scriptable;
let injectableWebClient = new InjectableWebClient(scriptableContext, scriptableScriptable);
/* -------------------------------------------------------------------------- */
const url = "https://www.xiaohongshu.com/explore";
ui.layout(
<linear w="*" h="*">
<webview id="webview" h="*" w="*" />
</linear>
);
let webview = ui.webview;
let settings = webview.getSettings();
//修改小红书agent,参考https://blog.csdn.net/freak_csh/article/details/88854455
var myAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0";
settings.setUserAgentString(myAgent);
context.resources.configuration.orientation = 0
var customView, customViewCallback;
var webcc = new JavaAdapter(WebChromeClient, {
onConsoleMessage: function (consoleMessage) {
//log("控制台:" + consoleMessage.message());
},
onReceivedTitle: function (view, title) {
if (title != null) {
//log("标题:" + title);
webview.injectionJsBridge();
webview.setWebChromeClient(webcc);
webview.setWebViewClient(injectableWebClient);
jsCmd();
} else {
toastLog("title is null");
}
},
onShowCustomView: function (view, callback) {
if (customView) {
callback.onCustomViewHidden();
return;
}
customView = view;
customViewCallback = callback;
ui.setContentView(customView)
},
onHideCustomView: function () {
if (!customView) {
return;
}
customViewCallback.onCustomViewHidden();
customViewCallback = null;
ui.layout(
<linear w="*" h="*">
<webview id="webview" h="*" w="*" />
</linear>
);
webview = ui.webview;
webview.setWebChromeClient(webcc);
webview.setWebViewClient(injectableWebClient);
settings = webview.getSettings();
settings.setUserAgentString(myAgent);
webview.loadUrl(url);
jsCmd();
}
});
webview.setWebChromeClient(webcc);
webview.setWebViewClient(injectableWebClient);
//改你要访问的页面url
webview.loadUrl(url);
jsCmd();
function jsCmd() {
ui.post(function () {
var js = 'try{document.querySelector("#link-guide").innerHTML=""}catch(e){}';
injectableWebClient.inject(js);
}, 1000);
}
代码解析
onShowCustomView 是用来全屏视频用的, ui.setContentView 就会把视频的view替换掉原来的。 onHideCustomView在退出全屏时,重新创建webview,再添加进去。
settings.setUserAgentString(myAgent);这个是改变请求头,模拟浏览器的请求,因为如果请求头是安卓,他的页面会提示你要去下载app。