7

I'm working on an Android app which requires plugins. These plugins are essentially asset packs for my application to use. I'll probably be creating most of these asset package plugins initially, but I want other developers to be able to create (and sell) these asset packages for my app. If you need to, think of these asset plugins as texture packs for Minecraft. These asset packs will be around 50 MB each, so it doesn't make sense to package them with the app.

The way I WANT to do it:

  1. Developer creates plugin asset APK named something specific (org.name.app_name.plugin.{MY_ASSET_PACK})
  2. Developer applies for their own Google Play developer account and lists the asset pack (free or paid) under their own name in the "Libraries and Demo" section.
  3. My app queries Google Play for all apk packages (free or paid) which match the query string (org.name.app_name.plugin.*) and lists them in a "filtered-market-view" for users of the app, allowing them to easily find plugins for the app.
  4. The user can click on these entries in my "filtered-market-view" and be redirected directly to the Google Play market and make the purchase through Play, and the developer can be compensated through this transaction. The purchased asset plugin apk is downloaded to the user's device and does not show up in the launcher. (See How to Release Application Plugin)
  5. My app indexes the packages on the phone which match the query string (org.name.app_name.plugin.*) and places them in a "plugin-selector-view" for the user to pick.
  6. My app loads and uses assets from this plugin (See How to Release Application Plugin)

The Problem

The problem exists at step 4. I can't find any way to query the store from within my app (even without wildcards). I did find this "android-market-api" project which would allow me to query the market from within my app, but it seems to require a Google Services username and password which I would have to query from the user. This is a non-starter.

Questions

  • Is there an easy way to solve this problem and get market queries in a listing directly within my app?
  • Is this the wrong way to handle application plugins?
  • Is there any way to use the existing In-App Purchase API to handle this without maintaining my own server for these packages?
Community
  • 1
  • 1
Griffin
  • 501
  • 6
  • 14
  • Not sure if it would work, but.. Have you tried using a market intent with a search parameter? Something like: [this](http://stackoverflow.com/questions/10922762/open-link-of-google-play-store-in-mobile-version-android) but with market://search?q=org.name.app_name.plugin.* – jmcdale Aug 09 '12 at 22:47
  • @jamn224, That seems to actually work. I completely forgot about using an intent to do this. This is technically in a separate app, but so long as it returns reliable results (only packages which start with that name) it'll serve my purposes. Are there any existing app packages I could try this out on? I just tried it on "mobi.beyondpod.*" and it returned the app and the unlock key. It didn't seem to require the .* at the end, however -- which makes me nervous. – Griffin Aug 09 '12 at 23:24
  • the app and the unlock key ? what do you mean by that ? Anyway, this is at least an interesting alternative to maintaining your own server, but may I ask - why not hosting your web app + assets somewhere else ? – kellogs Aug 23 '12 at 15:46
  • @kellogs, mobi.beyondpod is an app which has an application and an unlock key which are both named with a prefixed mobi.beyondpod.*. I wanted to test the intent search filtering with something like the proposed naming scheme for my app. As far as hosting assets on my own server ... This is territory I don't want to step into. This requires money which I don't have/want to pay for this simple app. I plan on using google play to host my assets, and other people can use google play the same way to sell their own assets for my app. No extra work for me :) – Griffin Sep 23 '12 at 22:44

1 Answers1

1
  • Is there an easy way to solve this problem and get market queries in a listing directly within my app?

No. This is not supported by Google and the Android API project is just a reverse engineering of the Protbuff objects that are used by the market. It can (and will!) break at any moment. Besides, it's most likely illegal. The better way is to emit a search query to the Playstore and let it handle it. It's not a big deal breaker because you will get a filtered list directly in the Playstore anyway. Don't reinvent the wheel.

  • Is this the wrong way to handle application plugins?

No, it's fine and secure.

  • Is there any way to use the existing In-App Purchase API to handle this without maintaining my own server for these packages?

No. You cannot see all purchases that a user has, only the ones that come from your own App.

meredrica
  • 2,563
  • 1
  • 21
  • 24
  • Illegal? Why? A breach of one of the finer details of a contract? – Prof. Falken Apr 11 '13 at 12:11
  • See 4.4. of the developer distribution agreement. http://play.google.com/about/developer-distribution-agreement.html – meredrica Apr 11 '13 at 12:27
  • Yes, I agree. The problem here is that OP is trying to sell something. That should be handled through Google Play itself so as to no not be in breach of contract. Or maybe not... if the others sell through Google Play, I am not sure... gray area perhaps. – Prof. Falken Apr 11 '13 at 12:57
  • Using _anything_ that reproduces the google play API is a clear violation. – meredrica Apr 11 '13 at 13:13
  • What do you mean reproduce? I can't infer anything about that in the terms also not sure what you mean by reproduce. The glaring problem I find is "You may not use customer information obtained from the Market to sell or distribute Products outside of the Market." – Prof. Falken Apr 11 '13 at 13:17
  • 4.4 Prohibited Actions. You agree that you will not engage in any activity with the Market, including the development or distribution of Products, that interferes with, disrupts, damages, *or accesses in an unauthorized manner the devices, servers, networks*, or other properties or services of any third party including, but not limited to, Android users, Google or any mobile network operator. You may not use customer information obtained from the Market to sell or distribute Products outside of the Market. – meredrica Apr 11 '13 at 18:21