uniapp开发原生android插件,获取浏览器cookie
由于想让app打开一个url登录后获取cookie调用接口,使用plus.navigator.getCookie获取cookie为空,只能想办法使用android原生组件了。
参考:Android uni-app原生插件开发文档
一.下载SDK
1.解压
2.使用Android Studio导入UniPlugin-Hello-AS项目
项目包括
- app模块(主要用于测试插件)
- uniplugin_richalert模块(自带插件的示例)
二.创建自己的插件
- 使用Android Studio选择File->New->New Module->Android Library创建模块
- 修改build.gradle可参照uniplugin_richalert模块复制
- 打开Open Module Settings修改Compile Sdk Version为28,个人使用29编译报错
- 创建WXSDKEngine.DestroyableModule派生类编写交互代码,可打开新Activity使用WebView组件监听cookie
- 使用WXSDKEngine.DestroyableModule.mWXSDKInstance.fireModuleEvent触发监听
三.运行
- 打开app模块
- 在build.gradle下追加implementation project(’:插件名’)
- 修改assets/dcloud_uniplugins.json文件,参照uniplugin_richalert配置
- 将assets/apps/下文件删除,替换为自己的uniapp编译文件
- 修改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相关推荐
- android中获取网页cookie的工具方法
1.应用场景 我自己的应用场景是,做一个股票分时图控件demo,需要抓取同花顺网站上的分时图数据,但是这个分时图数据的链接做了cookie校验,直接用httpurlconnection访问,返回403 ...
- 【web开发】利用User-Agent获取浏览器类型
今晚学了User-Agent简称UA.通过这个请求头可以获取浏览器的类型. String userAgent = request.getHeader("User-Agent");S ...
- Uni-app开发App和插件以后如何开通广告盈利:uni-AD
Uni-app 作为近些年国内逐渐兴起的跨平台开发架构,一次开发就可以完成小程序.iOS APP.安卓 APP. H5等平台的打包是受到关注的原因.于此同时,很多开发者也开始关注Uni-app架构之外 ...
- uniapp开发——微信小程序获取上传图片的拍摄时间(附源码)
如果是单纯地使用uniapp做app或者h5开发,可以直接在上传的时候 uni.chooseImage 获取到图片的最后修改日期,那么可以使用其作为拍摄日期. 但是,一切的一切都源于微信小程序的接口封 ...
- Uniapp 与原生android的交互 和简单配置
1.unipp跳转android界面 jsCallNativeActivity() {// #ifdef APP-PLUS//获取宿主上下文var main = plus.android.runtim ...
- 安卓图形化开发!Android插件化主流框架和实现原理,值得收藏!
前言 先介绍一下自己吧,不是什么二本渣校也不是什么非专业.我就是重点大学毕业,大学学的是Java,我个人比较乐于学习于是自学Android一年.趁着这次疫情,大洗牌我凭借天生优势,--聪明的脑袋以及自 ...
- 安卓获取浏览器上网记录_在android中获取浏览器历史记录和搜索结果
我试图从Android浏览器获取历史记录和搜索结果. 在下面的代码中,我得到了所有书签,它们很有用: public void getBrowser(){ String[] requestedColum ...
- uni-app开发微信小程序获取位置信息并且计算距离
一.uniapp项目 打开uniapp项目的配置文件manifest.json,选择"源码视图". /* 小程序特有相关 */ "mp-weixin": {&q ...
- uniapp开发的android项目,页面置灰
因为uniapp在app的开发的时候有逻辑层和视图层的区分,所有在逻辑层里无法直接操作dom节点, 所有引入renderjs 首先在页面标签里添加对renderjs的调用 在逻辑层的 data里定义变 ...
- Android uni-app 封装原生插件
前言 据广大用户的需求,需要把我们anyRTC的SDK,封装到uni-app来使用,并且实现音视频通话.这边文章图文讲解一下怎么封装原生插件,并且在下一章uni-app实现音视频通话. anyRTC开 ...
最新文章
- SecureCRT 端口转发连接服务器
- 比较String、StringBuffer和StringBuilder
- delphi mysql dll直接_十万火急!!!那位高手用过libmysql.dll直接连接MySql数据库?如何将二进制文件保存到blob字段中? (60分)...
- 2017\National _C_C++_C\4.小数第n位
- UML 中各种图形重要性的排行
- ubuntu的codelite中代码运行后出现/usr/bin/codelite_exec: 22: /usr/bin/codelite_exec
- 【数字逻辑设计】卡诺图
- Hibernate之Session merge与update方法
- emmc linux 识别分区_EMMC芯片电视主板直写厂家引导程序
- 模型驱动开发 - 产品线架构的演进
- liferay控制面板--网页内容时间不一致问题解决思路
- 基于Nonebot框架的QQ机器人词库生成器
- sap linux 安装教程,Ubuntu Linux 下安装Sapgui740
- 关于md导入时本地图片外链失败的解决方法
- html入门教程推荐,html入门教程:8个html零基础入门教程推荐
- 学习python的第二周 第一天
- 使用matlab将nc文件转成tif文件
- SQL优化的详细步骤及工具的使用
- 云米、品钛、趣店等中概股领跌,多家公司股价创历史新低
- 第1章 数字图像处理绪论
热门文章
- 一个完美网站的101项指标.第二部分.内容为王
- 管家婆辉煌 经营历程 Date exceeds maximum of 19-12-31 报错解决办法
- 自动量程万用表的实现原理_万用表的工作原理是怎样的?看完终于懂了
- 免费分享:9本产品经理书籍,腾讯创业内幕,敏捷武士,交互设计沉思录,谷歌和亚马逊如何做产品,口碑:引爆网络狂欢效应的锦囊妙计
- java网上购物系统_Java Web 应用教程——网上购物系统的实现
- Widevine DRM介绍
- 迅雷mac版精简教程
- 档案目录管理--chmod
- Windows下让Tomcat6定时重启服务的方法
- win和linux同步文件,Linux和windows系统文件的实时同步