小程序开放能力-跳转app
2018-08-12 本文已影响579人
米奇小林
1.必要条件:app注册的微信公众号于小程序保持一致
2.场景值:
#1.App主动发起小程序卡片分享到微信,微信点击打开小程序,这时的小程序可以打开App.
#2.App主动发起打开小程序,这时的小程序可以打开App
满足以上条件,就可以实现相互跳转了。看看代码吧。
1.小程序端:
<button open-type="launchApp" app-parameter="wechat" binderror="launchApp">打开APP</button>
Page({
launchApp: function(e) {
console.log(e.detail.errMsg)
}
})
2.android 端(新建的activity必须)
public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
// 小程序发送消息到app
@Override
public void onReq(BaseReq arg0) {
switch (arg0.getType()) {
case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:
//// TODO: 2018/6/20
break;
case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:
// 小程序 跳转app
openApp((ShowMessageFromWX.Req) arg0);
break;
default:
break;
}
}
/**
* 小程序跳转app
*/
public void openApp(ShowMessageFromWX.Req showReq){
WXMediaMessage wxMsg = showReq.message;
WXAppExtendObject obj = (WXAppExtendObject) wxMsg.mediaObject;
/*wxMsg.description);
obj.extInfo
obj.filePath*/
// TODO: 2018/7/23 obj.extinfo 获取的 才是 小程序传递过来的信息
/*可以将小程序端的参数以json字符串的形式传递,app端做相应解析*/
/*
String msg = "小程序信息:\n"+"extinfo:"+obj.extInfo+"\nfilePath:"+obj.filePath+"\nfileData:"+obj.fileData;
ToastUtils.show(msg);*/
startActivity(new Intent(this, AppstartActivtiy.class));
finish();
}
@Override
public void onResp(BaseResp resp) {
..............
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// finish();
// setContentView(R.layout.activity_wx);
// handler.sendEmptyMessageDelayed(0x00, 500);
((MainApplication)getApplicationContext()).wxapi = (WXAPIFactory.createWXAPI(this, UserInfo.APP_ID,true));
((MainApplication)getApplicationContext()).wxapi.registerApp(UserInfo.APP_ID);
((MainApplication)getApplicationContext()).wxapi.handleIntent(getIntent(), this);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent);
}
}