我已經搜索並找不到這個,但主要是知道要搜索什麼的挑戰,我確信它之前已經被問過。請告訴我們是否運行AOSP或Google Android?
應用程序如何推斷它是在「Google Android」設備還是AOSP設備(例如Kindle Fire等)上運行?
我已經搜索並找不到這個,但主要是知道要搜索什麼的挑戰,我確信它之前已經被問過。請告訴我們是否運行AOSP或Google Android?
應用程序如何推斷它是在「Google Android」設備還是AOSP設備(例如Kindle Fire等)上運行?
您可以嘗試使用AccountManager
類:getAccountsByType()來枚舉設備上的現有帳戶,並將com.google
作爲所需的帳戶類型傳遞。如果沒有此類帳戶,則表示它是AOSP設備或用戶尚未創建Google帳戶。
如果對您而言還不夠,您可以使用PackageManager
類,並使用getPackageInfo()方法查詢一些Google專用包。例如,com.android.vending
- Google Play應用。
但請注意,這些方法中的任何一種都不能保證目標設備正在運行AOSP。
這不是微不足道的,但大多數應用程序不需要甚至在乎。如果這樣做,那麼通常意味着您需要一些獨特的功能,因此檢查某些功能是否存在會更簡單,而不是設備上的標籤。您也可以檢查是否存在某些軟件包(例如Google Play),但缺少該軟件包並不意味着它就是Fire。
您可以檢查是否可以通過使用意圖打開市場網址。
意向附加檔的文件是here。
的意圖應該是這樣的:
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商店,如果它是可用的。