我(比如应用'C')我试图通过Android的AccountManager的getAuthToken函数获取已安装应用的身份验证令牌(比如'S')。
此函数未按预期工作,它不返回任何结果(永远不会调用run函数)
AccountManagerFuture<Bundle> future1 = AccountManager.get(Main2.this).getAuthToken(account,account.type,null,false, new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> future) {
Bundle result = null;
try {
result = future.getResult();
String check = "";
}
catch (OperationCanceledException e){ }
catch (IOException e1){}
catch (AuthenticatorException e2){}
}
} , new Handler(Looper.getMainLooper()));
当我看到设备ADB Logs时,我看到以下
java.lang.SecurityException: Activity to be started with KEY_INTENT must share Authenticator's signatures
at com.android.server.accounts.AccountManagerService$Session.onResult(AccountManagerService.java:2580)
at com.android.server.accounts.AccountManagerService$6.onResult(AccountManagerService.java:1677)
at com.android.server.accounts.AccountManagerService$6.onResult(AccountManagerService.java:1652)
at android.accounts.IAccountAuthenticatorResponse$Stub.onTransact(IAccountAuthenticatorResponse.java:59)
上述应用'C'和'S'不相关,因此使用不同的证书进行签名。
我猜这个函数应该在上面的场景中工作(这是AccountManager的主要目的之一 - 跨应用程序共享帐户访问令牌)(向用户抛出一个关于他是否应该允许'的安全对话框' C'访问'S'),它是什么原因不起作用?我在这里错过了什么吗?
由于
答案 0 :(得分:0)