das Konto zur Verfügung gestellt, um meine Anwendung
Das ist, glaube ich gehört, du meinst du account type im Voraus mit. Wenn dies der Fall ist, dann ist das folgende ein möglicher Ansatz, um das Problem zu lösen.
Zuerst wird die App GET_ACCOUNTS
Erlaubnis benötigen.
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
Dann, wenn Sie einen Blick auf onActivityCreated()
von AccountSyncSettings
(die Aktivität auf dem zweiten Screenshot) nehmen, werden Sie feststellen, dass es für "account"
Schlüssel in der Einleitung Absicht Bündel aussieht. Jetzt
@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);
}
, bezogen auf das, können Sie etwas verwenden, da diese Tätigkeit für bestimmtes Konto starten folgt:
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);
}
Es gibt jedoch ein paar Dinge zu beachten, hier:
AccountSyncSettings
Implementierung kann jederzeit geändert werden.
- Der obige Code wurde nicht ausgiebig getestet. Tatsächlich wurde es nur auf einem einzigen Zielgerät getestet (Galaxy S5 mit Lollipop).
"android.settings.ACCOUNT_SYNC_SETTINGS"
Aktion möglicherweise nicht auf allen Geräten und Versionen von Android verfügbar. Schützen Sie sich vor möglichen Fehlern und suchen Sie nach alternativen Maßnahmen.
- Anstatt
getAccounts()
möchten Sie möglicherweise getAccountsByType("com.myTLD.myApp")
verwenden und einfach das erste Element aus dem zurückgegebenen Array verwenden, wenn der Zielbenutzer nicht mehr als ein Konto auf einem Gerät haben kann.
- Wenn Sie account name kennen, können Sie diese Informationen nutzen, um die if -Klausel an Ihre Bedürfnisse anzupassen.
Hoffe das hilft.
Dies kann helfen http://stackoverflow.com/questions/4421527/how-can-i-start-android-application-info-screen-programmatically – yrazlik
@bigO Dies führt den Benutzer auf die Einstellungsseite der App, nicht zu die Kontoeinstellungen für diese App. Danke sowieso. – FWeigl