今天第一次使用微信的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>
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();
}
}
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>
第一次在CSDN写博客,留作学习笔记吧,以后跟着大神们好好学习。