gpt4 book ai didi

android - 禁用从 3rd 方应用程序对帐户管理器中帐户的静默访问

转载 作者:行者123 更新时间:2023-11-30 03:24:11 24 4
gpt4 key购买 nike

您好,我有一个与 Android 客户经理相关的问题..我的应用程序向其中注入(inject)了一个帐户,因此设备上安装的其他应用程序也可以访问它。我认为一旦任何应用程序向系统询问存储在帐户中的数据,它应该首先询问用户(经典的 android 身份验证屏幕,有两个按钮告诉用户该应用程序想要访问该帐户)。但是,我现在尝试了一下,我编写了一个简单的应用程序,其目的只是从客户经理那里填充存储的身份验证 token 。有效。它工作得很好,除了没有任何步骤要求用户许可,它只是显示 token 。请问我需要如何将帐户配置为不公开?

下面是我用来访问帐户的代码。我只使用了帐户类型和 token 类型。就这些。

  AccountManager accountManager = AccountManager.get(this);
assert accountManager != null;
Account[] kosAccounts = accountManager.getAccountsByType("account_type");
if(kosAccounts.length < 1) tokenView.setText("no account");
else{
accountManager.getAuthToken(kosAccounts[0],"token_type",null, this, new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> future) {
try {
Bundle result = future.getResult();
if(result == null) tokenView.setText("problem");
else{
tokenView.setText(result.getString(AccountManager.KEY_AUTHTOKEN));
}

} catch (OperationCanceledException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (AuthenticatorException e) {
e.printStackTrace();
}

}
}, new Handler());
}

这是我用来创建帐户的代码(来自另一个应用程序).​​.它实际上是代码的精简版本,我删除了您不需要帮助我的所有杂乱信息:)

final AccountManager accountManager = AccountManager.get(getApplicationContext());
final String username = getUserDataResponse.getString("username");
final String authToken = getUserDataResponse.getString("token"); // null pointer
final Account account = new Account(username, AuthenticatorConfig.ACCOUNT_TYPE);

accountManager.addAccountExplicitly(account, null, null);
accountManager.setAuthToken(account, AuthenticatorConfig.AUTH_TOKEN_TYPE, authToken);

最佳答案

好吧,答案很简单..证书很重要!如果这些应用程序使用不同的证书签名,则会出现该屏幕。 enter image description here

关于android - 禁用从 3rd 方应用程序对帐户管理器中帐户的静默访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18539800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com