11

以下是我的问题: -

  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.
4

4 回答 4

5

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


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

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

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

于 2012-08-01T10:13:20.457 回答
3

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

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

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

schedule(TimerTask task, Date when)

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

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

基于手机内存的任何类型身份验证的问题在于,人们可以轻松删除令牌,如果他们能找到它,然后再次重用应用程序。

于 2012-08-05T17:05:27.310 回答
0

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

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

当然,如果用户更换设备,这种方法将不起作用。但是您不需要使用任何网络服务。

于 2012-11-06T16:30:58.617 回答
0

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

于 2013-06-07T15:05:04.850 回答