AccountManager
允许与Account Authenticator
具有相同签名的应用访问帐户和令牌,而无需授予权限。如果签名不同,系统将提示用户授予应用程序GET_ACCOUNTS
权限。
如果您不想允许该怎么办?是否可以限制只能访问您的应用?
当我阅读以下内容时,我很有希望,但我不确定这句话或对你如何实施这个建议意味着什么:
如果凭据仅由您创建的应用程序使用,则可以使用checkSignature()验证访问AccountManager的应用程序
https://developer.android.com/training/id-auth/custom_auth.html#Security
答案 0 :(得分:0)
原始答案:AccountManager and signature check
简而言之:
public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account,
String authTokenType, Bundle bundle) {
try {
PackageManager packageManager = context.getPackageManager();
String callerPackageName = bundle.getString("androidPackageName");
// Caller app must be signed with the same key to get the auth token
int signatureResult = packageManager.checkSignatures(BuildConfig.APPLICATION_ID,
callerPackageName);
if (signatureResult >= PackageManager.SIGNATURE_MATCH) {
return [bundle with the auth token];
} else {
return Bundle.EMPTY;
}
}