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 (将#修改为@)