我为我想在具有不同签名的其他应用程序中使用的网络服务构建了一个 AccountAuthenticator。我想立即显示全屏访问请求对话框(这个: http://i.imgur.com/gcndGZs.png )而不是通知,以便我确定在将 SyncAdapter 设置为自动同步之前我可以访问该帐户。

到目前为止,我已经尝试了 getAuthToken,其中一个显示了通知:
manager.getAuthToken(account, "full", null, true, callback, new Handler());
另一个抛出异常:
manager.getAuthToken(account, "full", null, activity, callback, new Handler());

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:2206)
        at com.android.server.accounts.AccountManagerService$6.onResult(AccountManagerService.java:1411)
        at com.android.server.accounts.AccountManagerService$6.onResult(AccountManagerService.java:1386)
        at android.accounts.IAccountAuthenticatorResponse$Stub.onTransact(IAccountAuthenticatorResponse.java:59)
        at android.os.Binder.execTransact(Binder.java:404)
        at dalvik.system.NativeStart.run(Native Method)`

是否可以在没有来自使用不同 key 签名的应用程序的通知的情况下显示访问请求对话框?

最佳答案

这似乎是 KitKat 中的错误(或安全功能),阻止了跨应用程序 token 共享。我建议您使用自己的自定义 Intent 和安全验证来实现 token 共享,而不是依赖 Android 的 API。

关于android - 使用 getAuthToken(...) 时显示全屏 "Access Request"对话框而不是通知,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20527528/

10-10 09:37