将函数指针从native传递到java

时间:2013-09-16 11:42:20

标签: java android java-native-interface native

我正在使用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函数实际上是一个本机代码函数。

1 个答案:

答案 0 :(得分:0)

首先,您不能以Java端可以直接调用函数的方式将本机代码函数指针传递给Java。

但是你可以做的是将函数指针映射到整数(或枚举)标记并将它们返回到Java世界。然后定义并实现一个native方法,用于执行将函数指针标记作为参数的回调。该方法将令牌反向映射到函数指针,然后调用相应的函数来执行回调操作。