gpt4 book ai didi

android - 打算转到特定帐户的设置页面

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:15:43 26 4
gpt4 key购买 nike

使用以下众所周知的代码,用户将被带到设备上帐户的整体 Android 设置页面:

startActivity(new Intent(Settings.ACTION_SYNC_SETTINGS));

sync settings

如果帐户属于我的应用程序,是否有等效项可以将用户直接带到特定帐户的设置(请参见下面的屏幕截图)?

specific account sync settings

最佳答案

provided the account belongs to my application

那是,我想,你的意思是你知道account type提前。如果是这样,那么以下是处理该问题的一种可能方法。

首先,该应用需要GET_ACCOUNTS 权限。

<uses-permission android:name="android.permission.GET_ACCOUNTS" />

然后,如果您查看 AccountSyncSettingsonActivityCreated() (第二个屏幕截图上的 Activity ),您会注意到它在启动Intent bundle 中查找 "account" 键。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Bundle arguments = getArguments();
if (arguments == null) {
Log.e(TAG, "No arguments provided when starting intent. ACCOUNT_KEY needed.");
finish();
return;
}
mAccount = (Account) arguments.getParcelable(ACCOUNT_KEY);
if (!accountExists(mAccount)) {
Log.e(TAG, "Account provided does not exist: " + mAccount);
finish();
return;
}
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "Got account: " + mAccount);
}
mUserId.setText(mAccount.name);
mProviderId.setText(mAccount.type);
}

现在,基于此,您可以使用如下内容为特定帐户启动该 Activity :

private static final String ACCOUNT_KEY = "account";
private static final String ACTION_ACCOUNT_SYNC_SETTINGS =
"android.settings.ACCOUNT_SYNC_SETTINGS";

... // lots of code

Account myAccount = null;
AccountManager accountManager = AccountManager.get(getApplicationContext());
Account[] accounts = accountManager.getAccounts();
for (Account account : accounts) {
if ("com.myTLD.myApp".equals(account.type)) {
myAccount = account;
break;
}
}

if (myAccount != null) {
Bundle args = new Bundle();
args.putParcelable(ACCOUNT_KEY, myAccount);

Intent intent = new Intent(ACTION_ACCOUNT_SYNC_SETTINGS);
intent.putExtras(args);
startActivity(intent);
}

但是,这里有一些事情需要考虑:

  • AccountSyncSettings 实现可能随时更改。
  • 以上代码没有经过广泛测试。事实上,它仅在单个目标设备(带有 Lollipop 的 Galaxy S5)上进行了测试。
  • "android.settings.ACCOUNT_SYNC_SETTINGS" 操作可能不适用于所有设备和 Android 版本。因此,防范可能出现的故障并寻找替代措施。
  • 您实际上可能想使用 getAccountsByType("com.myTLD.myApp") 而不是 getAccounts()如果目标用户不能在一台设备上拥有多个帐户,则只需使用返回数组中的第一个元素。
  • 如果你知道account name ,您可能希望利用该信息进一步调整 if 子句以满足您的需要。

希望这对您有所帮助。

关于android - 打算转到特定帐户的设置页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30455554/

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