Kann nicht ein neues benutzerdefiniertes Konto aus einer anderen App mit demselben Authentifizierer hinzufügen

Ich habe zwei Apps, die beide einen gleichen benutzerdefinierten Account-Typ verwenden. Diese beiden Apps sind völlig unabhängig und teilen sich nur das Konto. Wenn einer von ihnen beginnt, prüft es auf vorhandene benutzerdefinierte Konten und wenn kein Konto gefunden wurde, zeigt die Anmeldeseite.

Also habe ich meinen AccountAuthenticator als Bibliotheksprojekt erstellt und in beiden Apps AccountAuthenticator . Nach diesem Tutorial :

Angenommen, du hast den Code deines Echtgebers auf 2 deiner Apps kopiert und damit seine Logik freigegeben und die Anmeldeseiten auf jeder App geändert, um die App zu passen, die sie gehört. In diesem Fall wird der Authentifizierer der ersten installierten App für beide Apps aufgerufen, wenn ein auth-Token angefordert wird. Wenn du die erste App deinstalliert hast, wird der Authenticator der zweiten App von nun an aufgerufen (da es jetzt der einzige ist).

Wenn ich eine der apps (egal welche app) und call addAccount es zeigt die addAccount gut. Dann, wenn ich die zweite App und rufen addAccount nichts passiert und addAccount wird nicht angezeigt. Nach dem Deinstallieren der ersten App funktioniert die zweite App korrekt und zeigt die Anmeldeseite an. Also, was ist das Problem und wie kann ich das beheben?

Die Umsetzung von addAccount :

 mAccountManager.addAccount(accountType, authTokenType, null, null, this, new AccountManagerCallback<Bundle>() { @Override public void run(AccountManagerFuture<Bundle> future) { try { Bundle bnd = future.getResult(); showMessage("Account was created"); } catch (Exception e) { e.printStackTrace(); showMessage(e.getMessage()); } } }, null); 

Danke im Voraus

  • Sollten Sie AccountManager zum Speichern von Benutzernamen und Passwörtern für eine Android App verwenden?
  • Programmgesteuertes Starten der Aktivität 'Google-Konto hinzufügen' in Android
  • 3 Solutions collect form web for “Kann nicht ein neues benutzerdefiniertes Konto aus einer anderen App mit demselben Authentifizierer hinzufügen”

    Ich bin mir nicht sicher, dass die richtige Antwort, aber ich fand, dass das Problem ist, dass die Apps haben unterschiedliche UIDs. So verwende ich sharedUserId in beiden apps und das problem wurde gelöst:

      <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.test" android:sharedUserId="test.account" android:versionCode="100" android:versionName="1.0" > 

    @Misagh Emamverdi Yeah. Du vermisst diese Erlaubnis in deinem Manifest.

    Android: sharedUserId

    Der Name einer Linux-Benutzer-ID, die mit anderen Anwendungen geteilt wird. Standardmäßig weist Android jeder Anwendung eine eigene, benutzerdefinierte Benutzer-ID zu. Wenn dieses Attribut jedoch für zwei oder mehr Anwendungen auf denselben Wert gesetzt ist, werden sie alle die gleiche ID teilen – vorausgesetzt, dass sie auch von demselben Zertifikat signiert sind.

    Die Anwendung mit der gleichen Benutzer-ID kann auf die Daten des jeweils anderen zugreifen und, falls gewünscht, im selben Prozess laufen.

    So android: sharedUserId wird verwendet, um die Prozesse zwischen zwei oder mehr Anwendungen (wie Udinic Authenticator ) zu teilen.

    SYNTAX

     <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="string" android:sharedUserId="string" android:sharedUserLabel="string resource" android:versionCode="integer" android:versionName="string" android:installLocation=["auto" | "internalOnly" | "preferExternal"] > . . . 

    Finden Sie den gut geschriebenen Artikel Schreiben Sie Ihren eigenen Android Authenticator

    Bildbeschreibung hier eingeben

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.