一处折腾笔记: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 ...
随机推荐
- 「LibreOJ β Round #3」绯色 IOI(抵达)
[题解] 我们可以发现叶子节点的关联点一定是它的父亲节点,那么我们dfs一遍就可以求出所有节点的关联点,或者判断出无解. 对于每个点i,它的关联点u的危险度肯定比它连接的其他点vi的危险度小,我们从u ...
- DEV Express中ImageCollection的使用
1, ImageCollection作为窗体组件的一种,位于Components分类下,拖进窗体以后,显示在界面的底部. 2, 注意ImageCollection的Imag ...
- luogu1447 [NOI2010]能量采集
考虑暴力,答案显然是 \(\sum_{i=1}^n\sum_{j=1}^m(2(\gcd(i,j)-1)+1)=\sum_{i=1}^n\sum_{j=1}^m(2\gcd(i,j)-1)\). 考虑 ...
- jenkins里跑selenium webdriver,Chrome浏览器不能打开&&unknown error: unable to discover open pages
在windows的cmd里面执行 “python test.py”,毫无问题,浏览器正常打开,测试结果也正常. 问题: 但如果是在jenkins里,选择 “execute windows batch ...
- UVA10200-Prime Time/HDU2161-Primes,例题讲解,牛逼的费马小定理和欧拉函数判素数。
10200 - Prime Time 此题极坑(本菜太弱),鉴定完毕,9遍过. 题意:很简单的求一个区间 ...
- NYOJ-104最大和(动归题)及连续最大和核心
最大和 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩 ...
- [BZOJ4207]Can
[BZOJ4207]Can 试题描述 这个问题是源于一个在棋盘上玩的,由Sid Sackson设计的名叫Can't stop的游戏的.这个问题与Can't stop有一定的相似之处,但是不需要玩过Ca ...
- 洛谷P2058 海港
题目描述 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况:对于第i艘到达的船 ...
- Cloud BOS平台-自定义用户联系对象
适用业务场景:新增用户时,联系对象类型默认为:职员.客户.供应商.客户需要增加一类"承运商",类型选择"承运商"时,联系对象只显示相应的承运商."承运 ...
- .NET 调用java webservice保存datetime类型数据为空的解决办法
问题描述: 用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属性的对象,当将该对象传到服务器端时,服务器端可以得到 string类型的属性值,却不能得到i ...