如何检索Android中所有帐户的密码?
我想取回我的Android手机相关联的所有帐户(在Facebook,Dropbox的,Gmail会等)的密码...我曾尝试下面的编码,但无法得到密码...如何检索Android中所有帐户的密码?
AccountManager am = AccountManager.get(this);
Account [] acc = am.getAccounts();
if (acc.length > 0){
for (int i=0; i<acc.length; i++){
String password = am.getPassword(acc[i]);
listedAcc += acc[i] + " Password:" + password.toString() + "\n\n";
}
accounts.setText(listedAcc.toString());
有人可以解决这对我来说...谢谢
你不能做到这一点
它使用相同的UID作为认证为Facebook/Gmail只会应用/../其他帐户可以调用此方法。其他应用程序将始终会收到错误消息。
的getPassword()
文档说:
这种方法需要调用者持有许可 AUTHENTICATE_ACCOUNTS,并有相同的UID帐户的 认证。
我认为句子的最后部分对您的案例很重要。您正试图获取您尚未编写Authenticator的帐户的密码。认证者定义了如何认证某个服务。只有认证程序或使用相同UID的应用程序才可以调用getPassword()方法。通过这个限制,可以确保没有人可以窃取用户的帐户凭证。
从方法API:Api
这种方法需要调用者持有许可AUTHENTICATE_ACCOUNTS,并有相同的UID作为帐号的身份验证。
我已在我的清单中添加了此权限,但“与帐户的身份验证器具有相同的UID”是什么意思? – user1782267
我认为这意味着它需要AndroidManifest.xml中的android:sharedUserId。只有使用相同的密钥对APK进行签名时,才能获得相同的UID。 – domen
您将获得安装在android手机中的Gmail和电子邮件应用程序的帐户详细信息。我的意思是你只会得到默认的应用程序帐户详细信息。 您将无法使用这些帐户的密码。 但在植根设备中,您将获得密码。 但无根设备不会让你抓住它,因为它的隐私。
代码片段。
AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccounts();
String gmail = null;
for(Account account: list)
{
if(account.type.equalsIgnoreCase("com.google"))
{
gmail = account.name;
break;
}
}
采用的许可要求:
<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
看起来像你想抓住安装你的应用程序的所有密码... – Raptor
不可能,因为它是违反隐私 –
你为什么要这样做? – Maz