码迷,mamicode.com
首页 > 微信 > 详细

微信分享文本、图片(本地、二进制、网络图片)、音频、视频、Gif动态图片、网页信息--大汇总

时间:2015-08-08 21:28:12      阅读:505      评论:0      收藏:0      [点我收藏+]

标签: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>

MainActivity

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!