Android微信SDK分享功能接入
2017-10-04 11:04
330 查看
文章转自:http://blog.csdn.net/violetjack0808/article/details/50772370
第一步:填应用信息上传应用缩略图,这个随意传。
第二步:官网随便填(当时填了百度都没事),然后应用平台选择Android,特别注意包名要和需要开发的包名是完全一致的(如果不知道在Manifest中找),而签名则需要通过你KeyStone来决定(请看第二点)。
第三步:提交审核,只有通过审核后你才能拿到AppID和AppSecret来开发,审核时间挺久的,耐心等待。
具体签名方法可以看blog(构建类型要选择release):Android Studio系列-签名打包
别忘了Manifest的exported属性
这个Activity出现的逻辑是:MainActivity –发送请求–> 微信分享界面 –退出该界面–> WXEntryActivity
只有跳转到微信进行过操作后才会跳转到这个Activity。
1. 申请微信开发平台账号、申请appID
在微信开放平台申请账号,登录后到管理中心创建项目,我这里是Android项目,所以这里是创建移动项目。第一步:填应用信息上传应用缩略图,这个随意传。
第二步:官网随便填(当时填了百度都没事),然后应用平台选择Android,特别注意包名要和需要开发的包名是完全一致的(如果不知道在Manifest中找),而签名则需要通过你KeyStone来决定(请看第二点)。
第三步:提交审核,只有通过审核后你才能拿到AppID和AppSecret来开发,审核时间挺久的,耐心等待。
2. 签名生成与使用
2.1 签名生成工具
到微信开放平台的资源中心去下载签名生成工具并安装到测试手机上,(链接:签名生成工具)2.2 对测试应用进行签名
必须始终使用同一个KeyStore来签名。因为签名生成工具是通过应用的包名找到应用的KeyStore,以此来生成签名的。假如更改了KeyStore必须在重新生成签名并更新到微信开放平台。具体签名方法可以看blog(构建类型要选择release):Android Studio系列-签名打包
2.3 安装签名过的APK,并使用签名生成工具生成签名。
2.4 将生成的签名填在微信开放平台的应用签名中。
3. 实现过程
3.1 下载jar包并导入
下载地址:微信开放平台资源中心3.2 WXEntryActivity
在包名下面创建wxapi的包,并在wxapi的包中创建WXEntryActivity继承Activity,实现IWXAPIEventHandler接口,最后在Manifest中设置Activity的exported属性为true。这条很重要,如果不是”包名.wxapi.WXEntryActivity”的路径,就获取不到返回值。下面的这个Activity的简单实现。public class WXEntryActivity extends Activity implements IWXAPIEventHandler { // IWXAPI 是第三方app和微信通信的openapi接口 private IWXAPI api; private static final String APP_ID = "wx5f30e72504c5d0c2"; @Override protected void onCreate(Bundle savedInstanceState) { api = WXAPIFactory.createWXAPI(this, APP_ID, false); api.handleIntent(getIntent(), this); super.onCreate(savedInstanceState); } @Override public void onResp(BaseResp resp) { Toast.makeText(this, "errCode = " + resp.errCode, Toast.LENGTH_LONG).show(); switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: //分享成功 break; case BaseResp.ErrCode.ERR_USER_CANCEL: //分享取消 break; case BaseResp.ErrCode.ERR_AUTH_DENIED: //分享拒绝 break; } finish(); } @Override public void onReq(BaseReq arg0) { } }
别忘了Manifest的exported属性
<activity android:name=".wxapi.WXEntryActivity" android:exported="true" />
这个Activity出现的逻辑是:MainActivity –发送请求–> 微信分享界面 –退出该界面–> WXEntryActivity
只有跳转到微信进行过操作后才会跳转到这个Activity。
3.3 MainActivity
我在这个类中发送了分享图片和文本到朋友圈的请求。public class MainActivity extends Activity { private IWXAPI wxApi; private static final String APP_ID = "wx5f30e72504c5d0c2"; private static final int THUMB_SIZE = 100; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 实例化 wxApi = WXAPIFactory.createWXAPI(this, APP_ID); wxApi.registerApp(APP_ID); findViewById(R.id.btnImage).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { sendImageToWX(); return null; } }.execute(); } }); findViewById(R.id.btnText).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendTextToWX(); } }); } /** * 分享图片到微信朋友圈 */ private void sendImageToWX() { Bitmap bmp = getUrlBitmap(); if (bmp != null) { WXImageObject imgObj = new WXImageObject(bmp); Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, THUMB_SIZE, THUMB_SIZE, true); bmp.recycle(); WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = imgObj; msg.thumbData = bmpToByteArray(thumbBmp, true); // 设置缩略图 SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("img"); req.message = msg; req.scene = SendMessageToWX.Req.WXSceneTimeline;//发送到朋友圈 // req.scene = SendMessageToWX.Req.WXSceneSession;//发送给微信好友 wxApi.sendReq(req); } } /** * 获取图片 * * @return */ private Bitmap getUrlBitmap() { try { URL url = new URL("http://b.hiphotos.baidu.com/image/pic/item/fd039245d688d43f76b17dd4781ed21b0ef43bf8.jpg"); Bitmap bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream()); if (bitmap.getByteCount() > 4096000) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = bitmap.getByteCount() / 4096000;//缩放比例 options.inJustDecodeBounds = false; bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream(), null, options); } return bitmap; } catch (Exception e) { e.printStackTrace(); return null; } } /** * 分享文本到朋友圈 */ private void sendTextToWX() { String text = "这是一段测试文本"; // 初始化一个WXTextObject对象 WXTextObject textObj = new WXTextObject(); textObj.text = text; // 用WXTextObject对象初始化一个WXMediaMessage对象 WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = textObj; msg.description = text; // 构造一个Req SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("text"); // transaction字段用于唯一标识一个请求 req.message = msg; req.scene = SendMessageToWX.Req.WXSceneTimeline; // req.scene = SendMessageToWX.Req.WXSceneSession;//发送给微信好友 // 调用api接口发送数据到微信 wxApi.sendReq(req); } private String buildTransaction(final String type) { return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis(); } private byte[] bmpToByteArray(Bitmap bmp, boolean needRecycle) { ByteArrayOutputStream output = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, output); if (needRecycle) { bmp.recycle(); } byte[] result = output.toByteArray(); try { output.close(); } catch (Exception e) { e.printStackTrace(); } return result; } }
相关文章推荐
- android 微信 以及QQ的SDK接入分享功能遇到的些问题小结
- Android之微信接入分享,登录功能。
- Android 微信SDK分享功能中的最全过程步骤分析
- Android 微信SDK分享功能中的最全过程步骤分析
- Android编程之微信SDK分享功能过程步骤详细分析
- Android新浪微博SDK分享功能接入
- Android编程之微信SDK分享功能过程步骤详细分析
- Android 微信SDK分享功能中的最全过程步骤分析
- 微信SDK分享功能中最该注意的地方Android
- 最新Android实现分享到QQ QZone 博客功能(集成官方SDK,不使用第三方)
- Android 第三方应用接入微信平台研究情况分享
- Android微信分享功能实例+demo
- 微信js-sdk分享功能接口常用逻辑封装示例
- 使用友盟SNS_SDK为Android应用加入SNS分享、同步功能
- Android微信之简单文本分享(集成官方SDK-Android Studio)
- 【IOS和Android】Cocos2d-x 集成微信分享功能
- Android利用微信SDK分享到微信教程,回调分享结果错误解决和注意点
- 在Unity3D项目中接入ShareSDK实现安卓平台微信分享功能(可使用ShareSDK默认UI或自定义UI)
- android一键分享功能不使用任何第三方sdk
- 友盟分享——Android App接入微信开放平台注意事项