相关疑难解决方法(0)

onIabPurchaseFinished从未打过电话.

我一直在尝试为我的第一个应用程序设置应用内结算,并且一直在使用android.test.purchased sku.购买过来了,我设法将SKU放入我的库存中,但正如标题所示,onIabPurchaseFinished永远不会被调用.

我认为它可能与此日志有关:"无法保存哪个视图具有焦点,因为焦点视图com.android.internal.policy.impl.PhoneWindow$DecorView@406743d0没有id".在进入Google Play之前就会弹出.我不太确定这意味着什么......

发布购买:

mHelper.launchPurchaseFlow(this, sku, 10001, mPurchaseFinishedListener, "");
Run Code Online (Sandbox Code Playgroud)

和听众:

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {

    @Override
    public void onIabPurchaseFinished(IabResult result, Purchase info) {
        System.out.println("Purchase Finish heard something");

        if (result.isFailure()) {
             Log.d(TAG, "Error purchasing: " + result);
             return;
        } else{
                Log.d(TAG,"Success!");
             }


    }
};
Run Code Online (Sandbox Code Playgroud)

android in-app-billing

110
推荐指数
2
解决办法
1万
查看次数

Android应用内结算:无法启动异步操作,因为另一个异步操作(正在进行中)

我正在使用IabHelperGoogle的教程推荐的实用程序类,我受到这个错误的打击.显然IabHelper无法同时运行多个异步操作.我甚至设法通过尝试开始购买,同时库存盘点仍在进行中.

我已经尝试onActivityResult在我的主类中实现这里建议,但我甚至在错误命中之前都没有调用该方法.然后我发现了这个,但我不知道在哪里找到这个flagEndAsync方法 - 它不在IabHelper课堂上.

现在我正在寻找解决这个问题的方法(没有重新实现整个她的爆炸).我能想到的唯一解决方案是创建一个asyncActive在异步任务启动之前检查的布尔字段,如果有另一个任务处于活动状态,则不执行此操作.但是这有许多其他问题,并且不适用于各种活动.此外,我希望有一个异步任务队列,并在允许的情况下尽快运行,而不是根本不运行.

针对这个问题的解决方案?

android android-billing

70
推荐指数
8
解决办法
3万
查看次数

Android应用内购买:签名验证失败

我已经尝试了几天来解决这个问题,使用SDK附带的Dungeons演示代码.我试过谷歌寻求答案,但找不到答案.

  • 在Dungeons演示中,我从开发控制台传递了我的公钥.
  • 签名apk并上传到控制台没有发布.
  • 测试android.test.purchased在控制台上创建的产品列表和已发布的订阅(我想要的应用程序的主要功能).

但我仍然得到错误,Signature verification failed然后签名与数据不匹配.我怎么解决这个问题?

public static ArrayList<VerifiedPurchase> verifyPurchase(String signedData, String signature)
{
    if (signedData == null) {
        Log.e(TAG, "data is null");
        return null;
    }
    if (Consts.DEBUG) {
        Log.i(TAG, "signedData: " + signedData);
    }
    boolean verified = false;
    if (!TextUtils.isEmpty(signature)) {

        String base64EncodedPublicKey = "MIIBIjA....AQAB";
        PublicKey key = Security.generatePublicKey(base64EncodedPublicKey);
        verified = Security.verify(key, signedData, signature);
        if (!verified) {
            Log.w(TAG, "signature does not match data.");
            return null;
        }
    }
}

public static boolean verify(PublicKey publicKey, String …
Run Code Online (Sandbox Code Playgroud)

android signing in-app-billing

66
推荐指数
6
解决办法
4万
查看次数

Android结算例外

我正在测试我的账单,我得到了这个例外:

java.lang.IllegalStateException: Can't start async operation (launchPurchaseFlow) because another async operation(launchPurchaseFlow) is in progress.
        at utils.IabHelper.flagStartAsync(IabHelper.java:711)
        at utils.IabHelper.launchPurchaseFlow(IabHelper.java:316)
        at utils.IabHelper.launchPurchaseFlow(IabHelper.java:294)
        at com.problemio.SubscribeIntroActivity$6.onClick(SubscribeIntroActivity.java:117)
        at android.view.View.performClick(View.java:2532)
        at android.view.View$PerformClick.run(View.java:9308)
        at android.os.Handler.handleCallback(Handler.java:587)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:150)
        at android.app.ActivityThread.main(ActivityThread.java:4293)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:507)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
        at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

我运行此代码后:

    Button subscribe = (Button)findViewById(R.id.subscribe);
    subscribe.setOnClickListener(new Button.OnClickListener() 
    {  
       public void onClick(View v) 
       {              
           // FIRST CHECK IF THE USER IS ALREADY A SUBSCRIBER.
          mHelper.launchPurchaseFlow(SubscribeIntroActivity.this, SUBSCRIBE_SKU, RC_REQUEST, mPurchaseFinishedListener);

       }
    });   
Run Code Online (Sandbox Code Playgroud)

但在此之前,我将其作为测试用户运行,并使用测试产品ID,即:android.test.purchased并且它有效.但是,当我将产品ID更改为我自己的产品ID时,它会因上述异常而崩溃.

有没有想过为什么会这样?谢谢!

android android-billing

23
推荐指数
1
解决办法
8922
查看次数

Fragment中没有onActivityResult().对于应用内结算

我正在关注Google的教程和代码示例,了解如何实施应用内结算.问题是我在片段中这样做.

直到最后一步,一切似乎都没有实现,但是我应该实现这个方法:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);
        if (mHelper == null) return;

        // Pass on the activity result to the helper for handling
        if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
            // not handled, so handle it ourselves (here's where you'd
            // perform any handling of activity results not related to in-app
            // billing...
            super.onActivityResult(requestCode, resultCode, data);
        }
        else {
            Log.d(TAG, "onActivityResult handled by …
Run Code Online (Sandbox Code Playgroud)

java android in-app-billing

2
推荐指数
1
解决办法
3375
查看次数

标签 统计

android ×5

in-app-billing ×3

android-billing ×2

java ×1

signing ×1