Google Play中针对Google帐户安装的应用程序列表

以下是我的问题: –

  1. 是否有可能通过使用任何api?以编程方式通过Google Play获取用户已安装的应用程序列表。 请注意,我不是在询问设备中当前安装的应用程序列表,而是在某些时候已安装的应用程序列表。

我需要一个上面的解决方案,因为我正在考虑我的应用程序中的一个场景,即:

  • 我希望在前三个月免费将我的应用程序提供给用户,如果用户卸载应用程序三个月后再安装它我想通过任何api(来自Google Play)检测到用户已安装应用程序第二次(并且不应该获得任何免费使用)。 Please note that I don't want to use any web service to store the account id & device id of the user at my side.

对于选项2,您可以在SD卡上创建文件。 当用户卸载/安装时,这将保留在那里。 但用户始终可以删除您的特殊文件。 除非您在自己身边做某事,否则您无法确定用户之前是否已经使用过您的应用。


要完全确定,将其存储在线:您需要一个非常简单的数据库,其中包含安装了您的应用程序的device_id列表。 更多的网页填充了这个数据库。 在您的应用程序中,您下载/打开此网页,该网页将填充数据库。

App> WebClient(或其他)打开http://www.example.com/registerDevice.php?device_id= 。 php网站填充数据库。

如果当前设备已安装此应用程序以便工作/不工作,您的应用程序将需要检查数据库。 您可以通过相同的PHP执行此操作并检查响应。 例如,您可以返回’ok’或’not ok’或其他内容。

最简单的方法是在用户第一次运行应用程序时获取用户帐户,并将该详细信息发送给您。 如何做到这一点已在此处详细记录: 如何获取Android设备的主要电子邮件地址

您将不得不添加另一行代码以在应用程序的第一次启动时检查数据库。

编辑:对于非Web解决方案,只需在应用的开头添加一个计时器:

 schedule(TimerTask task, Date when) 

任务应该是在您希望给出的时间段之后添加令牌,使用用户的帐户详细信息进行手机内存validation(请参阅获取帐户详细信息的第一个解决方案)

最后,如上所述,为该特定文件添加一个回复到手机的内存,以查看用户之前是否使用过该应用程序。

基于手机内存的任何types的身份validation的问题是人们可以轻松删除令牌,如果他们能够find它,并再次重用该应用程序。

试试这个设备特定的实现:

 PackageManager packageManager = getContext().getPackageManager(); List applications = packageManager.getInstalledApplications( PackageManger.GET_UNINSTALLED_PACKAGES); // retrieves some information about all applications (even uninstalled ones) // which have data directories 

当然,如果用户替换设备,此方法将不起作用。 但您不需要使用任何Web服务。

您可以通过在第三方服务器上保留散列设备ID和用户google id的数据库来使用此function。 另请参阅http://android-developers.blogspot.de/2011/03/identifying-app-installations.html