Monetize Your Free Android App by Creating a Paid App to Unlock Additional Features

There are several different methods of monetizing Android apps including ads, pay services as well as a paid version of the app itself. Often there is a need to create a lite version of your application, which includes reduced functionality and/or ads. Depending on the design of your application it may be possible for a user to purchase the paid version and uninstall the lite version. However, if your app includes local databases, preferences and/or local files, which must be retained, then you would not want the user to uninstall the lite version as it would wipe out their information. Thus you would want to provide the user with the ability to purchase a paid version that would unlock additional features in the free version.

At a basic level, your free application would need to direct the user to the paid version in the Android Market whenever the user tries to access a feature that is unlocked by the paid app. The following code snippet demonstrates one method for directing the user to the paid application.

Intent goToMarket = null; 
goToMarket = new
Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=com.my.paid.packagename"));
startActivity(goToMarket);

An important item to note within the Intent is the market:// URI. The package id used in the URI is case sensitive so this Intent will only work if it is an exact match for your paid package id. Next, your free application will need to detect the presence of the paid app and allow the user to access the appropriate functions. There are several different ways to accomplish this with varying levels of complexity. The simplest method is to look through the list of installed applications for one that matches your paid version. Here is an example method that allows you to do just that.

public static final boolean IsPaidVersionInstalled(Context ctx) 
 {
 String PaidPackageName = "com.my.paid.packagename"; 
 
 //Grab the Installed Application Info to try to find the one we are looking for 
 List list = ctx.getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA); 
 
 //Loop through the packages and make sure the donate package is actually installed 
 int i = 0; 
 
 for (i=0 ; i { 
 ApplicationInfo ai = list.get(i); 
 
 if (ai.packageName.equals(PaidPackageName)) 
 { 
 return true; 
 } 
 }
 
 return false; 
 }

This method, IsPaidVersionInstalled, first pulls back a list of installed applications and loops through the list looking for the package id of the paid app. Thus you could use this method to determine if the user purchased the paid version and if not, display a pop up message and send them to the Market to purchase it.

Conclusion

The above code blocks provide you with the ability to detect the presence of a paid version and/or send the user to the Market to purchase it if desired. This approach is simple to understand; however, it does have a flaw. Simply detecting the presence of a paid version does not guarantee it is the paid app you created. Someone could create a dummy app with the identical package name and install it manually on to their devices. While this is fairly unlikely it is recommended to add a second factor for verifying the creator of the paid application. There are a couple of methods for accomplishing this such as creating a custom provider within your paid app, then build code within the free version, which would periodically query the provider. In any case, adding the ability for a free app to detect a paid version is a simple process, which can drastically increase the ability to monetize your app.

Android Development Tools Section Index



About the Author

Chris Bennett

Chris Bennett is a Manager with Crowe Horwath LLP in the Indianapolis office. He can be reached at chris.bennett@crowehorwath.com.

Comments

  • get 25$ per 100 downloads for each app

    Posted by BestMonetization on 02/22/2013 09:24am

    hi, i have developed some android apps and i use Admob and one other mobile ad network, i don't earn much from AdMob but i earn 0.05$ per US download and 0.01$ per non-US download. If you are interested then you can earn same income. also if you add my reference then you will get 25$ extra for 100 downloads from any place for each app. so if you are interested then please register using following link http://startapp.com/rfnjwtr note: if you register using any other link then you will not get the bonus, so register using the above link to get the bonus Thanks Please share with your friends who may be interested.

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: October 29, 2014 @ 11:00 a.m. ET / 8:00 a.m. PT Are you interested in building a cognitive application using the power of IBM Watson? Need a platform that provides speed and ease for rapidly deploying this application? Join Chris Madison, Watson Solution Architect, as he walks through the process of building a Watson powered application on IBM Bluemix. Chris will talk about the new Watson Services just released on IBM bluemix, but more importantly he will do a step by step cognitive …

  • On-demand Event Event Date: October 23, 2014 Despite the current "virtualize everything" mentality, there are advantages to utilizing physical hardware for certain tasks. This is especially true for backups. In many cases, it is clearly in an organization's best interest to make use of physical, purpose-built backup appliances rather than relying on virtual backup software (VBA - Virtual Backup Appliances). Join us for this webcast to learn why physical appliances are preferable to virtual backup appliances, …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds