Android Open Source - Munin-for-Android Billing Service






From Project

Back to project page Munin-for-Android.

License

The source code is released under:

GNU General Public License

If you think the Android project Munin-for-Android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.chteuchteu.munin.hlpr;
/*from  ww  w  .j  a v a2 s .com*/
import android.app.Activity;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;

import com.android.vending.billing.IInAppBillingService;

public class BillingService {
  private static BillingService instance;
  
  private IInAppBillingService mService;
  private ServiceConnection mServiceConn;
  private Context activityContext;
  
  private boolean isBound = false;
  
  private static final int REQUEST_CODE = 1664;
  
  public static final String DONATE_1 = "donate_1";
  public static final String DONATE_2 = "donate_2";
  public static final String DONATE_5 = "donate_5";
  public static final String DONATE_20 = "donate_20";
  
  private ProgressDialog progressDialog;
  private String productToBuy;
  
  private BillingService(Context activityContext) {
    loadInstance(activityContext);
  }
  
  private BillingService(Context activityContext, String product, ProgressDialog progressDialog) {
    this.productToBuy = product;
    this.progressDialog = progressDialog;
    loadInstance(activityContext);
  }
  
  private void loadInstance(final Context activityContext) {
    if (activityContext != null && this.activityContext == null)
      this.activityContext = activityContext;
    
    mServiceConn = new ServiceConnection() {
      @Override
      public void onServiceDisconnected(ComponentName name) {
        mService = null;
      }
      @Override
      public void onServiceConnected(ComponentName name, IBinder service) {
        mService = IInAppBillingService.Stub.asInterface(service);
        
        // Service connected : we can now check if the user has purchased smth for example
        launchPurchase(productToBuy);
        
        unbind();
      }
    };
    Intent intent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
    intent.setPackage("com.android.vending");
    isBound = activityContext.bindService(intent, mServiceConn, Context.BIND_AUTO_CREATE);
  }
  
  private void launchPurchase(String product) {
    progressDialog.dismiss();
    
    try {
      Bundle buyIntentBundle = mService.getBuyIntent(3, activityContext.getPackageName(), product, "inapp", "");
      PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
      ((Activity) activityContext).startIntentSenderForResult(pendingIntent.getIntentSender(),
          REQUEST_CODE, new Intent(), 0, 0, 0);
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  private void unbind() {
    if (mService != null && isBound) {
      try {
        isBound = false;
        activityContext.unbindService(mServiceConn);
      } catch (Exception ex) { ex.printStackTrace(); }
    }
  }
  
  public static BillingService getInstance() { return instance; }
  private void setProductToBuy(String val) { this.productToBuy = val; }
  private void setProgressDialog(ProgressDialog val) { this.progressDialog = val; }
  
  public static synchronized BillingService getInstance(Context activityContext) {
    if (instance == null)
      instance = new BillingService(activityContext);
    return instance;
  }
  
  public static synchronized BillingService getInstanceAndPurchase(Context activityContext, String product,
      ProgressDialog progressDialog) {
    if (instance == null)
      instance = new BillingService(activityContext, product, progressDialog);
    else {
      // Instance already defined : just have to loadInstance again
      instance.setProductToBuy(product);
      instance.setProgressDialog(progressDialog);
      instance.loadInstance(activityContext);
    }
    return instance;
  }
}




Java Source Code List

com.chteuchteu.munin.BootReceiver.java
com.chteuchteu.munin.CustomSSLFactory.java
com.chteuchteu.munin.MuninFoo.java
com.chteuchteu.munin.Service_Notifications.java
com.chteuchteu.munin.adptr.Adapter_ExpandableListView.java
com.chteuchteu.munin.adptr.Adapter_GraphView.java
com.chteuchteu.munin.adptr.Adapter_IconList.java
com.chteuchteu.munin.adptr.Adapter_SeparatedList.java
com.chteuchteu.munin.exc.ImportExportWebserviceException.java
com.chteuchteu.munin.exc.NullMuninFooException.java
com.chteuchteu.munin.exc.TrialExpirationDateReached.java
com.chteuchteu.munin.hlpr.BillingService.java
com.chteuchteu.munin.hlpr.DatabaseHelper.java
com.chteuchteu.munin.hlpr.DigestUtils.java
com.chteuchteu.munin.hlpr.DocumentationHelper.java
com.chteuchteu.munin.hlpr.DrawerHelper.java
com.chteuchteu.munin.hlpr.DynazoomHelper.java
com.chteuchteu.munin.hlpr.EncryptionHelper.java
com.chteuchteu.munin.hlpr.GridDownloadHelper.java
com.chteuchteu.munin.hlpr.I18nHelper.java
com.chteuchteu.munin.hlpr.ImportExportHelper.java
com.chteuchteu.munin.hlpr.JSONHelper.java
com.chteuchteu.munin.hlpr.MediaScannerUtil.java
com.chteuchteu.munin.hlpr.NetHelper.java
com.chteuchteu.munin.hlpr.SQLite.java
com.chteuchteu.munin.hlpr.Util.java
com.chteuchteu.munin.obj.AlertsWidget.java
com.chteuchteu.munin.obj.GraphWidget.java
com.chteuchteu.munin.obj.GridItem.java
com.chteuchteu.munin.obj.Grid.java
com.chteuchteu.munin.obj.HTTPResponse_Bitmap.java
com.chteuchteu.munin.obj.HTTPResponse.java
com.chteuchteu.munin.obj.Label.java
com.chteuchteu.munin.obj.MuninMaster.java
com.chteuchteu.munin.obj.MuninPlugin.java
com.chteuchteu.munin.obj.MuninServer.java
com.chteuchteu.munin.obj.SearchResult.java
com.chteuchteu.munin.ui.Activity_About.java
com.chteuchteu.munin.ui.Activity_AlertsPluginSelection.java
com.chteuchteu.munin.ui.Activity_Alerts.java
com.chteuchteu.munin.ui.Activity_GoPremium.java
com.chteuchteu.munin.ui.Activity_GraphView.java
com.chteuchteu.munin.ui.Activity_Grid.java
com.chteuchteu.munin.ui.Activity_Grids.java
com.chteuchteu.munin.ui.Activity_Label.java
com.chteuchteu.munin.ui.Activity_Labels.java
com.chteuchteu.munin.ui.Activity_Main.java
com.chteuchteu.munin.ui.Activity_Notifications.java
com.chteuchteu.munin.ui.Activity_Plugins.java
com.chteuchteu.munin.ui.Activity_Server.java
com.chteuchteu.munin.ui.Activity_ServersEdit.java
com.chteuchteu.munin.ui.Activity_Servers.java
com.chteuchteu.munin.ui.Activity_Settings.java
com.chteuchteu.munin.ui.HackyDrawerLayout.java
com.chteuchteu.munin.ui.MuninActivity.java
com.chteuchteu.munin.wdget.Widget_AlertsWidget_Configure.java
com.chteuchteu.munin.wdget.Widget_AlertsWidget_ViewsFactory.java
com.chteuchteu.munin.wdget.Widget_AlertsWidget_WidgetProvider.java
com.chteuchteu.munin.wdget.Widget_AlertsWidget_WidgetService.java
com.chteuchteu.munin.wdget.Widget_GraphWidget_Configure.java
com.chteuchteu.munin.wdget.Widget_GraphWidget_WidgetProvider.java
com.mobeta.android.dslv.DragSortController.java
com.mobeta.android.dslv.DragSortCursorAdapter.java
com.mobeta.android.dslv.DragSortItemViewCheckable.java
com.mobeta.android.dslv.DragSortItemView.java
com.mobeta.android.dslv.DragSortListView.java
com.mobeta.android.dslv.ResourceDragSortCursorAdapter.java
com.mobeta.android.dslv.SimpleDragSortCursorAdapter.java
com.mobeta.android.dslv.SimpleFloatViewManager.java
org.taptwo.android.widget.CircleFlowIndicator.java
org.taptwo.android.widget.FlowIndicator.java
org.taptwo.android.widget.TitleFlowIndicator.java
org.taptwo.android.widget.TitleProvider.java
org.taptwo.android.widget.ViewFlow.java
uk.co.senab.photoview.Compat.java
uk.co.senab.photoview.IPhotoView.java
uk.co.senab.photoview.PhotoViewAttacher.java
uk.co.senab.photoview.PhotoView.java
uk.co.senab.photoview.SDK16.java
uk.co.senab.photoview.ScrollerProxy.java
uk.co.senab.photoview.VersionedGestureDetector.java