0

L'appel de AccountManager.getAuthToken() avec authTokenType = "lh2" pour Picasa Web Service ne fonctionne plus sous Android 5.x; getAuthToken avec "lh2" fonctionne toujours correctement avec Android 4.4.x et 6.x, mais pas 5.x. Tout fonctionnait bien pour Lollipop jusqu'à août-septembre 2016 et rien n'a changé dans le code ou l'application à ce moment-là.Android AccountManager getAuthToken pour lh2 portée ne callback pas pour Lollipop

Quelqu'un d'autre rencontre ce problème avec getAuthToken pour "lh2" sur les périphériques Lollipop? Existe-t-il un autre moyen de transmettre le jeton d'authentification de compte à PicasaWebService?

Voici le code correspondant à getAuthToken:

//... 

String accountName = "[email protected]" 
Account selectedAccount = null; 
AccountManager accountManager = (AccountManager)activity.getSystemService(Context.ACCOUNT_SERVICE); 
Account[] list = accountManager.getAccounts(); 
for (android.accounts.Account a:list) { 
    if (a.name.equals(accountName)) { 
     selectedAccount = a; 
     break; 
    } 
} 

accountManager.invalidateAuthToken("com.google", null); 

AccountManagerFuture<Bundle> tokenFuture = getAccountManager().getAuthToken(
    selectedAccount, 
    "lh2", 
    null, 
    activity, 
    new OnTokenAcquired(), 
    new Handler(new OnTokenError())); 

//... 

private class OnTokenAcquired implements AccountManagerCallback<Bundle> { 
    @Override 
    public void run(AccountManagerFuture<Bundle> result) { 
     try { 
      Bundle b = result.getResult(); 
      if (b.containsKey(AccountManager.KEY_INTENT)) { 
       Intent intent = b.getParcelable(AccountManager.KEY_INTENT); 
       int flags = intent.getFlags(); 
       flags &= ~Intent.FLAG_ACTIVITY_NEW_TASK; 
       intent.setFlags(flags); 
       activity.startActivityForResult(intent, REQUEST_AUTHENTICATE); 
       return; 
      } 
      if (b.containsKey(AccountManager.KEY_AUTHTOKEN)) { 
       String authToken = b.getString(AccountManager.KEY_AUTHTOKEN); 

       // set authtoken to Picasa Web Service 
       _picasaService = new PicasawebService("myApp"); 
       _picasaService.setUserToken(authToken); 

       return; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

private class OnTokenError implements Handler.Callback { 
    @Override 
    public boolean handleMessage(Message msg) { 
     Log.e("onError","ERROR"); 

     return false; 
    } 
} 

//... 

Merci!

Répondre