由于想让app打开一个url登录后获取cookie调用接口,使用plus.navigator.getCookie获取cookie为空,只能想办法使用android原生组件了。
参考:Android uni-app原生插件开发文档

一.下载SDK
1.解压
2.使用Android Studio导入UniPlugin-Hello-AS项目
项目包括

  • app模块(主要用于测试插件)
  • uniplugin_richalert模块(自带插件的示例)

二.创建自己的插件

  1. 使用Android Studio选择File->New->New Module->Android Library创建模块
  2. 修改build.gradle可参照uniplugin_richalert模块复制
  3. 打开Open Module Settings修改Compile Sdk Version为28,个人使用29编译报错
  4. 创建WXSDKEngine.DestroyableModule派生类编写交互代码,可打开新Activity使用WebView组件监听cookie
  5. 使用WXSDKEngine.DestroyableModule.mWXSDKInstance.fireModuleEvent触发监听

三.运行

  1. 打开app模块
  2. 在build.gradle下追加implementation project(’:插件名’)
  3. 修改assets/dcloud_uniplugins.json文件,参照uniplugin_richalert配置
  4. 将assets/apps/下文件删除,替换为自己的uniapp编译文件
  5. 修改assets/data/dcloud_control.xml修改为自己的appid

模块部分代码


public class MBrowserModule  extends WXSDKEngine.DestroyableModule{public static BrowserActivity browserActivity;@JSMethod(uiThread = true)public void open(JSONObject options, JSCallback jsCallback){String url = options.getString("url");Object initCookieObj = options.get("initCookie");boolean initCookie = false;try{initCookie = Boolean.parseBoolean(initCookieObj.toString());}catch (Exception e){}System.out.println(url);Context context = this.mWXSDKInstance.getContext();Intent intent = new Intent(context, BrowserActivity.class);intent.putExtra("url",url);intent.putExtra("initCookie",initCookie);MyWebViewClient.setMyWebViewClient(new MyWebViewClient(){@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {return false;}@Overridepublic boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request){return false;}@Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);String cookie =  CookieManager.getInstance().getCookie(url);JSONObject jsonObject = new JSONObject();jsonObject.put("url",url);jsonObject.put("cookie",cookie);MBrowserModule mBrowserModule = MBrowserModule.this;MBrowserModule.this.mWXSDKInstance.fireModuleEvent("pageChange",mBrowserModule,jsonObject);}});context.startActivity(intent);}@JSMethod(uiThread = true)public void close(){if(browserActivity!=null){browserActivity.finish();}}@Overridepublic void destroy() {}
}

用原生插件写的贴吧签到工具,登录账号,获取cookie调用接口

链接:https://pan.baidu.com/s/1Ig2VK8qJoQbeZFmX-fiNEQ 提取码:sdwf

案例

链接: https://pan.baidu.com/s/1E7GGuSUsPOds3QSmY0Iv1Q提取码: grvs 下载插件

openBrowser(){const wv = uni.requireNativePlugin('mbrowser')try{wv.addEventListener('pageChange',e=>{console.log(e)})wv.open({initCookie:true,url:'https://taobao.com'})}catch(e){uni.showModal({showCancel:false,content:JSON.stringify(e)})}
}

uniapp开发原生android插件,获取浏览器cookie相关推荐

  1. android中获取网页cookie的工具方法

    1.应用场景 我自己的应用场景是,做一个股票分时图控件demo,需要抓取同花顺网站上的分时图数据,但是这个分时图数据的链接做了cookie校验,直接用httpurlconnection访问,返回403 ...

  2. 【web开发】利用User-Agent获取浏览器类型

    今晚学了User-Agent简称UA.通过这个请求头可以获取浏览器的类型. String userAgent = request.getHeader("User-Agent");S ...

  3. Uni-app开发App和插件以后如何开通广告盈利:uni-AD

    Uni-app 作为近些年国内逐渐兴起的跨平台开发架构,一次开发就可以完成小程序.iOS APP.安卓 APP. H5等平台的打包是受到关注的原因.于此同时,很多开发者也开始关注Uni-app架构之外 ...

  4. uniapp开发——微信小程序获取上传图片的拍摄时间(附源码)

    如果是单纯地使用uniapp做app或者h5开发,可以直接在上传的时候 uni.chooseImage 获取到图片的最后修改日期,那么可以使用其作为拍摄日期. 但是,一切的一切都源于微信小程序的接口封 ...

  5. Uniapp 与原生android的交互 和简单配置

    1.unipp跳转android界面 jsCallNativeActivity() {// #ifdef APP-PLUS//获取宿主上下文var main = plus.android.runtim ...

  6. 安卓图形化开发!Android插件化主流框架和实现原理,值得收藏!

    前言 先介绍一下自己吧,不是什么二本渣校也不是什么非专业.我就是重点大学毕业,大学学的是Java,我个人比较乐于学习于是自学Android一年.趁着这次疫情,大洗牌我凭借天生优势,--聪明的脑袋以及自 ...

  7. 安卓获取浏览器上网记录_在android中获取浏览器历史记录和搜索结果

    我试图从Android浏览器获取历史记录和搜索结果. 在下面的代码中,我得到了所有书签,它们很有用: public void getBrowser(){ String[] requestedColum ...

  8. uni-app开发微信小程序获取位置信息并且计算距离

    一.uniapp项目 打开uniapp项目的配置文件manifest.json,选择"源码视图". /* 小程序特有相关 */ "mp-weixin": {&q ...

  9. uniapp开发的android项目,页面置灰

    因为uniapp在app的开发的时候有逻辑层和视图层的区分,所有在逻辑层里无法直接操作dom节点, 所有引入renderjs 首先在页面标签里添加对renderjs的调用 在逻辑层的 data里定义变 ...

  10. Android uni-app 封装原生插件

    前言 据广大用户的需求,需要把我们anyRTC的SDK,封装到uni-app来使用,并且实现音视频通话.这边文章图文讲解一下怎么封装原生插件,并且在下一章uni-app实现音视频通话. anyRTC开 ...

最新文章

  1. SecureCRT 端口转发连接服务器
  2. 比较String、StringBuffer和StringBuilder
  3. delphi mysql dll直接_十万火急!!!那位高手用过libmysql.dll直接连接MySql数据库?如何将二进制文件保存到blob字段中? (60分)...
  4. 2017\National _C_C++_C\4.小数第n位
  5. UML 中各种图形重要性的排行
  6. ubuntu的codelite中代码运行后出现/usr/bin/codelite_exec: 22: /usr/bin/codelite_exec
  7. 【数字逻辑设计】卡诺图
  8. Hibernate之Session merge与update方法
  9. emmc linux 识别分区_EMMC芯片电视主板直写厂家引导程序
  10. 模型驱动开发 - 产品线架构的演进
  11. liferay控制面板--网页内容时间不一致问题解决思路
  12. 基于Nonebot框架的QQ机器人词库生成器
  13. sap linux 安装教程,Ubuntu Linux 下安装Sapgui740
  14. 关于md导入时本地图片外链失败的解决方法
  15. html入门教程推荐,html入门教程:8个html零基础入门教程推荐
  16. 学习python的第二周 第一天
  17. 使用matlab将nc文件转成tif文件
  18. SQL优化的详细步骤及工具的使用
  19. 云米、品钛、趣店等中概股领跌,多家公司股价创历史新低
  20. 第1章 数字图像处理绪论

热门文章

  1. 一个完美网站的101项指标.第二部分.内容为王
  2. 管家婆辉煌 经营历程 Date exceeds maximum of 19-12-31 报错解决办法
  3. 自动量程万用表的实现原理_万用表的工作原理是怎样的?看完终于懂了
  4. 免费分享:9本产品经理书籍,腾讯创业内幕,敏捷武士,交互设计沉思录,谷歌和亚马逊如何做产品,口碑:引爆网络狂欢效应的锦囊妙计
  5. java网上购物系统_Java Web 应用教程——网上购物系统的实现
  6. Widevine DRM介绍
  7. 迅雷mac版精简教程
  8. 档案目录管理--chmod
  9. Windows下让Tomcat6定时重启服务的方法
  10. win和linux同步文件,Linux和windows系统文件的实时同步