我已经搜索过但找不到这个,虽然主要是知道要搜索什么的挑战,但我敢肯定以前有人问过它。
应用程序如何推断它是在“Google Android”设备还是 AOSP 设备(例如 Kindle Fire 等)上运行?
我已经搜索过但找不到这个,虽然主要是知道要搜索什么的挑战,但我敢肯定以前有人问过它。
应用程序如何推断它是在“Google Android”设备还是 AOSP 设备(例如 Kindle Fire 等)上运行?
您可以尝试使用AccountManager
类枚举设备上的现有帐户:getAccountsByType()com.google
,并作为所需的帐户类型传递。如果没有此类型的帐户,则表示它是 AOSP 设备或用户尚未创建 Google 帐户。
如果这对您来说还不够,您可以使用PackageManager
类并使用getPackageInfo()方法查询一些谷歌特定的包。例如,com.android.vending
- Google Play 应用程序。
但请注意,这些方法中没有一种可以保证目标设备正在运行 AOSP。
这不是微不足道的,但大多数应用程序甚至不需要关心。如果这样做,则通常意味着您需要一些独特的功能,因此检查某些功能是否存在更简单,而不是设备上的标签。您也可以检查某些包的存在(如 Google Play),但缺少它并不意味着它自动是 Fire。
您可以使用 Intent 检查是否可以打开市场 URL。
有关意图附加功能的文档在此处。
意图看起来像这样:
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=com.example.android"));
//you can use any package identifier for the check.
startActivity(intent);
} catch (ActvitiyNotFoundException anfe) {
//There's no market installed.
//So you can guess that you're not on a device with Google experience
}
这种方法的缺点是,如果可用,用户将被带到 Play 商店。