微信开发平台(一)

本文介绍如何通过微信开发平台实现不同类型的分享功能,包括文本、图片、音频等,并提供了详细的步骤说明及示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本讲内容:微信开发平台(一)

 

 

一、注册开发帐号并申请一个开发APP(申请中填写的包名必须和程序包名一样)  https://open.weixin.qq.com/

 参考文章:http://blog.youkuaiyun.com/icyfox_bupt/article/details/23742217



示例一:分享文本(要导入微信jar包)

    

下面是res/layout/activity_main.xml 布局文件:

<LinearLayout 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"
    android:orientation="vertical" >

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="CheckBox" />
    
    <Button 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="onClick_Start_Weixin"
        android:text="启动微信"/>
    <Button 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="onClick_Send_Text"
        android:text="发送文本"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送二进制图像"
        android:onClick="onClick_Send_Binary_image" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送本地图像"
        android:onClick="onClick_Send_Local_Image" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送Url图像"
        android:onClick="onClick_Send_Url_Image" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送Url音频" 
        android:onClick="onClick_Send_Url_Audio"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送Url视频"
        android:onClick="onClick_Send_Url_Video" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送URL"
        android:onClick="onClick_Send_Url" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送表情"
        android:onClick="onClick_Send_Emotion" />

</LinearLayout>

下面是MainActivity.java主界面文件:

public class MainActivity extends Activity {
	
	//应用程序的ID
    public  static  final String APP_ID="wxf3268a18cc7d13f8";
    //初始化
    private IWXAPI api;
    private CheckBox mshareFriends;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        api = WXAPIFactory.createWXAPI(this,APP_ID,false);
        //将APP_ID注册到微信中
        api.registerApp(APP_ID);
        mshareFriends = (CheckBox) findViewById(R.id.checkBox1);
    }
    
  //启动微信客户端
    public void onClick_Start_Weixin(View view){
        //打开了就返回true
        Toast.makeText(MainActivity.this, String.valueOf(api.openWXApp()), Toast.LENGTH_SHORT).show();
    }

    //为请求生成一个唯一的标识
    private String buildTransaction(final String type){
        return (type==null)?String.valueOf(System.currentTimeMillis()):type + String.valueOf(System.currentTimeMillis());
    }

    //向好友或朋友圈发送文本(要将APP_ID注册到微信中才可以使用)
    public void onClick_Send_Text(View view){
        //创建EditText控件,用于输入文本
        final EditText editor = new EditText(this);
        editor.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
        editor.setText("默认的分享文本");
        final AlertDialog.Builder builder=new AlertDialog.Builder(this);
        builder.setIcon(android.R.drawable.ic_dialog_alert);
        builder.setTitle("共享文本");
        //将EditText控件与对话框绑定
        builder.setView(editor);
        builder.setMessage("请输入分享的文本");
        builder.setPositiveButton("分享", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //获取待分享的文本
                String text = editor.getText().toString();
                if (text == null || text.length() == 0) {
                    return;
                }
                //第一步:创建一个用于封装待分享文本的WXTextObject对象
                WXTextObject textObj = new WXTextObject();
                textObj.text = text;

                //第二步:创建WXMediaMessage对象,该对象用于Android客户端向微信发送数据
                WXMediaMessage msg = new WXMediaMessage();
                msg.mediaObject = textObj;
                msg.description = text;

                //第三步:创建一个用于请求微信客户端的SendMessageToWX.Req对象
                SendMessageToWX.Req req = new SendMessageToWX.Req();
                req.message = msg;
                //设置请求的唯一标识
                req.transaction = buildTransaction("text");
                //表示发送给朋友,还是朋友圈
                req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;

                //第四步:发送给微信客户端
                Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), Toast.LENGTH_LONG).show();
            }
        });

        builder.setNegativeButton("取消",null);
        final AlertDialog alert = builder.create();
        alert.show();
    }
    
    //将bitmap转换成byte格式的数组
    public byte[] bmpToByteArray(final Bitmap bitmap, final boolean needRecycle){
    	ByteArrayOutputStream output =new ByteArrayOutputStream();
    	bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);
    	if(needRecycle){
    		bitmap.recycle();
    	}
    	byte[] result = output.toByteArray();
    	try {
			output.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
    	return result;
    }
    
    //发送二进制图像
    public void onClick_Send_Binary_image(View view){
    	//第一步:获取二进制图像的Bitmap对象
    	Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.window);
    
    	//第二步:创建WXImageObject对象,并包装bitmap
    	WXImageObject imgObj =new WXImageObject(bitmap);
    	
    	//第三步:创建WXMediaMessage对象,并包装WXImageObject对象
    	WXMediaMessage msg = new WXMediaMessage();
    	msg.mediaObject = imgObj;
    	
    	//第四步:压缩图像(注意图片太大会返回false)
    	Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap, 80, 120, true);
    	//释放图像所占用的内存资源
    	bitmap.recycle();
    	msg.thumbData = bmpToByteArray(thumbBmp, true);//设置缩略图
    	
    	//第五步:创建SendMessageTo.Req对象,用于发送数据
    	SendMessageToWX.Req req=new SendMessageToWX.Req();
    	req.transaction=buildTransaction("img");
    	req.message=msg;
    	req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
    	Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), Toast.LENGTH_LONG).show();
    	finish();
    }
    
    //发送本地图像
    public void onClick_Send_Local_Image(View view){
    	//第一步:判断图像文件是否存在
    	String path = "/sdcard/window.png";
    	File file=new File(path);
    	if(!file.exists()){
    		Toast.makeText(MainActivity.this, "图片不存在", Toast.LENGTH_LONG).show();
    		return;
    	}
    	
    	//第二步:创建WXImageObject对象,并设置path
    	WXImageObject imgObj =new WXImageObject();
    	//设置图像文件路径
    	imgObj.setImagePath(path);
    	
    	//第三步:创建WXMediaMessage对象,并包装WXImageObject对象
    	WXMediaMessage msg = new WXMediaMessage();
    	msg.mediaObject = imgObj;
    	
    	//第四步:压缩图像(注意图片太大会返回false)
//    	Bitmap bitmap=BitmapFactory.decodeFile("/sdcard/window.png");
//    	Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap, 60, 60, true);//不知为什么这里出错了,知道的朋友可以说下
//    	
//    	//释放图像所占用的内存资源
//    	bitmap.recycle();
//    	msg.thumbData = bmpToByteArray(thumbBmp, true);//设置缩略图
    	
    	//第五步:创建SendMessageTo.Req对象,用于发送数据
    	SendMessageToWX.Req req=new SendMessageToWX.Req();
    	req.transaction=buildTransaction("img");
    	req.message=msg;
    	req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
    	api.sendReq(req);
    }
    
    //发送Url图像
    public void onClick_Send_Url_Image(View view){
    	Thread thread=new Thread(new Runnable() {
			
			public void run() {
				try {
					//第一步:创建WXImageObject对象,并设置url
					String url="https://img-my.youkuaiyun.com/uploads/201309/01/1378037235_3453.jpg";
			    	WXImageObject imgObj =new WXImageObject();
			    	//设置图像的Url
			    	imgObj.imageUrl=url;
			    	
			    	//第二步:创建WXMediaMessage对象,并包装WXImageObject对象
			    	WXMediaMessage msg = new WXMediaMessage();
			    	msg.mediaObject = imgObj;
			    	
			    	//第三步:压缩图像(注意图片太大会返回false)
			    	Bitmap bitmap=BitmapFactory.decodeStream(new URL(url).openStream());
			    	Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap, 80, 120, true);
			    	//释放图像所占用的内存资源
			    	bitmap.recycle();
			    	msg.thumbData = bmpToByteArray(thumbBmp, true);//设置缩略图
			    	
			    	//第四步:创建SendMessageTo.Req对象,用于发送数据
			    	SendMessageToWX.Req req=new SendMessageToWX.Req();
			    	req.transaction=buildTransaction("img");
			    	req.message=msg;
			    	req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
			    	api.sendReq(req);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
    	thread.start();
    }
    
    //发送url形式的音频
    public void onClick_Send_Url_Audio(View view){
    	//第一步:创建WXImageObject对象,并设置url
    	WXMusicObject music=new WXMusicObject();
    	music.musicUrl="http://play.baidu.com/?__m=mboxCtrl.playSong&__a=256019864&__o=/||netsongIcon#";
    
    	//第二步:创建WXMediaMessage对象
    	WXMediaMessage msg = new WXMediaMessage();
    	msg.mediaObject=music;
    	msg.title="明天";
    	msg.description="演唱:韩磊";
    	
    	//第三步:设置缩略图
    	Bitmap thumb=BitmapFactory.decodeResource(getResources(), R.drawable.window);
    	msg.thumbData=bmpToByteArray(thumb, true);
    	
    	//第四步:创建SendMessageTo.Req对象,用于发送数据
    	SendMessageToWX.Req req=new SendMessageToWX.Req();
    	req.transaction=buildTransaction("music");
    	req.message=msg;
    	req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
    	Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), Toast.LENGTH_LONG).show();
    }
    
    //发送url形式的视频
    public void onClick_Send_Url_Video(View view){
    	//第一步:创建WXImageObject对象,并设置url
    	WXVideoObject video=new WXVideoObject();
    	video.videoUrl="http://v.youku.com/v_show/id_XnTuxNDYINDY4.html";
    	
    	//第二步:创建WXMediaMessage对象
    	WXMediaMessage msg = new WXMediaMessage();
    	msg.mediaObject=video;
    	msg.title="乔布斯访谈";
    	msg.description="看看乔帮主说了什么";
    	
    	//第三步:设置缩略图
    	Bitmap thumb=BitmapFactory.decodeResource(getResources(), R.drawable.window);
    	msg.thumbData = bmpToByteArray(thumb, true);
    	
    	//第四步:创建SendMessageTo.Req对象,用于发送数据
    	SendMessageToWX.Req req=new SendMessageToWX.Req();
    	req.transaction=buildTransaction("music");
    	req.message=msg;
    	
    	req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
    	Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), Toast.LENGTH_LONG).show();
    }
    
    //发送URL
    public void onClick_Send_Url(View view){
    	//第一步:创建WXWebPageObject对象,并设置url
    	WXWebpageObject webpage=new WXWebpageObject();
    	webpage.webpageUrl="http://www.imooc.com/souse/List";
    	
    	//第二步:创建一个WXMediaMessage对象
    	WXMediaMessage msg=new WXMediaMessage(webpage);
    	msg.title="幕课网";
    	msg.description="教学视频的";
    	
    	//第三步:设置缩略图
    	Bitmap thumb=BitmapFactory.decodeResource(getResources(), R.drawable.window);
    	msg.thumbData = bmpToByteArray(thumb, true);
    	
    	//第四步:创建SendMessageTo.Req对象,用于发送数据
    	SendMessageToWX.Req req=new SendMessageToWX.Req();
    	req.transaction=buildTransaction("webpage");
    	req.message=msg;
    	
    	req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
    	Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), Toast.LENGTH_LONG).show();
    	finish();
    }

    public void onClick_Send_Emotion(View view){
    	//第一步:创建WXWebPageObject对象,用于封装表情文件的路径
    	String EMOJI_FILE_PATH="/sdcard/emotion.gif";
    	WXEmojiObject emoji=new WXEmojiObject();
    	emoji.emojiPath=EMOJI_FILE_PATH;
    	
    	//第二步:创建一个WXMediaMessage对象
    	WXMediaMessage msg=new WXMediaMessage(emoji);
    	msg.title="表情标题";
    	msg.description="表情描述";
    	
    	//第三步:设置缩略图
    	Bitmap thumb=BitmapFactory.decodeResource(getResources(), R.drawable.window);
    	msg.thumbData = bmpToByteArray(thumb, true);
    	
    	//第四步:创建SendMessageTo.Req对象,用于发送数据
    	SendMessageToWX.Req req=new SendMessageToWX.Req();
    	req.transaction=buildTransaction("emotion");
    	req.message=msg;
    	
    	req.scene = mshareFriends.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
    	Toast.makeText(MainActivity.this, String.valueOf(api.sendReq(req)), Toast.LENGTH_LONG).show();
    	finish();
    }
}



<uses-permission android:name="android.permission.INTERNET"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值