微信分享官方第三方接入(图片及文字)

本文详细介绍了如何实现微信官方第三方接入,包括阅读官方文档、导入jar包、设置权限、注册到微信、使用sendReq进行文字分享以及分享图片到微信,特别是截图分享的实现代码。同时,提到了在分享至朋友圈时的注意事项和解决可能出现问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微信分享官方第三方接入:

第一步、官方接入文档必须要读的。

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN

第二步、导入jar包


第三步、权限支持。在AndroidManifest.xml中

<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"/> 

第四步、注册到微信。

// IWXAPI 是第三方app和微信通信的openapi接口
    private IWXAPI api;wxapi = WXAPIFactory.createWXAPI(getApplicationContext(),
				Constants.APP_ID);
// 将该app注册到微信
<span style="white-space:pre">			</span>    api.registerApp(Constants.APP_ID);   
若不加这句,则可能需要用签名包才能注册 
第五步、分享一条文本消息。

sendResp是微信向第三方app请求数据,第三方app回应数据之后会切回到微信界面。

本次我们使用sendReq是第三方app主动发送消息给微信,发送完成之后会切回到第三方app界面。

举个栗子:

Override
public void onClick(DialogInterface dialog, int which) {
	String text = editor.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;
	// 构造一个Req
	SendMessageToWX.Req req = new SendMessageToWX.Req();
	req.transaction = buildTransaction("text"); // transaction字段用于唯一标识一个请求
	req.message = msg;
	req.scene = isTimelineCb.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : 	SendMessageToWX.Req.WXSceneSession;
	// 调用api接口发送数据到微信
	api.sendReq(req);
	finish();
}
}, null);
}
});

基本上。完成上面的操作就可以分享文字到微信了。

第五步、分享图片到微信。

普通图片不多说,说下截图分享。直接上代码:

/**
	 * 分享一个图片
	 * 
	 * @author YOLANDA
	 * @param wxApi
	 * @param shareBitmap
	 *            要分享的图片
	 * @param isToFriend
	 *            是否是分享到朋友圈
	 */
	public static void shareImg(IWXAPI wxApi, Bitmap shareBitmap,
			boolean isToFriend, String title, String content) {
		WXImageObject imgObj = new WXImageObject(shareBitmap);

		WXMediaMessage msg = new WXMediaMessage();
		if (TextUtils.isEmpty(title)) {
			title = content;
		} else {
			if (TextUtils.isEmpty(title.trim())) {
				title = content;
			}
		}
		msg.title = title;
		msg.description = content;
		msg.mediaObject = imgObj;

		Bitmap thumbBmp = Bitmap.createScaledBitmap(shareBitmap, MeasureSpec
				.makeMeasureSpec(shareBitmap.getWidth() / 10,
						MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(
				shareBitmap.getHeight() / 10, MeasureSpec.UNSPECIFIED), true);
		msg.thumbData = bmpToByteArray(thumbBmp); // 设置缩略图

		SendMessageToWX.Req req = new SendMessageToWX.Req();
		req.transaction = buildTransaction("img");
		req.message = msg;
		req.scene = isToFriend ? SendMessageToWX.Req.WXSceneTimeline
				: SendMessageToWX.Req.WXSceneSession;
		wxApi.sendReq(req);
	}

/**
	 * 得到Bitmap的byte
	 * 
	 * @author YOLANDA
	 * @param bmp
	 * @param needRecycle
	 * @return
	 */
	private static byte[] bmpToByteArray(Bitmap bmp) {
		ByteArrayOutputStream output = new ByteArrayOutputStream();
		bmp.compress(CompressFormat.PNG, 100, output);

		byte[] result = output.toByteArray();
		try {
			output.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

/**
	 * 构建一个唯一标志
	 * 
	 * @author YOLANDA
	 * @param type
	 * @return
	 */
	private static String buildTransaction(String type) {
		return (type == null) ? String.valueOf(System.currentTimeMillis())
				: (type + System.currentTimeMillis());
	}

注意一:

SendMessageToWX.Req.WXSceneTimeline 
SendMessageToWX.Req.WXSceneSession
SendMessageToWX.Req的scene成员,如果scene填WXSceneSession,那么消息会发送至微信的会话内。

如果scene填WXSceneTimeline(微信4.2以上支持,如果需要检查微信版本支持API的情况, 可调用IWXAPI的getWXAppSupportAPI方法,0x21020001及以上支持发送朋友圈),那么消息会发送至朋友圈。

scene默认值为WXSceneSession。

注意二、如果分享的时候出现闪一下没有任何反应。

去微信官网,注册appID,用正确的APPID,绑定成功再试试。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值