一处折腾笔记:Android内嵌html5加入原生微信分享的解决的方法
有一段时间没有瞎折腾了。
这周一刚上班萌主过来反映说:微信里面打开聚客宝。分享功能是能够的(这里是用微信自身的js-sdk实现的)。可是在android应用里面打开点击就没反应了;接下来狡猾的丁丁在产品群里AT我说:偶们的产品设计不是一直都被技术给反压制住么?真是气死,呵呵。自己刚好有空又有兴趣,于是研究了下。没曾想竟也研究出来了。事后我对整个操作过程整理了下,方便他人也提升自己。
假设是在android操作系统下而且是在微信浏览器的,就运行原本微信自带的js-sdk分享;假设是在android操作系统下可是不在微信浏览器的,就运行原生的微信分享。
在js里面我们能够通过android与js之间的js交互接口,将js请求传递给android的代码中,这个请求至少须要传递分享的图文的链接地址、分享的缩略图的网址、分享窗体的标题、分享的内容四个參数,android那边接到请求后。获取到这四个參数。并运行弹出分享窗体的操作。我们在这个操作里面仅仅管调用方法和对參数赋值。至于剩下的实现细节则交给微信去处理,我们不用关心。
比方别人叫“腾讯新闻”的申请过了,即便你的应用也叫“腾讯新闻”,你也无法申请这个名字,另一点这个名字是能够在微信分享的时候显示在左下角的,相当于是应用的标识)、移动应用简单介绍(写一段简短的语句介绍你的应用。无实际意义可是必填)、移动应用的图片将准备的28*28和108*108的logo图片上传上去(这个小图片也是在分享的时候能够显示在左下角的);
这里注意,应用签名和应用包名非常重要!千万不要写错。
这里我们记录下生成的应用的AppKey。后面会用到。
/**
* 弹出微信分享的窗体
* @param shareUrl 分享的图文链接的地址
* @param shareImageUrl 分享的缩略图的地址
* @param shareTitle 分享的窗体标题
* @param shareContent 分享的文字内容
*/
private void showShare(String shareUrl,String shareImageUrl,String shareTitle,String shareContent) {
ShareSDK.initSDK(this);
OnekeyShare oks = new OnekeyShare();
//关闭sso授权
oks.disableSSOWhenAuthorize(); // 分享时Notification的图标和文字 2.5.9以后的版本号不调用此方法
//oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name));
// title标题。印象笔记、邮箱、信息、微信、人人网和QQ空间使用
//oks.setTitle(getString(R.string.share));
oks.setTitle(shareTitle);
// titleUrl是标题的网络链接。仅在人人网和QQ空间使用
oks.setTitleUrl(shareUrl);
// text是分享文本。全部平台都须要这个字段
oks.setText(shareContent);
// imagePath是图片的本地路径。Linked-In以外的平台都支持此參数
//oks.setImagePath("/sdcard/test.jpg");//确保SDcard以下存在此张图片
//oks.setImagePath(shareImageUrl);//当分享的图片是来自互联网的时候,这一行代码要凝视掉,否则会被覆盖掉--yuxinwei
oks.setImageUrl(shareImageUrl); // url仅在微信(包含好友和朋友圈)中使用
oks.setUrl(shareUrl);
// comment是我对这条分享的评论,仅在人人网和QQ空间使用
oks.setComment("");
// site是分享此内容的站点名称,仅在QQ空间使用
oks.setSite(getString(R.string.app_name)); // 启动分享GUI
oks.show(this);
}
<ShareSDK AppKey = "725ba30XXXXX"/> <!-- 改动成你在mob后台注冊的应用的appkey"-->
Id="4"
SortId="4"
AppId="wxd39f588142bXXXXX"
AppSecret="c362a62161fc87b12a5d23477a2XXXXX"
BypassApproval="false"
Enable="true" /> <WechatMoments
Id="5"
SortId="5"
AppId="wxd39f588142bXXXXX"
AppSecret="c362a62161fc87b12a5d23477a2XXXXX"
BypassApproval="false"
Enable="true" />
调试时候显示的效果基本例如以下图所看到的
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
一处折腾笔记:Android内嵌html5加入原生微信分享的解决的方法的更多相关文章
- Android 内嵌 HTML5 并进行交互
Android与HTML5的交互主要是两个部分, 与HTML5的交互以及与JavaScript的交互, 与HTML5的交互可以通过注册onclick事件转化为与JavaScript的交互 Androi ...
- cocos2d-x调用android内嵌浏览器打开网页
cocos2d-x调用android内嵌浏览器打开网页,能够从入口传入网址,C++调用android 的api就可以实现. 方法也非常easy 1. 改动"cocos2dx\platform ...
- logstash nested内嵌字段 field protobuf解码 codec 的解决办法
logstash nested内嵌字段 field protobuf解码 codec 的解决办法 主要需求 logstash-codec 下https://www.elastic.co/guide/e ...
- Android内嵌网页webview点击其中的链接跳转到我们应用内的Activity
在一个大的Android项目中,由于客户端来不及更新和实现,经常会内嵌一些网页(在一些大型的互联网公司,PC的产品总是跑在客户端的前面),比如活动页面,通常可以内嵌用html5实现的页面,可以适配手机 ...
- PDF笔记:内嵌字体
前几天投文章的时候,把docx文件保存为PDF提交.但是格式检查始终在报一个关于“font embed”的错误,意思是PDF文件中有些字体没有内嵌. 为了减小文件大小,WORD保存为PDF的时候默认不 ...
- android内嵌H5页(webview)如何定位
一.切换至webview后再定位元素 (1)获取页面上下文 contexts = driver.contexts (2)切换至webview driver.switch_to.context(cont ...
- 让Easy UI 的DataGrid直接内嵌的JSON对象,并重写form load 方法
前言 我有这样的JSON对象 { "UserName": "jf", "UserPwd": "123456", &quo ...
- Android:用签名打包后微信分享失效
刚开始使用微信分享,申请的微信appid也可以在直接使用,分享成功! 当我使用自己的签名打包分享时却分享失败,一闪而过,好郁闷的说,为什么之前没有打包就可以,签名打包后就不可以了... 开始查找各种资 ...
- Android 使用XML隐藏ActionBar中遇错的解决的方法
今天我在使用Menifest.xml让程序隐藏标题栏是一直出错.主要内容是: You need to use a theme.AppCompat theme(descendant) with this ...
随机推荐
- mysql登录(linux)
一.修改配置文件 查询路径 find / -name my.cnf 修改文件 vi my.cnf [mysqld]下面加上skip-grant-tables 二.登录数据库 重启mysql servi ...
- 批处理 更新 svn git hg
@echo off Setlocal enabledelayedexpansion ::CODER BY Administrator POWERD BY iBAT 1.6 ::设置svn默认安装位置以 ...
- Java中的类加载器--Class loader
学习一下Java中的类加载器,这个是比较底层的东西,好好学习.理解一下. 一.类加载器的介绍 1.类加载器:就是加载类的工具,在java程序中用到一个类,java虚拟机首先要把这个类的字节码加载到内 ...
- 自定义tableView通用MVC设计
- Sqlserver添加加字段、删除字段、修改字段类型、修改字段名、修改字段默认值
参考:https://www.cnblogs.com/pangpanghuan/p/6432331.html 初始化表: --.添加字段 --1.1.为null alter table DataTab ...
- Installing MySQL 5.7.23 on CentOS 7
Installing MySQL 5.7.23 on CentOS 7 1. 安装前检查 1.1 检查NUMA是否开启 NUMA为什么要咋MySQL中禁用? MySQL是单进程多线程架构数据库,当nu ...
- 简单的自动化使用--使用selenium实现学习通网站的刷慕课程序。注释空格加代码大概200行不到
简单的自动化使用--使用selenium实现学习通网站的刷慕课程序.注释空格加代码大概200行不到 相见恨晚啊 github地址 环境Python3.6 + pycharm + chrom浏览器 + ...
- JSTL标签判断list是否为空
jsp页面判断获得action传的list的是否为空或者list.size的长度,就可以用fn这个标签: <c:if test="${list== null || fn:length( ...
- Educational Codeforces Round 50 (Rated for Div. 2)的A、B、C三题AC代码
A题链接:https://codeforces.com/contest/1036/problem/A A题AC代码: #include <stdio.h> #include <std ...
- Centos7 中Nginx的安装与配置
安装与配置 1.安装nginx yum intsall nginxsudo systemctl start nginx 启动服务sudo firewall-cmd --permanent --zone ...