我的Android應用使用AccountManager API訪問Google財經。 AndroidManifest.xml中是否有任何功能/屬性,或者我可以使用其他技術來確保該應用僅適用於安裝了Google身份驗證器(附件)的設備?如何檢查Google身份驗證器是否可在Android設備上使用?
回答
AccountManager從API Level 5開始可用,這意味着所有使用Android 2.0或更高版本的設備都會擁有它。
您可以使用
getAccountsByType
與com.google
作爲帳戶類型來檢查Google帳戶。即使設備具有Android 2.0或更高版本,也無法保證用戶將設置Google帳戶。他們將無法訪問市場或其他谷歌應用程序(Gmail,地圖等),但其他任何工作。
就像谷歌那樣做:當用戶啓動應用程序時,檢查是否有正確的帳戶,如果不通知用戶並停止應用程序。
這不是隻涉及谷歌帳戶身份驗證,這種行爲是一般:
AccountManager.get(context).addAccount(
<google account type>,
<needed token type>,
null,
<options or null if not needed>,
activityToStartAccountAddActivity,
new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> future {
try {
future.getResult();
} catch (OperationCanceledException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} catch (AuthenticatorException e) {
throw new RuntimeException(e); // you'll go here with "bind failure" if google account authenticator is not installed
}
}
},
null);
如果你沒有在設備上安裝身份驗證,同時支持請求的帳戶類型和令牌類型,那麼你」會得到AuthenticatorException。基本上,任何Android設備都有谷歌驗證器。如果它不是根源,並刪除相關軟件包,當然:)
它不僅與Google帳戶身份驗證程序相關,當沒有身份驗證程序註冊所需的標記類型時會收到此行爲,並將其作爲參數傳遞 – Deepscorn 2015-06-18 10:01:51
使用getAccountsByType
的解決方案的問題是,您不能區分未驗證者的情況下或驗證者的存在,但缺乏帳戶通過它認證。在第二種情況下,您可能希望提示用戶添加新帳戶。
試圖添加一個帳戶,然後檢查異常也不太理想,當方法AccountManager.getAuthenticatorTypes()
存在。使用它像這樣:
String type = "com.example"; // Account type of target authenticator
AccountManager am = AccountManager.get(this);
AuthenticatorDescription[] authenticators = am.getAuthenticatorTypes();
for (int i = 0; i < authenticators.length(); ++i) {
if (authenticators[i].type.equals(type)) {
return true; // Authenticator for accounts of type "com.example" exists.
}
return false; // no authenticator was found.
我的Java是一個有點生疏了(我是一個Xamarin開發者),但是這應該給你如何檢查系統上的認證存在的想法不觸發加帳戶活動,如果它確實存在。
- 1. 如何檢查是否$ _GET [ '身份證']設置並使用PHP
- 2. 嘗試使用Android Wear 2.0上的Firebase身份驗證(使用Google)顯示「InternalFirebaseAuth.FIREBASE_AUTH_API在此設備上不可用」
- 3. laravel如何檢查用戶是否已通過身份驗證?
- 4. 如何檢查用戶是否需要使用Firebase身份驗證重新進行身份驗證
- 5. Android檢查是否使用意圖RECORD_SOUND_ACTION在設備上可用
- 6. 檢查用戶是否使用Cognito進行了身份驗證
- 7. 如何檢查手指打印身份驗證的設備兼容性android
- 8. ServiceStack Jwt身份驗證檢查是否已通過驗證
- 9. Android:如何檢查設備上的閃光燈是否可用?
- 10. 如何檢查Linux中的WEP身份驗證是否失敗
- 11. 是否可以在asp.net身份驗證中禁用雙因素身份驗證?
- 12. 檢查用戶是否在OpenFire中進行了身份驗證
- 13. Android:如何檢查Google是否可用?
- 14. Firebase Web身份驗證在移動設備上無法使用?
- 15. 使用Firebase身份驗證進行身份驗證後檢索Google Access令牌
- 16. Base64.DEFAULT身份驗證在舊版Android設備上無效(2.3)
- 17. 我如何檢查gmail身份驗證?
- 18. 使用Facebook和Google在Android上進行AWS身份驗證
- 19. Asp.net身份驗證檢查
- 20. 如何使用play.api.mvc.Security類來檢查用戶是否通過身份驗證?
- 21. 如何使用Java在Android上使用NTLM身份驗證?
- 22. 是否使用Active Directory身份驗證?
- 23. PEAR是否使用HTTP身份驗證?
- 24. 如何檢查錄音是否在Android設備中可用。
- 25. 如何使用OAUTH檢查YouTube的身份驗證是否有效
- 26. Android上的身份驗證
- 27. 心跳來檢查用戶是否通過身份驗證?
- 28. 檢查Facebook用戶是否已通過身份驗證
- 29. 檢查WebSphere中是否啓用了LDAP身份驗證
- 30. Symfony2 - 檢查用戶是否具有身份驗證角色
假定設備已安裝(在Android 2.0的頂部)谷歌API那麼我們應該能夠重定向用戶的設置來設置一個新的帳戶。我需要一種方法來確定是否已安裝Google身份驗證程序的附加組件,而不是查明是否已設置任何Google帳戶。 – mhdwrk 2011-05-07 20:34:13
在Android模擬器上,只有在平臺2.2或更高版本上將目標設置爲Google API(級別8)時,「添加Google帳戶」選項纔會顯示在設置中! – mhdwrk 2011-05-07 20:48:09