autoxjs嵌套小红书app

概要

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值