Great discussion you have going on here. I've been following it from the sidelines, but I do have a few things to add.
First, I had confirmation from a Google employee - informally, over lunch at one of the Developer Lab events, but from a Googler nonetheless - that it's absolutely OK to link your app to a website (which you also run) and sell digital goods that way. IOW, if you have a site where the user can create an account, and which handles payments, you can hook your Android app to that site and make your app adapt to what's been paid for. This would include downloading additional digital goods. My belief is that this is how the Amazon MP3 app functions - it works with your existing Amazon account. Of course, Amazon is a big name which users know and trust, not an indie game dev. However, I'd think you could set something up using the Google user creds SDK on the handset, and Google's authorization API on your site, to minimize the extra account creation/login stuff within your app. I haven't pursued this myself, but what I know about these APIs leads me to believe it's possible. However, it's still probably more dubious than listing your add-ons as separate Market apps. So second, I think Bob is right that you can take a lead from the free/ paid app pairs which are out there and working. It's a different use case, but the same basic problem: the user already has one app, and we want to sell some additional digital goods to them as painlessly as possible. There's some good discussion of the various approaches in this recent thread: http://groups.google.com/group/android-developers/browse_thread/thread/4ad3d67f735f16d7 My own free/paid approach is discussed in that thread, but I'll summarize it here: I have a time-limited "trial" version of my app, and separately on the Market, I have a "license" app. The trial version simply checks for the existence of the license using code like this: final PackageManager pkgMgr = context.getPackageManager(); final int sigMatch = pkgMgr.checkSignatures(context.getPackageName(), LICENSE_APP_PACKAGE_NAME); if (sigMatch == PackageManager.SIGNATURE_MATCH) { // License found - disable time limit } In my case, I only want to check for the existence of the license. There's no new functionality added, just the removal of the time limit. But you could definitely add functionality by any of several means - a shared database, or an Intent which implements new stuff, for example. The add-on app (like my "license"), will only appear in the Launcher drawer if it has an Activity with the following in its manifest: <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> So just avoid that, and it won't clutter up the user's app tray. Regarding the whole refund/uninstall issue... My feeling is that the most foolproof way to handle it is to disable the added functionality if the add-on app is uninstalled. This handles the refund case implicitly, and as long as it's not in their app drawer (see above), the user shouldn't need or want to get rid of it. You can discourage accidental uninstalls if it's labeled something like "SuperGame Add- On: Character Joe Blough". Seems to me that if they uninstall something named that, they shouldn't be surprised when that character's gone from the game. Even if they do, they can always re- download from the Market. I also wouldn't worry too much about "flooding the Market" unless you're literally releasing hundreds of these things. With 30k+ apps in the Market, you're always going to be a drop in the bucket. It may slightly annoying tho folks who monitor the "Just in" list, but there's a lot of dross in there already. String -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en To unsubscribe from this group, send email to android-developers+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.

