如何以编程方式确定是否可以在当前设备上安装Play商店中的应用程序?

时间:2014-06-20 01:16:42

标签: android google-play-services google-play

在我的应用中,我推荐相关应用,但只想推荐它们,如果它们实际上可以安装在设备上(例如相关应用的目标国家/地区的设备,正确的操作系统版本等)。见https://developer.android.com/google/play/filters.html

  1. 是否有任何API允许我通过链接到market来查询我推荐的给定应用程序:// details?id = package_name可以安装在本地设备上吗?
  2. 如果没有,我可以在我自己的应用程序中手动存储其他应用程序的要求。但是,如何确定用户的Play商店所关联的国家/地区等项目?

2 个答案:

答案 0 :(得分:7)

不幸的是,没有API 来将应用与特定设备进行比较。 Play商店是在内部以某种方式做的。

所以,第二种方法是要走的路。最常见的过滤器是

  • Country(因为您无法检索"播放商店国家",请使用其他方法......)

    String locale = context.getResources().getConfiguration().locale.getCountry(); 
    // or if you are sure there is a SIM-card
    TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    String countryCode = tm.getSimCountryIso();
    // or use country of current network (i.e. from 3G)
    String countryCode = tm.getNetworkCountryIso()
    
  • Android version

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) {
        // only for gingerbread and newer versions
    }
    
  • Screen size

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x;
    int height = size.y;
    

您可能需要检查其他内容,例如可用的传感器(您可以通过getSensorList执行此操作)。要列出它们,所有这些都会创建一个很长的列表,找到所有找到这些东西的API很容易,所以我不会列出所有这些。

通过检查国家/地区,版本和屏幕尺寸,您应该对大多数应用都安全。

答案 1 :(得分:2)

  

是否有任何API可以让我查询我是否给定了一个应用程序   建议通过链接到market:// details?id = package_name即可   安装在本地设备上?

是的,但是我想到的api /技巧可能根本不符合你的要求。

这是Google的一项实验性功能,据我所知仅适用于网络应用程序(不是Android应用程序,但我认为它可能适用于Android网络浏览器,因此您的应用程序可能无法结束看起来像本地人一样),它要求您的用户拥有Google+登录信息(不仅仅是一个Gmail帐户),并且您需要手动将Google列入白名单才能使用它。

我们的想法是,一旦您在(列入白名单的)第三方网站上使用Google+登录,您就可以点击第三方网站上的安装按钮,第三方网站会弹出一个窗口,为您提供一个单击“安装”按钮以确认权限并进行远程安装以进行无线更新。

正如您从下面屏幕截图的网址栏中看到的那样,弹出窗口实际上来自Google Play域名,因此从技术上讲,它只是一个简单的技巧,旨在为用户提供无需完全离开您的网站即可安装应用程序。

另外,我希望您注意到当前的下拉选择框,其中包含您设备的名称。您无法在此处看到它,但选择框中包含您的Google+帐户中的所有已注册设备,并且它仅显示与您实际应用程序兼容的设备的黑色字体。

screenshot of beta tunin radio web site with Google plus and Google Play integration

现在是坏消息。在此示例中,网站属于TuneIn无线电,Android应用程序也属于TuneIn无线电。我个人不知道是否可以为列出它自己没有的Android应用程序的网站启用此功能。这将是一个你不得不问谷歌的问题。

目前,这个api仍然只是网络。这是Google员工在您要求他们将您的申请列入白名单时可能会提出的异议。

目前,TuneIn广播允许您使用Google+帐户注册设备,但它并未显示我在参加的演示文稿中看到的内容。在我看到的演示文稿中,用户无需注册设备,一旦Google+登录与帐户关联,一切都无缝完成。因此,查看tunein.com电台web site itself对您来说可能不是很有用。

最后,我相信谷歌对其他第三方App商店皱眉,所以在向谷歌提起诉讼之前,试图将自己纳入此api的白名单。请务必仔细遵守Google Play商店的条款和服务,并准备好考虑Google最终如何从您(以及其他像您这样的人)使用此类功能中受益。

这是github上的slide deck(出于某种原因,幻灯片本身的显示不再适用于我)。您需要与这些Google员工联系,以便为此api列入白名单。他们的联系信息/ Google +信息位于幻灯片中。

请告诉我们您的进展情况。我很有兴趣知道你是否能克服我上面列出的任何问题。