Comme quelqu'un d'autre l'a souligné, vous pouvez utiliser PackageManager pour détecter la présence de l'application "clé" payante, mais cela pose un problème si quelqu'un installe uniquement la version payante, désinstalle la version gratuite, etc. Les utilisateurs pourraient être ennuyés de devoir conserver deux téléchargements pour faire fonctionner votre seule application. Pour info, je pense que DoubleTwist Air Sync le fait de cette façon. Je suis presque sûr que l'application Air Sync ne fait rien d'autre que d'activer la fonctionnalité de l'application gratuite DoubleTwist.
Une solution plus pratique serait d'avoir deux applications distinctes, puis de donner la possibilité d'importer les préférences et les données de l'une à l'autre en utilisant un fichier de configuration de l'application. ContentProvider et/ou sharedUserId . Vous pouvez alors partager la plupart de votre code utiliser un projet de bibliothèque partagée . Cependant Cela signifie que les deux applications doivent utiliser un URI de contenu différent puisque deux applications ne peuvent pas utiliser la même autorité, ce qui est assez pénible, car le code de votre bibliothèque partagée ne peut pas simplement avoir un champ CONTENT_URI ou AUTHORITY statique comme vous le trouveriez normalement dans une implémentation ContentProvider.
Je commence à penser que deux applications distinctes avec deux bases de code plus ou moins distinctes est la voie à suivre, car copier du code entre deux projets pourrait en fait être plus facile que d'essayer de maintenir une bibliothèque partagée avec toutes sortes de commutateurs pour activer ou désactiver des fonctionnalités entre une version gratuite et une version payante.
En fait, la recommandation d'edgman d'utiliser une seule application et l'utilisation des licences est probablement le meilleur manière de gérer une version gratuite et payante d'une application. Il résout tous les problèmes énumérés ci-dessus, même si, pour être honnête, je n'ai pas encore utilisé de licence moi-même.
EDIT Il semble que l'octroi de licences ne soit autorisé que pour les applications payantes (c'est dommage), ce qui est impossible si vous souhaitez proposer une version gratuite. Toutefois, facturation en ligne pourrait être la "bonne" façon pour vous de gérer une version gratuite ou payante. Peut-être que cela convient à l'OP, mais je n'ai pas l'impression d'avoir besoin d'une version gratuite. deux L'idéal serait que les applications soient toujours installées sur l'appareil de l'utilisateur. Si un utilisateur payant installe l'application sur un nouvel appareil, il semble possible de télécharger les transactions antérieures afin qu'il n'ait pas à payer deux fois.