1、微信开放平台注册:https://open.weixin.qq.com/
2、导入sdk:implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
3、在开放平台认证后创建应用获得:weixin_key ,写入注册清单中
4、创建活动:WXEntryActivity.java
public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
private IWXAPI wxapi;
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
wxapi.handleIntent(intent, this);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wxentry);
wxapi = WXAPIFactory.createWXAPI(this, "你的微信key值");
wxapi.handleIntent(getIntent(), this);
}
/**
* 微信发送请求到第三方应用时,会回调到该方法
*/
@Override
public void onReq(BaseReq baseReq) {
//
}
/**
* 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
* app发送消息给微信,处理返回消息的回调
*/
@Override
public void onResp(BaseResp baseResp) {
switch (baseResp.errCode) {
// 正确返回
case BaseResp.ErrCode.ERR_OK:
switch (baseResp.getType()) {
// ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX是微信分享,api自带
case ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX:
// 只是做了简单的finish操作
finish();
break;
default:
break;
}
break;
default:
// 错误返回
switch (baseResp.getType()) {
// 微信分享
case ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX:
Log.i("WXEntryActivity" , ">>>errCode = " + baseResp.errCode);
finish();
break;
default:
break;
}
break;
}
}
}
5、在自定义的 Application文件初始化中加入此方法注册:
/**
* 注册微信分享功能
*/
private void initWXapi(){
IWXAPI wxapi = WXAPIFactory.createWXAPI(this, Constants.APP_ID, true);
wxapi.registerApp(Constants.APP_ID);// 注册
}
6、微信分享工具类
/**
* 微信分享工具类
*/
public class WXshareUtil {
private static final int THUMB_SIZE = 150;
/**
* 分享网页类型至微信
*
* @param context 上下文
* @param appId 微信的appId
* @param webUrl 网页的url
* @param title 网页标题
* @param content 网页描述
* @param bitmap 位图
*/
public static void shareWeb(Context context, String appId, String webUrl, String title, String content, Bitmap bitmap) {
// 通过appId得到IWXAPI这个对象
IWXAPI wxapi = WXAPIFactory.createWXAPI(context, appId);
// 检查手机或者模拟器是否安装了微信
if (!wxapi.isWXAppInstalled()) {
Toast.makeText(context,"您还没有安装微信",Toast.LENGTH_SHORT).show();
return;
}
// 初始化一个WXWebpageObject对象
WXWebpageObject webpageObject = new WXWebpageObject();
// 填写网页的url
webpageObject.webpageUrl = webUrl;
// 用WXWebpageObject对象初始化一个WXMediaMessage对象
WXMediaMessage msg = new WXMediaMessage(webpageObject);
// 填写网页标题、描述、位图
msg.title = title;
msg.description = content;
// 如果没有位图,可以传null,会显示默认的图片
msg.setThumbImage(bitmap);
// 构造一个Req
SendMessageToWX.Req req = new SendMessageToWX.Req();
// transaction用于唯一标识一个请求(可自定义)
req.transaction = "webpage";
// 上文的WXMediaMessage对象
req.message = msg;
// SendMessageToWX.Req.WXSceneSession是分享到好友会话
// SendMessageToWX.Req.WXSceneTimeline是分享到朋友圈
req.scene = SendMessageToWX.Req.WXSceneSession;
// 向微信发送请求
wxapi.sendReq(req);
}
/**
* 分享图片
*/
public static void sharePicture(Context context, String appId, Bitmap bmp,int Scene) {
// 通过appId得到IWXAPI这个对象
IWXAPI api = WXAPIFactory.createWXAPI(context, appId,false);
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 = buildTransaction("img");
req.message = msg;
req.scene = Scene;//0:分享到好友 1:分享到朋友圈
api.sendReq(req);
}
private static String buildTransaction(final String type) {
return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
}
/**
* 设置缩略图
* @param bmp
* @param needRecycle
* @return
*/
public static byte[] bmpToByteArray(final Bitmap bmp, final 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;
}
}
7、……结束!