我正在使用JNI从java库(JAR)调用一些函数。其中一个函数需要一个具有一些回调(成功和错误)的监听器。处理这些回调所需的函数是本机代码。是否可以从本机代码创建具有这些本机函数的侦听器并通过JNI传递它?
界面本身不公开,但它与InApp购买的内容相同,您可以使用Google帮助程序启动购买流程:
mHelper.launchPurchaseFlow(activity, mItems[idx], idx, mPurchaseFinishedListener, "");
mPurcahseFinishedListener就像
`
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener()
{
public void onIabPurchaseFinished(IabResult result, Purchase purchase)
{
Log.v("YER", "Its here");
}
};
`
这个想法是onIabPurchaseFinished函数实际上是一个本机代码函数。
答案 0 :(得分:0)
首先,您不能以Java端可以直接调用函数的方式将本机代码函数指针传递给Java。
但是你可以做的是将函数指针映射到整数(或枚举)标记并将它们返回到Java世界。然后定义并实现一个native
方法,用于执行将函数指针标记作为参数的回调。该方法将令牌反向映射到函数指针,然后调用相应的函数来执行回调操作。