当前位置: 首页 > 工具软件 > space-sdk > 使用案例 >

Android 微信SDK开发 - Demo

林雅畅
2023-12-01

今天第一次使用微信的SDK来写个盆友圈分享的Demo,记录下学习笔记和遇到的问题。

1.先去微信开发者中心申请一个APPID,需要提交一些应用的信息,然后就是等待审核了。

2.创建一个Demo工程,记得导入从官网下载的libammsdk.jar. 然后就可以开始写代码咯。

Demo使用的布局文件 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" >

    <Button
        android:id="@+id/reg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="将app注册到微信" />

    <Button
        android:id="@+id/share"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="分享测试信息到微信朋友圈" />

    <Button
        android:id="@+id/check"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="检查是否支持发送到朋友圈" />

</LinearLayout>

Demo主Activity WXEntryActivity.java

package com.example.wxapi;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

import com.example.app.ConfigValues;
import com.example.wxdemo.R;
import com.tencent.mm.sdk.modelbase.BaseReq;
import com.tencent.mm.sdk.modelbase.BaseResp;
import com.tencent.mm.sdk.modelmsg.SendMessageToWX;
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.IWXAPIEventHandler;
import com.tencent.mm.sdk.openapi.WXAPIFactory;

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
	private Button reg, share, check;
	private IWXAPI wxApi = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 初始化微信接口API
		wxApi = WXAPIFactory.createWXAPI(this, ConfigValues.APPID, true);
		wxApi.registerApp(ConfigValues.APPID);
		// 微信的回调
		wxApi.handleIntent(getIntent(), this);
		initView();
	}

	/**
	 * 初始化控件对象和监听器
	 */
	private void initView() {
		reg = (Button) findViewById(R.id.reg);
		share = (Button) findViewById(R.id.share);
		check = (Button) findViewById(R.id.check);

		reg.setOnClickListener(new ClickListener());
		share.setOnClickListener(new ClickListener());
		check.setOnClickListener(new ClickListener());
	}

	/**
	 * 发送文本到微信
	 */
	private void shareTxtToWx() {
		String text = "--->测试微信开发SDK分享功能<---";

		// 初始化一个WXTextObject对象
		WXTextObject textObj = new WXTextObject();
		textObj.text = text;
		// 用WXTextObject对象初始化一个WXMediaMessage对象
		WXMediaMessage msg = new WXMediaMessage();
		msg.mediaObject = textObj;
		// 发送文本类型的消息时,title字段不起作用
		// msg.title = "Will be ignored";
		msg.description = text;
		// 构造一个Req请求
		SendMessageToWX.Req req = new SendMessageToWX.Req();
		// transaction字段用于唯一标识一个请求
		req.transaction = buildTransaction("text");
		// 请求消息内容
		req.message = msg;

		// 分享到朋友圈还是会话当中
		req.scene = SendMessageToWX.Req.WXSceneTimeline;
		// req.scene = WXSceneTimeline 代表分享内容到朋友圈
		// req.scene = WXSceneSession 代表分享内容到会话当中

		// 调用api接口发送数据到微信
		wxApi.sendReq(req);
	}

	/**
	 * 监听
	 */
	class ClickListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			switch (v.getId()) {
			case R.id.reg:
				// 直接注册当前应用到微信
				wxApi.registerApp(ConfigValues.APPID);
				break;
			case R.id.share:
				// 分享测试文本到微信朋友圈
				shareTxtToWx();
				break;
			case R.id.check:
				// getWXAppSupportAPI返回的数值为0x21020001及以上支持发送朋友圈
				Toast.makeText(WXEntryActivity.this,
						"No:" + wxApi.getWXAppSupportAPI(), Toast.LENGTH_LONG)
						.show();
				break;
			}
		}
	}// class

	/**
	 * 格式化一下类型格式
	 * @param type
	 * @return
	 */
	private String buildTransaction(final String type) {
		return (type == null) ? String.valueOf(System.currentTimeMillis())
				: type + System.currentTimeMillis();
	}

	/**
	 * 微信发送请求到第三方应用时,会回调到该方法
	 */
	@Override
	public void onReq(BaseReq arg0) {
		// TODO Auto-generated method stub

	}

	/**
	 * 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
	 */
	@Override
	public void onResp(BaseResp resp) {
		// TODO Auto-generated method stub
		String result = "";
		switch (resp.errCode) {
		case BaseResp.ErrCode.ERR_OK: // 分享成功
			result = "分享成功";
			break;
		case BaseResp.ErrCode.ERR_USER_CANCEL:// 取消分享
			result = "取消分享";
			break;
		case BaseResp.ErrCode.ERR_AUTH_DENIED:// // 分享失败
			result = "分享失败";
			break;
		default:
			result = "未知状态";
			break;
		}
		Toast.makeText(this, result, Toast.LENGTH_LONG).show();
	}

}


3.如果想在APP中使用微信的回调,必须在工程当中创建一个以 .wxapi ] 结尾的包,比如 com.example.wxapi,在包中还必须有一个类名为 WXEntryActivity的类文件,并且这个类要实现 IWXAPIEventHandler接口。

4.还要注意在AndroidManifest.xml里面注册WXEntryActivity.并且必须配置 [ android:exported="true" ].

<span style="white-space:pre">	</span><activity
            android:name="com.example.wxapi.WXEntryActivity"
            <span style="color:#ff0000;">android:exported="true"</span> >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

6.假如测试分享不能成功的话,或许是申请APPID时填写的应用签名的原因,可以去官方下载签名生成工具,从新获取一下应用签名,然后修改提交就OK了。



第一次在CSDN写博客,留作学习笔记吧,以后跟着大神们好好学习。

 类似资料: