标签:iwxapi wxapifactory wxtextobject wxmediamessage sendmessagetowx
首先是申请微信开放平台https://open.weixin.qq.com/
根据提示在管理中心创建一个移动应用,最好是自己的公司的上线APP,这样审批容易通过,
审批通过后,会为创建的移动应用下发APP_ID、AppSecret
另外在网站上下载android版本的jar包即可libammsdk.jar 即可进行操作了
~~~~~~~~~~~~~~~~开始吧,用的测试机,没有sd卡,另外我的台式机没有wifi,所以代码没测试,我后期会补上的~~~~~~~~~~~~~~~~~
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.godinsec.seland.MainActivity" > <CheckBox android:id="@+id/mShareFriends" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="分享到朋友圈" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/checkBox" android:layout_marginTop="40dp" android:onClick="launchWeiXin" android:text="启动" /> <Button android:id="@+id/button2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/checkBox" android:layout_marginTop="81dp" android:onClick="sendText" android:text="发送文本" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/button2" android:layout_marginTop="39dp" android:onClick="send_binary_image" android:text="二进制图像" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/button1" android:layout_alignBottom="@+id/button1" android:layout_toRightOf="@+id/button1" android:onClick="send_local_image" android:text="本地图像" /> <Button android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/button3" android:layout_alignBottom="@+id/button3" android:layout_toRightOf="@+id/button3" android:onClick="send_url_image" android:text="Url图像" /> <Button android:id="@+id/button7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/button1" android:onClick="send_audio" android:text="音频" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/button7" android:layout_alignBottom="@+id/button7" android:layout_alignRight="@+id/button3" android:onClick="send_url" android:text="url" /> <Button android:id="@+id/button8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/button4" android:layout_alignBottom="@+id/button4" android:layout_alignRight="@+id/button5" android:onClick="send_motion" android:text="表情" /> <Button android:id="@+id/button6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/mShareFriends" android:layout_below="@+id/button1" android:onClick="send_video" android:text="视频" /> </RelativeLayout>
package com.godinsec.seland; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.net.URL; import com.tencent.a.a.a.a.e; import com.tencent.mm.sdk.modelmsg.SendMessageToWX; import com.tencent.mm.sdk.modelmsg.WXEmojiObject; import com.tencent.mm.sdk.modelmsg.WXImageObject; import com.tencent.mm.sdk.modelmsg.WXMediaMessage; import com.tencent.mm.sdk.modelmsg.WXMusicObject; import com.tencent.mm.sdk.modelmsg.WXTextObject; import com.tencent.mm.sdk.modelmsg.WXVideoObject; import com.tencent.mm.sdk.modelmsg.SendMessageToWX.Req; import com.tencent.mm.sdk.modelmsg.WXWebpageObject; import com.tencent.mm.sdk.openapi.IWXAPI; import com.tencent.mm.sdk.openapi.WXAPIFactory; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.text.style.BulletSpan; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { // 是否分享到朋友圈 private CheckBox mShareFriends; // 申请微信开放平台的APP_ID(自己公司上线的APP) public static final String APP_ID = "wxf46ddde7de655653"; // IWXAPI-api private IWXAPI api; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mShareFriends = (CheckBox) findViewById(R.id.mShareFriends); // 创建api api = WXAPIFactory.createWXAPI(this, APP_ID); // 将app_id注册微信中 api.registerApp(APP_ID); } /** * 启动微信客户段 */ public void launchWeiXin(View view) { // 打开微信--versionCode:2 api.openWXApp(); } // 为请求构造唯一的标示符 private String buildTransaction(String type) { return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis(); } /********************************************************************* * 向微信中分享文本信息 */ public void sendText(View view) { // 創建文本 final EditText editText = new EditText(this); editText.setText("默认的分享文本"); // 創建alertdialog對話框 AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(R.drawable.ic_launcher);//icon builder.setTitle("共享文本");//title builder.setMessage("请输入要分享的文本");//内容 builder.setView(editText);//设置 builder.setPositiveButton("分享", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String text = editText.getText().toString(); if (text == null || text.length() == 0) { return; } // 创建一个用于封装待分享文本的WXTextObject对象 WXTextObject textObject = new WXTextObject(); //设置文本信息 textObject.text = text; // 创建WXMediaMessage对像,用于客户端向微信发送数据 WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = textObject; msg.description = text; // 创建一个用于请求微信客户端的SendMessageTowx.Reg对象 SendMessageToWX.Req req = new SendMessageToWX.Req(); req.message = msg; req.transaction = buildTransaction("text");// 唯一的标示 // 场景-标示发送给朋友还是朋友圈 req.scene = mShareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; // 发送微信客户端口 api.sendReq(req); Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), 0).show(); finish(); } }); builder.setNegativeButton("取消", null); final AlertDialog alertDialog = builder.create(); alertDialog.show(); } /*********************************************************************** * 分享图片信息 */ // 将bitmap转为byte格式的数组 private byte[] bmpToByteArray(final Bitmap bitmap, final boolean needRecycle) { //创建字节数组输出流 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); //Bitmap.compress()方法的参数format可设置JPEG或PNG格式;quality可选择压缩质量;fOut是输出流(OutputStream) bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream); if (needRecycle) { bitmap.recycle(); } //将字节数组输出流转为byte数组 byte[] result = outputStream.toByteArray(); try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } return result; } public void send_binary_image(View view) { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); // 创建WXImageObject对象,包装bitmap WXImageObject image = new WXImageObject(bitmap); // 创建对象,并且包装WXImageObject对象 WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = image; // 压缩图片--宽度120 高度150的图像 Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap, 120, 150, true); bitmap.recycle();// 回收图片占用的内存资源 // 设置缩略图 msg.thumbData = bmpToByteArray(thumbBmp, true); SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("send_binary_image"); req.message = msg; // 场景-标示发送给朋友还是朋友圈 req.scene = mShareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; api.sendReq(req); Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), 0) .show(); finish(); } public void send_local_image(View view) { // 判断图片文件是否存在 String path = "/sdcard/图片名字.png"; File file = new File(path); if (!file.exists()) { // 如果不存咋 Toast.makeText(this, "文件不存在", 0).show(); return; } // 创建WXImageObject对象,包装bitmap WXImageObject image = new WXImageObject(); // 设置图片文件的路径 image.setImagePath(path); // 创建对象,并且包装WXImageObject对象 WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = image; Bitmap bitmap = BitmapFactory.decodeFile(path); // 压缩图片--宽度120 高度150的图像 Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap, 120, 150, true); bitmap.recycle();// 回收图片占用的内存资源 // 设置缩略图 msg.thumbData = bmpToByteArray(thumbBmp, true); SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("send_local_image"); req.message = msg; // 场景-标示发送给朋友还是朋友圈 req.scene = mShareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; api.sendReq(req); Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), 0) .show(); finish(); } /** * 有小问题?????????????? */ public void send_url_image(View view) { Thread thread = new Thread() { public void run() { try { String url = "http://img.mukewang.com/55237dcc0001128c06000338-300-170.jpg"; // 创建WXImageObject对象,包装bitmap WXImageObject image = new WXImageObject(); image.imageUrl = url; // 创建对象,并且包装WXImageObject对象 WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = image; Bitmap bitmap = BitmapFactory.decodeStream(new URL(url) .openStream()); // 压缩图片--宽度120 高度150的图像 Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap, 12, 15, true); bitmap.recycle();// 回收图片占用的内存资源 // 设置缩略图 msg.thumbData = bmpToByteArray(thumbBmp, true); SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("send_url_image"); req.message = msg; // 场景-标示发送给朋友还是朋友圈 req.scene = mShareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; api.sendReq(req); Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), 0).show(); finish(); } catch (Exception e) { e.printStackTrace(); } } }; thread.start(); } /********************************************************************* * 发送url地址的音频 */ public void send_audio(View view) { WXMusicObject musicObject = new WXMusicObject(); musicObject.musicUrl = "http://music.baidu.com/song/999104?pst=sug"; WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = musicObject; msg.title = "向天在借500年"; msg.description = "演唱:韩磊"; // 设置说略图 Bitmap thumb = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); msg.thumbData = bmpToByteArray(thumb, true); SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("send_audio"); req.message = msg; // 场景-标示发送给朋友还是朋友圈 req.scene = mShareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; api.sendReq(req); Toast.makeText(this, String.valueOf(api.sendReq(req)), 0).show(); } /********************************************************** * 发送视频到微信 */ public void send_video(View view) { // 创建WXVideoObject对象,用于制定视频url WXVideoObject videoObject = new WXVideoObject(); videoObject.videoUrl = "http://v.youku.com/v_show/id_XNTUxNDY1NDY4.html"; WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = videoObject; msg.title = "乔布斯访谈"; msg.description = "看看乔帮主都说了写什么"; // 设置说略图 Bitmap thumb = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); msg.thumbData = bmpToByteArray(thumb, true); SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("send_video"); req.message = msg; // 场景-标示发送给朋友还是朋友圈 req.scene = mShareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; api.sendReq(req); Toast.makeText(this, String.valueOf(api.sendReq(req)), 0).show(); } /************************************************************** * 发送webpage url地址 * @param view */ public void send_url(View view) { // 创建一个WXWebPageObject对象,封装url WXWebpageObject webpageObject = new WXWebpageObject(); webpageObject.webpageUrl = "http://www.imooc.com/course/list"; WXMediaMessage msg = new WXMediaMessage(webpageObject); msg.title = "网站"; msg.description = "在线教育"; // 缩略图片 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); msg.thumbData = bmpToByteArray(bitmap, true); // 创建 SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = "send_url"; req.message = msg; req.scene = mShareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; api.sendReq(req); finish(); } /************************************************* * 发送表情。gif动态图片 * @param view */ public void send_motion(View view) { String emotion_path = "sd卡"; WXEmojiObject mEmojiObject = new WXEmojiObject(); mEmojiObject.emojiPath = emotion_path; WXMediaMessage msg = new WXMediaMessage(mEmojiObject); msg.title = "表情标题"; msg.description = "表情描述"; // 缩略图 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); msg.thumbData = bmpToByteArray(bitmap, true); SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("send_motion"); req.message = msg; req.scene = mShareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; api.sendReq(req); finish(); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
微信分享文本、图片(本地、二进制、网络图片)、音频、视频、Gif动态图片、网页信息--大汇总
标签:iwxapi wxapifactory wxtextobject wxmediamessage sendmessagetowx
原文地址:http://blog.csdn.net/u013210620/article/details/47361145