Android之微信分享
现在的项目中要用到微信分享,弄了两天才弄好,开始的时候是下载微信的sdk和demo,将demo放到eclipse上跑起来后发现不能分享,都是一闪就结束程序了,后来发现我们要将demo中的APPID和报名替换成我们自己申请应用时的包名和APPID,之后就可以实现分享功能了。
1.注册微信的移动应用
微信注册地址: 点击打开链接
点击图中的创建移动应用,在接下来的第二页中如下:
在应用签名和应用包名这两输入框要根据自己的实际填写,千万别瞎填。
应用签名:我们一般开发程序是用的都是debug.keystore,但是在我们打包程序发布的时候用的是我们正式的XXX.keystore或者是XXX.jks,eclipse用的是.keystore,as用的是.jks
1.在微信开发里有一个资源下载,从哪可以下载一个应用签名获取APK,将他下载到手机,同时将我们的程序安装到手机中,使用这个APK就可以获取到签名,但是一般这个签 名是debug的,不可以正式打包发布时使用,正式打包时,可以用我们自己的keystore获取签名。
2.包名可以从manafest.xml文件中获取;
2.代码简单分析
1.文字分享:
public void shareText2WX(String str, int flag) {
WXTextObject textObject = new WXTextObject();
textObject.text = str;
WXMediaMessage wxMediaMessage = new WXMediaMessage();
wxMediaMessage.mediaObject = textObject;
wxMediaMessage.description = str;
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("text");
req.message = wxMediaMessage;
switch (flag) {
case 1:
req.scene = SendMessageToWX.Req.WXSceneSession; // 好友
break;
case 2:
req.scene = SendMessageToWX.Req.WXSceneTimeline; // 朋友圈
break;
}
iwxapi.sendReq(req);
}
这段代码是从微信分享demo中直接拿出来用的,他只是文字分享,其他的如:网页分享,图片分享,音乐分享,视频分享,和上边相同,直接拿出来,稍微改改就可以了。
2.分享回调
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
private IWXAPI api;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
api = WXAPIFactory.createWXAPI(this,
Constances.WX_APPKEY, false);
api.handleIntent(getIntent(), this);
}
@Override
public void onReq(BaseReq arg0) {
}
@Override
public void onResp(BaseResp resp) {
int result = 0;
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK:
result = R.string.errcode_success;
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
result = R.string.errcode_cancel;
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:
result = R.string.errcode_deny;
break;
default:
result = R.string.errcode_unknown;
break;
}
Toast.makeText(WXEntryActivity.this, result, Toast.LENGTH_LONG).show();
// TODO 微信分享 成功之后调用接口
this.finish();
}
}
在我们的包里边,建一个包名为wxapi的包,在这个包里边建一个WXEntryActivity的类继承activity,实现IWXAPIEventHandler接口,
在manafest.xml里注册Activity:
<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent" />