0

我使用 JNI 从 Java 库(JAR)中调用一些函数。其中一个函数需要一个具有一些回调(成功和错误)的侦听器。处理这些回调所需的函数在本机代码中。是否可以使用本机代码中的这些本机函数创建一个侦听器并通过 JNI 传递它?

该界面本身不是公开的,但它与 InApp Purchase 的工作方式相同,您可以在其中使用 google helper 启动购买流程:

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 函数实际上是一个原生代码函数。

4

1 回答 1

0

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

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

于 2013-09-16T12:07:44.063 回答