一处折腾笔记: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 ...
随机推荐
- zabbix实现自动发现功能添加磁盘监控
zabbix实现对磁盘动态监控 - Lenwood 原文 http://www.cnblogs.com/baizhantang/p/3253246.html 主题 Linux命令 zabbix 前言 ...
- Opencascade 选择器算法
算法的阶段 该算法包括预处理和三个主要阶段. 使用深度优先搜索逐层遍历所有对象 . 预处理 计算平截头体及其主要特征的计算. 第一阶段 - 遍历第一级BVH树 在成功构建选择平截头体之后,算法开始遍历 ...
- 解决 【xshell 5 不能使用退格键和Delete建】的问题
###按照图片操作即可 1,打开[文件],选择[打开]选项 2.在会话中,打开[属性] 3.点击左边[终端]下的[键盘]选项,按照如下设置 即可.
- 【JDBC-MVC模式】开发实例
JDBC - 开发实例-MVC模式 1. 在web.xml中配置连接数据库的信息 web.xml: <context-param> <param-name>server< ...
- 第五章:C++程序的结构
主要内容: 1.作用域与可见性 2.对象的生存期 3.数据与函数 4.静态成员 5.共享数据的保护 6.友元 7.编译预处理命令 8.多文件结构和工程 作用域:函数原型作用域.块作用域.类作用域.文件 ...
- perl学习之:use and require
本文和大家重点学习一下Perl use和require用法对比,这两个函数都是一个意思,加载和引用Perl的模块,或者是子程序,区别在于Perl use是在当前默认的里面去寻找,一旦模块不在指定的区域 ...
- UVALive 2957 Bring Them There
Bring Them There Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVALive. O ...
- 78. Spring Boot完美使用FastJson解析JSON数据【从零开始学Spring Boot】
[原创文章,转载请注明出处] 个人使用比较习惯的json框架是fastjson,所以spring boot默认的json使用起来就很陌生了,所以很自然我就想我能不能使用fastjson进行json解析 ...
- [BZOJ4207]Can
[BZOJ4207]Can 试题描述 这个问题是源于一个在棋盘上玩的,由Sid Sackson设计的名叫Can't stop的游戏的.这个问题与Can't stop有一定的相似之处,但是不需要玩过Ca ...
- _063_Android_Android内存泄露
深入内存泄露 Android应用的内存泄露,其实就是java虚拟机的堆内存泄漏. 当然,当应用有ndk,jni时,没有及时free,本地堆也会出现内存泄漏. 本文只是针对JVM内存泄漏应用,进行阐述分 ...