【问题标题】:Cannot implement the onActivityResult Method properly for In App billing in Android无法为 Android 中的应用内计费正确实现 onActivityResult 方法
【发布时间】:2016-08-06 08:01:14
【问题描述】:

首先,我使用了http://www.tutorialsface.com/2016/05/implementing-remove-ads-in-app-purchases-in-android-tutorial-example/ 的想法,有一个单独的类来处理 InApp 计费。

我开始计费的班级已经有一个 onActivityResult 方法,我将其更改为:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{

    if (mHelper == null) return;


    if (!mHelper.handleActivityResult(requestCode, resultCode, data))
    {

        if(requestCode==3)
        {
            // Construct the data source
            ArrayList<Service> arrayOfServices = new ArrayList<Service>();
            arrayOfServices = db.getAllServices();
            // Create the adapter to convert the array to views
            CatalogueAdapter adapter = new CatalogueAdapter(this, arrayOfServices);
            // Attach the adapter to a ListView
            myServices.setAdapter(adapter);
            adapter.notifyDataSetChanged();
        }

        if (requestCode == 1111 && resultCode == RESULT_OK)
        {
            String emailAddress = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);

            Calendar c = Calendar.getInstance();
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH:mm");
            String formattedDate = df.format(c.getTime());
            possibleEmail=md5(emailAddress + formattedDate);

            startBilling.purchaseRemoveAds(possibleEmail);

        }

    }else 
       {
        //Log.d(TAG, "onActivityResult handled by IABUtil.");
       }

}

首先,我想获得主谷歌帐户并与当前日期一起加密,然后开始计费过程。但是在我收到电子邮件的对话框前面,我有 InApp Billing 的对话框。

所以我想把StartBilling的方法放在Activity Result里面。

但即使我首先收到电子邮件对话框,我也会在 mHelper 上得到一个空值,所以接下来什么也没有发生。如何解决这个问题?

我应该执行以下操作吗?:

@Override
protected void onResume() {
    super.onResume();
    if(possibleEmail!=null)
    {
        startBilling.purchaseRemoveAds(possibleEmail);
    }
}

【问题讨论】:

  • 可能不相关:您在开头错过了 super.onActivityResult 呼叫。
  • 为什么开头需要super.onActivityResult?
  • 没有它 onActivityResult 在片段中将无法工作。如果你想说“我没有任何碎片”,总有一天你会说,你会想,为什么它们不起作用。

标签: android in-app-billing android-inapp-purchase


【解决方案1】:

空对象引用来自没有初始化我的第二个活动的 mHelper onCreate 方法,所以我做了

mHelper = startBilling.mHelper; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    相关资源
    最近更新 更多