微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android应用内付款弹出式窗口只会触发一次

如何解决Android应用内付款弹出式窗口只会触发一次

我之前问过类似的问题,然后我解决了这一部分。但是,当我在Google控制台网站上注册为公开测试并尝试通过将其放在平板电脑上进行应用内付款时,我第一次安装该应用程序时会出现一个付款弹出窗口,但是从第二次开始就没有出现。执行bp.purchase函数并将返回值输出到toast,但是返回值继续为true,并且onBillingInitalize函数执行良好。因此,即使我删除了该应用程序并尝试再次安装它,该弹出窗口仍然没有出现。有趣的是,弹出窗口在首次安装该应用程序时出现一次,并且没有其他错误。 下面是我的代码

@Override
protected void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Log.d("TAG","key : " + base64_key);

    bp = new BillingProcessor(this,base64_key,this);
    bp.initialize();

    if(bp == null)
        Toast.makeText(this,"fail",Toast.LENGTH_SHORT).show();

    else
        Toast.makeText(this,"success",Toast.LENGTH_SHORT).show();

    setMenuButtonListener();
    setSideMenuButtonListener();

    ProgressBar progressbar = setLoadingLayout();
    ListView listview = findViewById(R.id.listview);

    is_load_finish = false;

    setNewsLayout(0,10,progressbar,true,0);
    listview.setonScrollListener(this);
}

private boolean setSideMenuButtonListener() {
    Button btn = (Button) findViewById(R.id.draw_button1);

    btn.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            try {
                Boolean result = bp.purchase(MainActivity.this,"1000coin");
                Toast.makeText(MainActivity.this,result.toString(),Toast.LENGTH_SHORT).show();

            } catch(Exception e) {
                Log.d("TAG","err : " + e.toString());
            }
        }
    });

    return true;
}

@Override
public void onProductPurchased(@NonNull String productId,@Nullable TransactionDetails details) {
    Toast.makeText(this,"thanks!",Toast.LENGTH_SHORT).show();
    //if(this.bp != null) bp.release();
}

@Override
public void onPurchaseHistoryRestored() {
    
}

@Override
public void onBillingError(int errorCode,@Nullable Throwable error) {
    Toast.makeText(this,"err : " + Integer.toString(errorCode),Toast.LENGTH_SHORT);

    if(errorCode != com.anjlab.android.iab.v3.Constants.BILLING_RESPONSE_RESULT_USER_CANCELED) {
        Toast.makeText(this,"error!!",Toast.LENGTH_SHORT).show();
    }
}

@Override
public void onBillingInitialized() {
    Toast.makeText(MainActivity.this,"init",Toast.LENGTH_SHORT).show();
}

@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data) {
    if (!bp.handleActivityResult(requestCode,resultCode,data)) {
        super.onActivityResult(requestCode,data);
    }
}

@Override
public void onDestroy() {
    if (bp != null) {
        bp.release();
    }

    super.onDestroy();
}

当我运行该应用程序时,将执行onBillingInitalized函数,可以很好地显示吐司的内容,并且购买函数的返回值也为true,因此没有问题。如果有人遇到过这种情况,知道原因或代码有问题,请提供帮助。 (我问了一个社区同样的问题,他们说由于onBillingError函数它可能无法运行。可能吗?)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。