微信分享功能网上有许多实例,可以参考也可以直接使用。这里记录几个要点之外容易被忽视的地方。
1.
public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler{
...
}
回调用的Activity WXEntryActivity名称固定 必需继承IWXAPIEventHandler
2.
@Override
public void onResp(BaseResp resp) {
int result;
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(getApplicationContext(), result, Toast.LENGTH_LONG).show();
//返回APP
backAPP();
finish();
}
返回APP可以通过Intent跳转,一定记得要finish()
3.
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent, this);
}
onNewIntent加上
4.
//获取图片
private void GetBitmapByImgUrl(final String sImageUrl) {
new Thread(new Runnable() {
public void run()
{
try{
byte[] data = ImageUtil.getImage(sImageUrl);
Bitmap bmp = null;
if (data != null) {
bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
}
//如果获取失败 用logo
if(bmp==null){
bmp = SetBitmapLocal();
}
Message wxmsg = new Message();
wxmsg.what = 10;
wxmsg.obj = bmp;
wxHandler.sendMessage(wxmsg);
}catch(Exception e){
e.printStackTrace();
}
}
}).start();
}
public Handler wxHandler=new Handler(){
@Override
public void handleMessage(Message wxmsg) {
super.handleMessage(wxmsg);
switch (wxmsg.what) {
case 10:
_WxShareModel.SetbmpImage(Bitmap.createScaledBitmap((Bitmap) wxmsg.obj);
//分享
break;
}
}
};
如果图片是从网络获取的 注意图片大小限制 32k 120x120
5.
<activity
android:name=".WXEntryActivity"
android:launchMode="singleTask"
android:exported="true"
android:label="@string/app_name" />
注意设置为singleTask
6.如果分享过程中出现黑屏闪过 建议设置涉及到的Activity背景透明
7.
api.getWXAppSupportAPI()
如果不明原因分享失败,建议检查一下API支持版本
8.
public interface ErrCode {
int ERR_OK = 0;
int ERR_COMM = -1;
int ERR_USER_CANCEL = -2;
int ERR_SENT_FAILED = -3;
int ERR_AUTH_DENIED = -4;
int ERR_UNSUPPORT = -5;
}
回调的错误代码,如果为-6检查一下签名是否有误。