Java 从其他活动查询IAP库存
Im我的应用我正在使用应用内购买升级到高级,我有一个活动PremiumPurchase.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
//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);
我可以从这个活动中查询购买情况,但我也想从另一个活动中查询,我该怎么做?我想如果您每次都在