第一次接这个东西,留下记录!
首先的首行先到微信开发者中心申请appid,然后再继续往下看。
不想要回调的直接跳过此步骤
1、在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity,并在manifest文件里面加上exported属性,设置为true。实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法。
在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法。当微信发送请求到你的应用,将通过IWXAPIEventHandler接口的onReq方法进行回调,类似的,应用请求微信的响应结果将通过onResp回调。
其中,必须要新建WXEntryActivity类,实现IWXAPIEventHandler接口,同时该文件必须在xxx.xxx.xxx.wxapi包下,回调才有作用 ICON大小也要注意,否则会出现拉不出微信界面的情况
直接贴出WXEntryActivity代码
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
private IWXAPI api;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
api = WXAPIFactory.createWXAPI(this,
"wx8888888888", 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(this, result, Toast.LENGTH_LONG).show();
// TODO 微信分享 成功之后调用接口
finish();
}
}
2、在androidmanifase.xml中添加如下代码
<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:theme="@android:style/Theme.Translucent" >
</activity>
3、在主activity中添加函数,上代码,ps(记得要把demo中的Util.java文件拷到你自己的工程中)
public static void sendMsgToFriend(){
try {
Message message = handle.obtainMessage();
message.what = 4;
handle.sendMessage(message);
} catch (Exception e) {
e.printStackTrace();
return;
}
}
public static void sendMsgToTimeLine() {
try {
Message message = handle.obtainMessage();
message.what = 5;
handle.sendMessage(message);
} catch (Exception e) {
e.printStackTrace();
return;
}
}
private static String buildTransaction(final String type) {
return (type == null) ? String.valueOf(System.currentTimeMillis())
: type + System.currentTimeMillis();
}
4、我是把实现过程放在主线中的
case 4:
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = ShareURL;
WXMediaMessage msg2 = new WXMediaMessage(webpage);
msg2.title = shareTitle;
msg2.description = shareTitle;
Bitmap thumb = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon);
msg2.thumbData = Util.bmpToByteArray(thumb, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
// req.transaction = buildTransaction("webpage");
req.transaction = String.valueOf(System.currentTimeMillis());
req.message = msg2;
req.scene = SendMessageToWX.Req.WXSceneSession;
api.sendReq(req);
break;
case 5:
if(api.getWXAppSupportAPI() >= 0x21020001)
{
WXWebpageObject webpage2 = new WXWebpageObject();
webpage2.webpageUrl = ShareURL;
WXMediaMessage msg3 = new WXMediaMessage(webpage2);
msg3.title = shareTitle;
msg3.description = shareTitle;
Bitmap thumb2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon);
msg3.thumbData = Util.bmpToByteArray(thumb2, true);
SendMessageToWX.Req req2 = new SendMessageToWX.Req();
req2.transaction = buildTransaction("webpage");
req2.message = msg3;
req2.scene = SendMessageToWX.Req.WXSceneTimeline;
api.sendReq(req2);
}
else{
oast.makeText(context, "微信版本过低", Toast.LENGTH_SHORT).show();
}
break;
5、C++层
void HelloWorld::sendToFriend()
{
JniMethodInfo t;
bool isHave = JniHelper::getStaticMethodInfo(t,PACKAGENAME,"sendMsgToFriend", "()V");
if (!isHave) {
GXLOG("jni:sendMsgToFriend is null");
}else{
//调用此函数
t.env->CallStaticVoidMethod(t.classID, t.methodID);
t.env->DeleteLocalRef(t.classID);
}
}
void HelloWorld::sendToTimeLine()
{
JniMethodInfo t;
bool isHave = JniHelper::getStaticMethodInfo(t, PACKAGENAME, "sendMsgToTimeLine", "()V");
if (!isHave) {
GXLOG("jni:sendMsgToTimeLine is null");
}
else{
//调用此函数
t.env->CallStaticVoidMethod(t.classID, t.methodID);
t.env->DeleteLocalRef(t.classID);
}
}
6、在onCreate中要初始化一下,不要忘了
private static IWXAPI api;
api = WXAPIFactory.createWXAPI(this, APP_ID, true);
api.registerApp(APP_ID);
到此你应该就可以分享了。。。