2012-03-21 3 views
5

Mon application utilise le gestionnaire de compte pour partager le jeton d'authentification et il fonctionne très bien au début de la version 4.0. Mais quand j'essaie l'application dans mon Nexus S (4.0.3), NPE se produit chaque fois que j'appelle la méthode getAuthToken. trace de pile comme suit:getAuthToken ne fonctionne pas est ICS

E/AndroidRuntime(5282): java.lang.RuntimeException: Unable to start activity ComponentInfo{android/android.accounts.Gra 
ntCredentialsPermissionActivity}: java.lang.NullPointerException 
E/AndroidRuntime(5282):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
E/AndroidRuntime(5282):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
E/AndroidRuntime(5282):  at android.app.ActivityThread.access$600(ActivityThread.java:123) 
E/AndroidRuntime(5282):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
E/AndroidRuntime(5282):  at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(5282):  at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(5282):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
E/AndroidRuntime(5282):  at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(5282):  at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(5282):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
E/AndroidRuntime(5282):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
E/AndroidRuntime(5282):  at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(5282): Caused by: java.lang.NullPointerException 
E/AndroidRuntime(5282):  at android.accounts.GrantCredentialsPermissionActivity.onCreate(GrantCredentialsPermissi 
onActivity.java:84) 
E/AndroidRuntime(5282):  at android.app.Activity.performCreate(Activity.java:4465) 
E/AndroidRuntime(5282):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
E/AndroidRuntime(5282):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
E/AndroidRuntime(5282):  ... 11 more 
W/ActivityManager( 151): Force finishing activity android/.accounts.GrantCredentialsPermissionActivity 

Mais, quand je reçois AuthToken de Google, il fonctionne très bien. Ma question est: Y at-il quelque chose qui ne va pas dans mon code et comment puis-je le réparer? Ou c'est un bug dans Android et il sera corrigé plus tard?

+2

a signalé une personne problème de bug pour cette http://code.google.com/p/android/issues/detail?id=23421 – rds

Répondre

1

Cette question a été de me tuer pendant un certain temps, mais cela a fonctionné pour moi sur ICS 4.0.3:

AccountManager am = AccountManager.get(context); 
Account[] accounts = am.getAccountsByType("com.google"); 
Account selected = accounts[0]; 
am.getAuthToken(account, "ah", false, callback, null); 

Où rappel 'ressemble quelque chose comme ceci:

new AccountManagerCallback<Bundle>() { 

@Override 
public void run(AccountManagerFuture<Bundle> future) { 
    Bundle bundle; 

    try { 

     bundle = future.getResult(); 
     Intent intent = (Intent)bundle.get(AccountManager.KEY_INTENT); 
     if(intent != null){           

      startActivity(intent); 
    //In the activity that runs this I check for a flag in the onResume, which tells me that we returned from this activity 

     } 
     else{ 
      //we have the token! 
     } 

    } catch (OperationCanceledException e) { 

    } catch (AuthenticatorException e) { 

    } catch (IOException e) { 

    } 

    } 
} 

Cette méthode ne renvoie pas le GrantCredentialsPermissionActivity, il renvoie un autre, quelque chose comme 'LoginActivity'.

Hope this helps

+0

Mais qu'en est-comptes non-google? –

+0

N'a pas essayé avec des comptes autres que google. – Theblacknight

+0

Cette erreur se produit pour moi-même, avant même que le rappel paramétré soit atteint. Mais utiliser 'getAccountsByType (String s)' plutôt que 'getAccounts()' est ce qui l'a résolu. (Comme suggéré à: http://stackoverflow.com/questions/13577100/google-drive-sdk-error) – Robadob

Questions connexes