一处折腾笔记:Android内嵌html5添加原生微信分享的解决办法

有一段时间没有瞎折腾了。这周一刚上班萌主过来反映说:微信里面打开聚客宝,分享功能是可以的(这里是用微信自身的js-sdk实现的),但是在android应用里面打开点击就没反应了;接下来狡猾的丁丁在产品群里AT我说:偶们的产品设计不是一直都被技术给反压制住么?真是气死,呵呵。自己刚好有空又有兴趣,于是研究了下,没曾想竟也研究出来了。事后我对整个操作过程整理了下,方便他人也提升自己。

废话少扯,下面上干货。

我的思路是:在点击h5上的分享图标时,触发js事件,在这里面可以对当前设备的操作系统和浏览器类型做判断,然后执行不同的操作。如果是在android操作系统下并且是在微信浏览器的,就执行原本微信自带的js-sdk分享;如果是在android操作系统下但是不在微信浏览器的,就执行原生的微信分享。在js里面我们可以通过android与js之间的js交互接口,将js请求传递给android的代码中,这个请求至少需要传递分享的图文的链接地址、分享的缩略图的网址、分享窗口的标题、分享的内容四个参数,android那边接到请求后,获取到这四个参数,并执行弹出分享窗口的操作,我们在这个操作里面只管调用方法和对参数赋值,至于剩下的实现细节则交给微信去处理,我们不用关心。

一、在微信开放平台新建应用,获取AppId和AppSecret

1、创建应用

进入微信开放平台的官网(open.weixin.qq.com),选择首页左下角的“移动应用开发”;

进入移动应用开发页面后,选择“创建应用”操作;

在创建应用页面,我们需要填写应用的信息,必填的包括移动应用名称(你的应用的名称,例如腾讯新闻,而且微信平台里面填写的这个应用不能和已有的重复。比如别人叫“腾讯新闻”的申请过了,即便你的应用也叫“腾讯新闻”,你也无法申请这个名字,还有一点这个名字是可以在微信分享的时候显示在左下角的,相当于是应用的标识)、移动应用简介(写一段简短的语句介绍你的应用,无实际意义但是必填)、移动应用的图片将准备的28*28和108*108的logo图片上传上去(这个小图片也是在分享的时候可以显示在左下角的);

2、填写平台信息

在填写平台信息页面,需要填写应用的官网(填写公司的网址即可)、应用平台(开发语言,这里我选android)、应用签名、应用包名。这里注意,应用签名和应用包名很重要!千万不要写错。

3、等待审核

提交完毕后就等待微信的审核了,页面提示的是7天内,实际我只等了1个小时就审核通过了(估计是微信的工作人员心情好~)

4、获取AppId和AppSecret

审核通过后,我们就能看到AppId和AppSecret了,这里我们保存下来,后面会用到。

二、在mob上新建应用,获取分享所需的sdk

mob.com是全球最大的移动开发服务平台,里面的sharesdk包含了全球大多数所有的应用分享功能,在使用时我们可以根据需要,灵活地选择我们所需要的平台。

1、创建账号和应用

进入mob.com新建账号,创建应用,创建应用过程跟上面的一致且步骤简单,此处不再赘述。进去之后可以熟悉下里面的菜单。

2、获取sdk

在“下载sdk”--“社会化分享sdk”中选择android图标,点击“下载sdk”按钮,在下载页面我们可以选择我们所需要的分享平台和官方的demo。

三、代码集成

在mob官网获取sdk和demo后,可以参考说明文档,将代码嵌入进我们的应用代码中,核心代码如下

到此,整个操作过程基本结束

剩下的就是不停地调试和测试了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-12 00:04:53

一处折腾笔记:Android内嵌html5添加原生微信分享的解决办法的相关文章

一处折腾笔记:Android内嵌html5加入原生微信分享的解决的方法

有一段时间没有瞎折腾了. 这周一刚上班萌主过来反映说:微信里面打开聚客宝.分享功能是能够的(这里是用微信自身的js-sdk实现的).可是在android应用里面打开点击就没反应了:接下来狡猾的丁丁在产品群里AT我说:偶们的产品设计不是一直都被技术给反压制住么?真是气死,呵呵.自己刚好有空又有兴趣,于是研究了下.没曾想竟也研究出来了.事后我对整个操作过程整理了下,方便他人也提升自己. 废话少扯.以下上干货. 我的思路是:在点击h5上的分享图标时.触发js事件,在这里面能够对当前设备的操作系统和浏览

Android 内嵌 HTML5 并进行交互

Android与HTML5的交互主要是两个部分, 与HTML5的交互以及与JavaScript的交互, 与HTML5的交互可以通过注册onclick事件转化为与JavaScript的交互 Android与JavaScript的交互主要是通过相互调用方法实现的, Android对JavaScript的可以称之为调用, 但是JavaScript对于Android代码的调用则是通过拦截(@JavascriptInterface与映射实现存在较多漏洞, 也不推荐使用) Android调用JavaScri

cocos2d-x调用android内嵌浏览器打开网页

cocos2d-x调用android内嵌浏览器打开网页,可以从入口传入网址,C++调用android 的api即可实现.方法也很简单 1. 修改"cocos2dx\platform\win32"下的CCApplication.h和CCApplication.cpp,添加函数 头文件声明 void openURL(const char* pszUrl); cpp文件实现: void CCApplication::openURL(const char* pszUrl) { ShellExe

Android开发常见的Activity中内存泄漏及解决办法

上一篇文章楼主提到由Context引发的内存泄漏,在这一篇文章里,我们来谈谈Android开发中常见的Activity内存泄漏及解决办法.本文将会以"为什么""怎么解决"的方式来介绍这几种内存泄漏. 在开篇之前,先来了解一下什么是内存泄漏. 什么是内存泄漏? 内存泄漏是当程序不再使用到的内存时,释放内存失败而产生了无用的内存消耗.内存泄漏并不是指物理上的内存消失,这里的内存泄漏是值由程序分配的内存但是由于程序逻辑错误而导致程序失去了对该内存的控制,使得内存浪费. 怎

Failed to fetch URl https://dl-ssl.google.com/android/repository/addo Android SDK更新以及ADT更新出现问题的解决办法

Failed to fetch URl https://dl-ssl.google.com/android/repository/addo Android SDK更新以及ADT更新出现问题的解决办法

C#:使用ListView动态添加数据一直闪烁的解决办法

首先,自定义一个类ListViewNF,继承自 System.Windows.Forms.ListView using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace 你的名称空间 { class ListViewNF : System.Windows.Forms.ListView { public ListV

部分 CM11 系统 Android 平板运行植物大战僵尸 2 黑屏的解决办法

原文 http://forum.xda-developers.com/showthread.php?t=2755197 部分 CM11 系统的 Android 平板(例如三星 GT-P5110 )运行植物大战僵尸 2 时黑屏,解决方法如下: 安装 NOMone Resolution Changer 使用上述软件(需要 ROOT 权限)将分辨率调整到 1280 * 768 (适用于 1280 * 800 分辨率的平板),保持 DPI 不变 运行植物大战僵尸 2 部分 CM11 系统 Android

用adb pull命令从android系统中读取文件失败的原因及解决办法

问题:使用adb pull命令从android系统中读取文件失败.显示:Permission denied 原因:是由于文件权限原因引起. 使用ls -l命令查看android系统中的文件权限为: -rw-rw---- app_51   app_51 也就是说,该文件只有app_51用户以及app_51群组拥有读写权限,而adb shell的用户为shell,既不是app_51用户,也不在app_51群组中,所以没有权限读取这个文件.所以就出现了 Permission denied. 解决方法:

Android 嵌套GridView,ListView只显示一行的解决办法

重写ListView.GridView即可: public class MyListView extends ListView { public MyListView(Context context) { // TODO Auto-generated method stub super(context); } public MyListView(Context context, AttributeSet attrs) { // TODO Auto-generated method stub su