Android微信分享
需要注册开发者账号并且创建应用
微信开放平台
相关操作
在微信开放平台下载微信的jar包并导入项目。
libammsdk.jar
导入相应的类。
import com.tencent.mm.sdk.openapi.WXTextObject;
添加相应权限。
<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"/>
注册到微信。
private static final String APP_ID=
"";
private IWXAPI api;
private void regToWx(){
api = WXAPIFactory.createWXAPI(getApplicationContext(),APP_ID,
true);
api.registerApp(APP_ID);
}
发送请求或响应到微信。
sendReq是第三方app主动发送消息给微信,发送完成之后会切回到第三方app界面(使用该方法)。boolean sendReq(BaseReq req);sendResp是微信向第三方app请求数据,第三方app回应数据之后会切回到微信界面。boolean sendResp(BaseResp resp);注意:SendMessageToWX.Req的scene成员,如果scene填WXSceneSession,那么消息会发送至微信的会话内。如果scene填WXSceneTimeline(微信4.2以上支持,如果需要检查微信版本支持API的情况, 可调用IWXAPI的getWXAppSupportAPI方法,0x21020001及以上支持发送朋友圈),那么消息会发送至朋友圈。scene默认值为WXSceneSession。Req.scene的类型
分享到朋友圈 Req.scene = SendMessageToWX.Req.WXSceneTimeline分享到好友会话 Req.scene = SendMessageToWX.Req.WXSceneSession添加到微信收藏 Req.scene = SendMessageToWX.Req.WXSceneFavorite
WXTextObject textObj =
new WXTextObject();
textObj.text = text;
WXMediaMessagemsg =
new WXMediaMessage();
msg.mediaObject = textObj;
msg.description = text;
SendMessageToWX.Req req =
new SendMessageToWX.Req();
req.transaction = String.valueOf(System.currentTimeMillis());
req.message = msg;
req.scene = isTimelineCb.isCHecked()?SendMessageToWX.Req.WXSceneTimeline:SendMessageToWX.Req.WXSceneSession;
api.sendReq(req);
Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.image);
WXImageObject imgObj =
new WXImageObject(bmp);
WXMediaMessage msg =
new WXMediaMessage();
msg.mediaObject = imgObj;
Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp,THUMB_SIZE,THUMB_SIZE,
true);
bmp.recycle();
msg.thumbData = bmpToByteArray(thumbBmp,
true);
SendMessageToWX.Req req =
new SendMessageToWX.Req();
req.transaction = String.valueOf(System.currentTimeMillis());
req.message = msg;
req.scene = isTimelineCb.isCHecked()?SendMessageToWX.Req.WXSceneTimeline:SendMessageToWX.Req.WXSceneSession;
api.sendReq(req);
/**
* 将Bitmap转换成byte
* @param bmp
* @param needRecycle
* @return
*/
public static byte[]
bmpToByteArray(
final Bitmap bmp,
final boolean needRecycle) {
ByteArrayOutputStream output =
new ByteArrayOutputStream();
bmp.compress(CompressFormat.PNG,
100, output);
if (needRecycle) {
bmp.recycle();
}
byte[] result = output.toByteArray();
try {
output.close();
}
catch (Exception e) {
e.printStackTrace();
}
return result;
}
代码混淆
-keep class com.tencent.mm.sdk.** {
*;
}
转载请注明原文地址: https://ju.6miu.com/read-677934.html