一处折腾笔记: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 ...
随机推荐
- Bézier surface(贝塞尔曲面)
Bézier surface(贝赛尔曲面) 贝塞尔曲面是一种用于计算机图形学.计算机辅助设计和有限元建模的数学样条.与贝塞尔曲线一样,贝塞尔曲面由一组控制点定义.与插值在许多方面相似,一个关键的区别是 ...
- pycharm 用远程环境时报错bash: line 0: cd: /home/tmp: No such file or directory
delete redundant path
- swift详解之十-------------异常处理、类型转换 ( Any and AnyObject )
异常处理.类型转换 ( Any and AnyObject ) 1.错误处理 (异常处理) swift 提供第一类错误支持 ,包括在运行时抛出 ,捕获 , 传送和控制可回收错误.在swift中 ,错误 ...
- 【简●解】POJ 1185,LG P2704【炮兵阵地】
POJ 1185,LG P2704[炮兵阵地] 状压经典入门. [传送门] POJ 1185 洛谷 P2704 [题目大意] 司令部的将军们打算在 \(N\times M\) 的网格地图上部署他们的炮 ...
- python对象销毁(垃圾回收)
Python 使用了引用计数这一简单技术来跟踪和回收垃圾. 在 Python 内部记录着所有使用中的对象各有多少引用. 一个内部跟踪变量,称为一个引用计数器. 当对象被创建时, 就创建了一个引用计数, ...
- hibernate中时间比较的小笔记
// 开单时间 if (!"".equals(startDate) && startDate != null) { queryCondition = queryCo ...
- Golang 编写 Tcp 服务器
Golang 作为广泛用于服务端和云计算领域的编程语言,tcp socket 是其中至关重要的功能.无论是 WEB 服务器还是各类中间件都离不开 tcp socket 的支持. Echo 服务器 拆包 ...
- C++中的左移、右移运算
移位运算包含“逻辑移位”(logical shift)和“算术移位”(arithmetic shift). 逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0 填充. 算术移位:移出去的位 ...
- hexo干货系列:(三)hexo的Jacman主题优化
前言 上一篇介绍了Jacman主题的安装和配置,今天根据上次的基础做了些优化,让博客看起来很舒服. 正文 首页文章展示摘要 该主题首页文章列表默认是全部展开,感觉不好,我关闭掉了,只展示少量摘要. 修 ...
- POJ 2513 无向欧拉通路+字典树+并查集
题目大意: 有一堆头尾均有颜色的木条,要让它们拼接在一起,拼接处颜色要保证相同,问是否能够实现 这道题我一开始利用map<string,int>来对颜色进行赋值,好进行后面的并查操作以及欧 ...