在微信开放平台中注册账号
在管理中心中“创建移动应用”
按步骤填写应用信息,等待审核通过。
记录应用的appID。
在资源中心中可查看接入指南,下载开发工具包
将下载的 libammsdk.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"/>
在代码中使用开发工具包
WeixinUtil.java
import android.content.Context;
import android.graphics.Bitmap;
import com.tencent.mm.sdk.modelmsg.SendMessageToWX;
import com.tencent.mm.sdk.modelmsg.WXImageObject;
import com.tencent.mm.sdk.modelmsg.WXMediaMessage;
import com.tencent.mm.sdk.modelmsg.WXTextObject;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
/**
* 微信辅助类,用于微信分享
*/
public class WeixinUtil {
/**
* appID
*/
public static final String APP_ID = "wx96d406a3af36bf38";
/**
* 缩略图大小
*/
private static final int THUMB_SIZE = 150;
private IWXAPI api;
private Context context;
/**
* 单例模式
*/
private static WeixinUtil instance;
private WeixinUtil(Context context){
this.context = context;
api = WXAPIFactory.createWXAPI(context, APP_ID, false);
api.registerApp(APP_ID);
}
public static WeixinUtil getInstance(Context context){
if (instance == null){
instance = new WeixinUtil(context);
}
return instance;
}
/**
* 发送文本信息到微信
* @param text
*/
public void sendText(String text){
WXTextObject textObj = new WXTextObject();
textObj.text = text;
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = textObj;
msg.description = text;
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = "txt" + String.valueOf(System.currentTimeMillis());//transaction用于唯一标识一个请求
req.message = msg;
// SendMessageToWX.Req.WXSceneSession 发送至微信的会话中
// SendMessageToWX.Req.WXSceneTimeLINE 发送至朋友圈
req.scene = SendMessageToWX.Req.WXSceneTimeline;
api.sendReq(req);
}
/**
* 发图片到微信
* @param bitmap
*/
public void sendBitmap(Bitmap bitmap){
WXImageObject imgObj = new WXImageObject(bitmap);
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = imgObj;
Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap, THUMB_SIZE, THUMB_SIZE, true);
bitmap.recycle();
msg.thumbData = Util.bmpToByteArray(thumbBmp, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = "img"+String.valueOf(System.currentTimeMillis());
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneTimeline;
api.sendReq(req);
}
}
Util.java
import android.graphics.Bitmap;
import java.io.ByteArrayOutputStream;
/**
* 工具类
*/
public class Util {
/**
* 将bmp转换为字节数组
* @param bmp
* @param needRecycle
* @return
*/
public static byte[] bmpToByteArray(final 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;
}
}
MainActivity.java
// 发送文本
WeixinUtil.getInstance(MainActivity.this).sendText(text);
// 发送图片
WeixinUtil.getInstance(MainActivity.this).sendBitmap(bitmap);
问题
有可能会碰到如下的问题:
第一次可以分享,之后就无法调出分享界面。
这不是程序问题,而是未审核通过。