JSInterface からアプリ内購入を起動する方法を開発しようとしています。
私は2つのクラスを持っています。
1 つ目は、Iabhelper を使用して inAppBilling を実装した MainActivity です。このアクティビティには、アイテムを購入するために使用する方法が含まれています。
protected void purchaseItem(String sku_item) {
final String sku = sku_item;
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase){
if (result.isFailure()) {
Log.e("PURCHASE","Error : "+ sku);
return;
}
else if (purchase.getSku().equals(sku)) {
Log.e("PURCHASE","OK : " + sku);
}
}
};
mHelper.launchPurchaseFlow(this, sku, 10001, mPurchaseFinishedListener, "mypurchasetoken");
}
2 つ目は、ユーザーが webview でクリックしたアイテムの sku を取得する JsInterface です。
public class jsinterface {
Context mContext;
/** Instantiate the interface and set the context */
jsinterface(Context c) { mContext = c; }
@JavascriptInterface
public void purchaseSku(String sku) {
Log.e("JSInterface","Purchase SKU : " + sku);
MainActivity cls2= new MainActivity();
cls2.purchaseItem(sku);
}
}
私のテストでは、次のことが示されています。
purchaseItem() from MainActivity is ok and functional
purchaseSku() from JsInterface is catching the right sku from user's click
But purchaseSku() seems to fail calling purchaseItem() from MainActivity... Nothing happens. Do you have any idea of what i'm doing wrong and how i can correctly fire purchaseItem() from purchaseSku() ?