Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从其他活动查询IAP库存_Java_Android_In App Purchase_In App Billing_Android Billing - Fatal编程技术网

Java 从其他活动查询IAP库存

Java 从其他活动查询IAP库存,java,android,in-app-purchase,in-app-billing,android-billing,Java,Android,In App Purchase,In App Billing,Android Billing,Im我的应用我正在使用应用内购买升级到高级,我有一个活动PremiumPurchase.java,从这里我可以查看高级功能并进行购买 IAP部分看起来像这样 //PREMIUM UPGRADE----------------------------------------------------------------------------------------- // User clicked the "Upgrade to Premium" button. pub

Im我的应用我正在使用应用内购买升级到高级,我有一个活动PremiumPurchase.java,从这里我可以查看高级功能并进行购买

IAP部分看起来像这样

//PREMIUM UPGRADE-----------------------------------------------------------------------------------------

    // User clicked the "Upgrade to Premium" button.
       public void onUpgradeAppButtonClicked(View arg0) {
           Log.d(TAG, "Upgrade button clicked; launching purchase flow for upgrade.");
      //     setWaitScreen(true);
           if (!isPurchasing) {
               mHelper.queryInventoryAsync(mGotInventoryListener);
               isPurchasing = true;
               showLoading();
           }

         //  mHelper.launchPurchaseFlow(this, SKU_PREMIUM, RC_REQUEST, mPurchaseFinishedListener);


       }
       private void startPremiumPurchase(){
           Log.d(TAG, "Starting Premium purchase");
           mHelper.launchPurchaseFlow(this, SKU_PREMIUM, RC_REQUEST, mPurchaseFinishedListener);

       }


       ServiceConnection mServiceConn = new ServiceConnection() {
           @Override
           public void onServiceDisconnected(ComponentName name) {
               mService = null;
           }

           @Override
           public void onServiceConnected(ComponentName name, 
              IBinder service) {
               mService = IInAppBillingService.Stub.asInterface(service);

               ArrayList skuList = new ArrayList();
               skuList.add(SKU_PREMIUM);
               Bundle querySkus = new Bundle();
               querySkus.putStringArrayList("ITEM_ID_LIST", skuList);


                Bundle skuDetails;
                try {
                    skuDetails = mService.getSkuDetails(3, 
                               getPackageName(), "inapp", querySkus);


                int response = skuDetails.getInt("RESPONSE_CODE");
                if (response == 0) {
                   ArrayList<String> responseList = skuDetails.getStringArrayList("DETAILS_LIST");

                   for (String thisResponse : responseList) {
                      JSONObject object = new JSONObject(thisResponse);
                      String sku = object.getString("productId");
                      String price = object.getString("price");
                      if (sku.equals(SKU_PREMIUM)) premiumUpgradePrice = price;
                      if (!isPremium) {
                        CharSequence premiumBtnTxt = premiumBtn.getText();
                         premiumBtn.setText(premiumBtnTxt + " "+premiumUpgradePrice);
                    }
                   }
                }
                } catch (RemoteException e) {
                    e.printStackTrace();
                } catch (JSONException e) {
                    e.printStackTrace();
                }


           }
        };


    // Callback for when a purchase is finished
       IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
           public void onIabPurchaseFinished(IabResult result, Purchase purchase) {

               Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);
               dialog.cancel();
               int duration = Toast.LENGTH_SHORT;
               if (result.isFailure()) {
                   Log.d(TAG, "WARNING problem with purchase");
                   // Oh noes!
                   return;
               }
               if (purchase.getSku().equals(SKU_PREMIUM)) {
                   Log.d(TAG, "Purchased premium upgrade. Congratulating user.");

                   isPremium = true;
                   savePrefs();

                   Toast.makeText(getBaseContext(), R.string.premium_upgrade_success, duration).show();
               }
           }
       };
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);

        // 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 IABUtil.");
        }
    }


    IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
           public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
               Log.d(TAG, "Query inventory finished.");

               if (result.isFailure()) {
                   Log.d(TAG, "Quering inventory failed."+ result);
                   dialog.cancel();
                   return;
               }

               Log.d(TAG, "Query inventory was successful.");


               // Do we have the premium upgrade?
                isPremium = inventory.hasPurchase(SKU_PREMIUM);

               Log.d(TAG, "User is " + (isPremium ? "PREMIUM" : "NOT PREMIUM"));
               savePrefs();

               isPurchasing = false;

               if (isPremium) {
                   Toast.makeText(getBaseContext(), R.string.already_premium, Toast.LENGTH_SHORT).show();
                   Log.d(TAG, "You're already premium");
                   dialog.cancel();
               }
               else {
                   startPremiumPurchase();
               }
               Log.d(TAG, "Initial inventory query finished; enabling main UI.");
           }
       };
//高级升级-----------------------------------------------------------------------------------------
//用户单击“升级到高级”按钮。
已取消公共void onupgradeAppButton(视图arg0){
Log.d(标记“单击升级按钮;启动升级的购买流”);
//设置等待屏幕(真);
如果(!i采购){
mHelper.queryInventoryAsync(mGotInventoryListener);
isPurchasing=true;
showLoading();
}
//mHelper.launchPurchaseFlow(此、SKU高级、RC请求、mPurchaseFinishedListener);
}
私有void startPremiumPurchase(){
Log.d(标签“开始高级购买”);
mHelper.launchPurchaseFlow(此、SKU高级、RC请求、mPurchaseFinishedListener);
}
ServiceConnection MSServiceConn=新的ServiceConnection(){
@凌驾
ServiceDisconnected上的公共无效(组件名称){
mService=null;
}
@凌驾
服务连接上的公共无效(组件名称,
IBinder服务){
mService=IInAppBillingService.Stub.asInterface(服务);
ArrayList skuList=新的ArrayList();
skuList.添加(SKU_PREMIUM);
Bundle querySkus=新Bundle();
querySkus.putStringArrayList(“项目ID列表”,skuList);
详细信息;
试一试{
skuDetails=mService.getSkuDetails(3,
getPackageName(),“inapp”,querySkus);
int response=skuDetails.getInt(“response_CODE”);
如果(响应==0){
ArrayList responseList=skuDetails.getStringArrayList(“详细信息列表”);
for(字符串thisResponse:responseList){
JSONObject对象=新的JSONObject(此响应);
String sku=object.getString(“productId”);
String price=object.getString(“price”);
如果(sku.等于(sku_溢价))价格等于价格;
如果(!isPremium){
CharSequence premiumBtnTxt=premiumBtn.getText();
premiumBtn.setText(premiumBtnTxt+“”+premiumpgradeprice);
}
}
}
}捕获(远程异常){
e、 printStackTrace();
}捕获(JSONException e){
e、 printStackTrace();
}
}
};
//购买完成时的回调
IabHelper.OnIabPurchaseFinishedListener MPpurchaseFinishedListener=新的IabHelper.OnIabPurchaseFinishedListener(){
public void onIabPurchaseFinished(IabResult结果,采购){
日志d(标记“采购完成:+结果+”,采购:+采购);
dialog.cancel();
int duration=Toast.LENGTH\u SHORT;
if(result.isFailure()){
Log.d(标签“购买时出现警告问题”);
//哦,不!
返回;
}
if(purchase.getSku()等于(SKU_PREMIUM)){
Log.d(标签“购买了高级升级。祝贺用户”);
isPremium=真;
savePrefs();
Toast.makeText(getBaseContext(),R.string.premium\u升级成功,持续时间).show();
}
}
};
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
Log.d(标记“onActivityResult”(“+requestCode+”,“+resultCode+”,“+data”);
//将活动结果传递给助手进行处理
if(!mHelper.handleActivityResult(请求代码、结果代码、数据)){
//没有处理,所以自己处理(这里是你想要的
//执行任何与应用内活动无关的活动结果处理
//帐单。。。
super.onActivityResult(请求代码、结果代码、数据);
}
否则{
Log.d(标记“onActivityResult由IABUtil处理”);
}
}
IabHelper.QueryInventoryFinishedListener mGotInventoryListener=新IabHelper.QueryInventoryFinishedListener(){
QueryInventoryFinished上的公共无效(IABREACT结果,库存){
Log.d(标记“查询库存完成”);
if(result.isFailure()){
Log.d(标签“查询库存失败”。+结果);
dialog.cancel();
返回;
}
Log.d(标记“查询库存成功”);
//我们有特级升级吗?
isPremium=存货。hasPurchase(SKU_溢价);
Log.d(标记“用户是”+(isPremium?“高级”:“非高级”);
savePrefs();
isPurchasing=false;
if(isPremium){
Toast.makeText(getBaseContext(),R.string.ready_premium,Toast.LENGTH_SHORT).show();
Log.d(标记为“您已经是优质的”);
dialog.cancel();
}
否则{
startPremiumPurchase();
}
d(标记“初始库存查询完成;启用主UI”);
}
};
用于查询采购
mHelper.queryInventoryAsync(mGotInventoryListener);

我可以从这个活动中查询购买情况,但我也想从另一个活动中查询,我该怎么做?

我想如果您每次都在