因为并不是一个单纯的android项目,所以java中的函数需要抛给上层使用。
在andeoid新建两个文件:aliPayShare 和aliPayShareTransition
其中 aliPayShare用于对sdk方法的实现, aliPayShareTransition用于将aliPayShare包一层用于上层使用,aliPayShareTransition的代码如下,主要是为了封装成静态方法供c++层使用
package org.feimu.alinshare;
import com.lele.tzmj.R;
import org.feimu.alinshare.AliPayShare;
import org.cocos2dx.lua.AppActivity;
import org.feimu.common.Config;
/**
* Created by Administrator on 2018/3/10 0010.
*/
public class AliPayShareTransition {
public static AliPayShare _aliPayListener = new AliPayShare();
public static AppActivity _contex;
public static String app_id = null;
public static void init(AppActivity activity) {
_contex = activity;
app_id = _contex.getString(R.string.ALiPay_APP_ID);;
_aliPayListener.initSDK(_contex, app_id);
}
public static void sendWebPageMessage(String text, String imagePath, String title, String webUrl, boolean isSendToLivingCircle) {
_aliPayListener.sendWebPageMessage(text, imagePath, title, webUrl, isSendToLivingCircle);
}
public static void sendTextMessage(String text, boolean isSendToLivingCircle) {
_aliPayListener.sendTextMessage(text, isSendToLivingCircle);
}
public static void sendImageMessage(String imagePath, boolean isSendToLivingCircle) {
_aliPayListener.sendImageMessage(imagePath, isSendToLivingCircle);
}
public static native void aliShareResultCallBack(int result);
}
注意:native方法aliShareResultCallBack 在cpp层实现时一定要加extern "C" 使用c语言风格编译,不然java找不到native方法的实现。
在ali官方demo中每次sendReq时都会将当前activity.finish(),但是在我的项目中,如果finish()的花在分享完返回app时会发现此activity被销毁导致无法返回到app中。所以我选择屏蔽此finish。
在监听类 ShareEntryActivity中,当消息返回需要发送消息时,需要每发送一个消息就创建一个message。不然会提示message已经在使用的错误。