干货二:微信SDK-分享初探-更新中
微信开放平台简介
官方网址:
微信开放平台
在这里我们只探讨移动应用开发~
当我们的客户端接入微信之后,可以:
- 分享文本
- 分享图片
- 分享声音
- 分享连接
- 分享APP
开发前提:
- 注册一个开发者账号
- 至少申请一个APP
注册与申请
注册
登录 微信开放平台,注册开发者账号:
根据引导,完成注册即可。
提交申请
使用注册的开发者账号登录后:
创建应用:
接下来就等着微信审核了,上传图标的时候,我用了微信的案例图标,不知道会不会审核不通过 o(╯□╰)o
果然被枪毙了….
换logo
简单粗暴制作符合微信要求的logo
百度上搞了个512×512的png图片,微信要求大图108*108像素 ,小图28*28像素
看动画~
同样的方式制作28*28像素的png图片
如何生成应用签名
官方提供了签名工具,现在后安装到手机上,如下所示:
将你的APP安装到手机上, 接着输入你的包名(如果未安装 根据包名查找 无法生成应用签名)
工程目录:
包名需要保持一致,否则无法调用微信的API。
岁月静好 不到1个小时就审核通过了
特别注意:
- 在申请应用的时候填写的应用签名,这个签名是由应用的签名文件keystore决定的,在填这个签名的时候,一定要用正式的keyStore生成apk,安装到手机,然后用微信提供的获取应用签名的apk工具获取你应用的签名,然后这会生成的这个签名才是正确的,千万记得,不要使用debug的ketStore测试,虽然可以修改,但是还是要微信审核,就不要给自己添麻烦了。
- 在测试微信分享的时候,如果你直接在Android Studio运行项目,那样使用的肯定是debug的keyStore了,这样分享的时候会被微信拒绝,微信会生成缓存,即便后来你更换了正式的keystore来分享显示的还会是被微信拒绝,就算重启微信重启手机也不管用,那你就要清空微信的数据了,造成数据的丢失….
那问题来了 怎么才能搞成正式版的呢?请看下图:
切记,之前我都是直接运行程序安装到手机,结果分享,一闪而过…..
生成APK后,安装到手机,再分享下,good ,233333333333….
添加微信SDK到工程
微信SDK下载
下载解压后,我们可以看到
doc使用文档和lib包
你也可以顺便下载官方提供的范例代码以便快速上手。
微信SDK引用到AS工程
第一种方式:
将lib包下的libammsdk.jar复制到你的AS工程lib目录下,如下所示:
然后在AS项目中引用即可,选中项目 F4快捷键打开Module设置(或者右键-Open Module Settings ),添加jar.
第二种方式:
- 复制jar,到app— —src— —main— —libs文件夹下
- 在AS工程中右键点击要添加的jar,在弹出菜单中点击Add As Library.
- 检查下工程的build.gradle文件,如下所示(一般都是AS自动完成的,无需手工添加,检查下即可):
compile files('libs/libammsdk.jar'
截至到此,我们就可以在我们程序中使用微信SDK提供的API了。
如何使用
官方指导
如何使用API? 当然还是官方的指导文档了
请查看
根据说明文档:
- 1.申请你的AppID—-DONE
- 2.下载微信终端开发工具包—-DONE
- 3.搭建开发环境(这里我们在AS中搭建)—-DONE
包括新建工程,添加jar包依赖,清单文件配置权限
<!--添加使用微信需要的权限--><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- 4.在代码中使用开发工具包即可
我们分别就常用的几个功能做下演示
启动微信客户端
在这里我们需要使用我们之前申请的APP_ID
在 管理中心-移动应用-your APP -查看
这里我将APP_ID封装到了Constants类中。
很简单,代码中的注释已经很明白了
Code
package com.turing.share;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.WXAPIFactory;public class MainActivity extends AppCompatActivity {// IWXAPI 是第三方app和微信通信的openapi接口private IWXAPI api;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 通过WXAPIFactory工厂,获取IWXAPI的实例api = WXAPIFactory.createWXAPI(this, Constants.APP_ID, false);}/*** 启动微信** @param view*/public void launch_wx(View view) {//api.openWXApp() 查看官方的API文档可知:true if launchedToast.makeText(MainActivity.this, "launch result = " + api.openWXApp(), Toast.LENGTH_SHORT).show();}
}
运行图
如果你已经登陆了,就会直接进入主页面了。我这里并没有登录~
分享文本到好友或朋友圈
TIP:记得使用release版本来测试 亲
Code
核心代码:
/*** 发送文本到微信** @param view*/public void send_text(View view) {// 初始化一个EditTextfinal EditText editText = new EditText(this);// 组件的宽高是必须要指定的 LayoutParams包含了布局的信息editText.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT));// 设置文本editText.setText(R.string.send_text_default);// 初始化对话框new AlertDialog.Builder(this).setIcon(R.drawable.flag_mark_blue).setTitle("小工匠").setMessage("小工匠的分享")// 设置自定义布局.setView(editText).setPositiveButton("分享", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Log.d("TAG", "分享");String text = editText.getText().toString();if (text == null || text.length() == 0) {return;}// 初始化一个WXTextObject对象WXTextObject textObj = new WXTextObject();textObj.text = text;// 用WXTextObject对象初始化一个WXMediaMessage对象WXMediaMessage msg = new WXMediaMessage();msg.mediaObject = textObj;// 发送文本类型的消息时,title字段不起作用// msg.title = "Will be ignored";msg.description = text;// 构造一个ReqSendMessageToWX.Req req = new SendMessageToWX.Req();req.transaction = buildTransaction("text"); // transaction字段用于唯一标识一个请求req.message = msg;// 发送给朋友还是朋友圈req.scene = isTimelineCb.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;// 调用api接口发送数据到微信 成功返回trueapi.sendReq(req);finish();}}).setNegativeButton("取消", null).create().show();}
运行图
分享图片到好友或朋友圈
发送图片的二进制数据
/*** 发送图片的二进制数据*/private void sendBinaryImg() {Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.girl);WXImageObject imgObj = new WXImageObject(bmp);WXMediaMessage msg = new WXMediaMessage();msg.mediaObject = imgObj;//压缩图片Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, THUMB_SIZE, THUMB_SIZE, true);// 释放图像bmp占用的资源bmp.recycle();// 将bitmap转化成二进制的数组msg.thumbData = Util.bmpToByteArray(thumbBmp, true); // 设置缩略图SendMessageToWX.Req req = new SendMessageToWX.Req();req.transaction = buildTransaction("img");req.message = msg;req.scene = isTimelineCb.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;api.sendReq(req);finish();}
/*** 注意 CompressFormat.JPEG ,因为我要传的图片是JPEG格式的。* 如果是PNG格式的,需要写成CompressFormat.JPEG* 否则无法分享成功* @param bmp* @param needRecycle* @return*/public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {ByteArrayOutputStream output = new ByteArrayOutputStream();bmp.compress(CompressFormat.JPEG, 100, output);if (needRecycle) {bmp.recycle();}byte[] result = output.toByteArray();try {output.close();} catch (Exception e) {e.printStackTrace();}return result;}
注意事项:
需要格外注意compress方法中的参数。一定要对应你分享的图片的格式,否则无法完成分享
发送图片的本地路径
发送图片的URL
- 此方法必须在一个新的线程中调用,不能直接在UI线程中调用
- 图片的分享:图片包括本地图片(可以是二进制数据也可以是一个url)、网络图片。此处特别注意图片的大小微信有限制不能超过32k.
这里写代码片
前人才的坑
干货二:微信SDK-分享初探-更新中相关推荐
- 【vue/uni-app】微信sdk分享功能在vue中开发中的一些个人纪录
在vue开发微信sdk分享功能中的一些个人纪录 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". 我这里用的是 ...
- Android微信App 分享功能调整,Android 微信SDK分享功能(1)
转于:http://blog.csdn.net/freesonhp/article/details/10296141 ----------------------------------------- ...
- android sdk引入 微信分享_Android 微信SDK分享功能中的最全过程步骤分析
在前面有一章已经分析过怎么用官方的demo分享微信信息了,在这里我就不再多说,其中关于在自己应用分享说得很简单,本文作者也是经过一番折腾才弄成功,为了以后让大家都少走弯路,决定在这里从头到尾介绍怎么在 ...
- Android 微信SDK分享功能中的最全过程步骤分析
在前面有一章已经分析过怎么用官方的demo分享微信信息了,在这里我就不再多说,其中关于在自己应用分享说得很简单,本文作者也是经过一番折腾才弄成功,为了以后让大家都少走弯路,决定在这里从头到尾介绍怎么在 ...
- app中使用企业微信sdk分享小程序报错:小程序路径错误,加载超时 解决办法。
问题描述: 在app中,需要调用企业微信skd,分享小程序给客户,客户打开小程序. 如果客户直接是企业微信中的,可以在企业微信中打开小程序. 但是,如果客户是微信中,用户在微信中打开小程序就报错. i ...
- unity 一些有用的碎片知识整理 之 二 (之 四 持续更新中...)
-- 系列文章链接 Unity 一些有用的碎片知识整理 之 一 点击可跳转链接 Unity 一些有用的碎片知识整理 之 三 点击可跳转链接 Unity 一些有用的碎片知识整理 之 四 点击可跳转链接 ...
- 微信网页分享,开发者工具中显示分享成功,但是手机上分享失败的问题
背景: 因为之前的公众号做了迁移,之前的分享已经不能使用.这次重新修改了一下分享代码,却发现怎么都分享不成功,看网页以及微信开发者工具中显示调用api成功了,但是一到手机上就还是只能分享链接.折腾了很 ...
- cocoscreator 接入微信sdk分享时可以拉起分享弹窗但是选择好友后就是分享不出去的解决方法
发现在分享的时候可以拉起分享弹窗但是选择好友后就是分享不出去,后来发现是因为混淆的原因,在proguard-rules文件中加入混淆即可: -keep class com.tencent.mm.ope ...
- 日常论文分享---持续更新中
日常充电是必须的,每天进步一点点,下面是从日常关注的博主啦公众号啦看过的一些论文,分享分享!! https://github.com/km1994/nlp_paper_study 一些顶会AAAI.I ...
最新文章
- 第4次作业类测试代码+043+杨晨宇
- hdfs mv命令_如何HDFS mv命令工作
- 明明可以靠技术吃饭,现在却非要出来当编剧!
- CoreJava 笔记总结-第三章 Java的基本程序设计结构
- Qt 编码问题QTextCodec
- 数据库连接池问题[转]
- oralce EM企业管理器
- 使用wireshark抓包分析实战
- 挖没写过的代码记录_holo_springboot
- iOS 设置导航栏全透明
- python批量处理图片统一尺寸
- qq邮件exchange服务器,解决Exchange邮件系统无法接收QQ邮件的问题
- Flink案例代码,面试题
- python mqtt publish_mqtt异步publish方法
- c语言检测u盘插入拔出,Qt检测U盘插入拔出Demo
- 关于光通信的最强进阶科普
- postman接口测试中文汉化教程
- 2017 AMC8中文
- 【Git】Git的HEAD和branch的理解
- vue:Failed to resolve component:xxx
热门文章
- cuda 编 程(10) cuda 并行加速时间对比
- hibernate savealiasentity 保存后id为空_好程序员Java教程分享Java面试题之Hibernate
- Bag of Tricks for Efficient Text Classification(Fasttext)
- tensorflow就该这么学--4(识别手写数字)
- 强化学习笔记: generalized policy iteration with MC
- 数据中台(三)数据中台设计与数据资产管理
- python 并列条形图_python – 熊猫:如何绘制两个类别和四个系列的条形图?
- pytorch中arange()函数用法
- win10,pip更新后,Spyder打不开
- 手写一个迷你版的 Tomcat 喵【转】