我(让我们说,应用程序'C‘)正试图通过安卓的AccountManager的getAuthToken功能来获得安装的应用程序(比方说'S’)的令牌。
此函数不按预期工作,它不返回任何结果(运行函数从未被调用)
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()));当我看到设备亚行日志时,我看到以下内容
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’),原因是什么?我在这里有遗漏什么吗?
谢谢
发布于 2015-06-23 11:36:12
https://stackoverflow.com/questions/30103050
复制相似问题