Android: 微信分享
16lz
2021-01-26
在微信开放平台中注册账号
微信开发平台
在管理中心中“创建移动应用”
按步骤填写应用信息,等待审核通过。
记录应用的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);
问题
有可能会碰到如下的问题:
第一次可以分享,之后就无法调出分享界面。
这不是程序问题,而是未审核通过。
参考:http://blog.csdn.net/qianfu111/article/details/9115303
更多相关文章
- linux下android的开发正确识别真机调试
- Android(安卓)| 如何给Fragment里的button添加监听事件
- 【Android高级工程师】Android项目开发如何设计整体架构?
- Android中利用LinearLayout动态添加控件
- Android开发学习之WallPaper设置壁纸详细介绍与实例
- (二)Android系统基础-1 APP类型简介
- Android功能快速上线神器!
- Android应用集成开发环境,强烈推荐使用
- Android(安卓)EditText 下换线颜色变换