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

UsA*_*R33 18 android google-play google-play-services

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

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

Com*_*Guy 8

遗憾的是,没有API可以将应用与特定设备进行比较.Play商店是在内部以某种方式做的.

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

  • 国家(因为你无法检索"游戏商店国家",使用其他方法...)

    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()
    
    Run Code Online (Sandbox Code Playgroud)
  • Android版本

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) {
        // only for gingerbread and newer versions
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 屏幕尺寸

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x;
    int height = size.y;
    
    Run Code Online (Sandbox Code Playgroud)

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

通过检查国家/地区,版本和屏幕大小,您应该对大多数应用程序都是安全的.

  • Play商店根据登录用户_account_ country授予访问权限.如果您使用G +登录,则可以[检索有关当前登录用户的详细信息](https://developers.google.com/+/mobile/android/people#retrieve_profile_information_for_a_signed_in_user),但不包括区域设置info - 有[`Person.PlacesLived`](http://developer.android.com/reference/com/google/android/gms/plus/model/people/Persons.PlacesLived.html),但听起来像维护恶梦. (2认同)
  • 此外,仅仅因为用户居住在X国(并且他们的G +个人资料中包含该信息),并不意味着他们的帐户被设置为国家X. (2认同)