2011-08-23 3 views
0

Mon application souhaite partager de la musique sur Facebook en utilisant le SDK de Facebook pour la fonction de partage. Auparavant, il fonctionnait mais maintenant il force la fermeture à la méthode parseUrl. Quelqu'un peut-il m'aider ? Je vous remercie.Facebook SDK force fermer

désolé et je vous remercie pour votre aide et est mon code

Facebook facebook = new Facebook("123456789123456"); 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Bundle parameters = new Bundle(); 

    parameters.putString("caption" , " "); 
    parameters.putString("description" , "http://www.music.com"); 
    parameters.putString("name" , "(Sweet)"); 
    facebook.dialog(this, "stream.publish", parameters, 
    new DialogListener() 
    { 
     @Override 
     public void onComplete(Bundle values) 
     { 
      /*try 
      { 
       facebook.logout(getApplicationContext()); 
      } 
      catch (Exception e) {}*/ 
     } 

     @Override 
     public void onFacebookError(FacebookError error) {} 

     @Override 
     public void onError(DialogError e) {} 

     @Override 
     public void onCancel() {} 
    }); 
} 

ici est un logcat

08-24 13:01:06.734: ERROR/LoadListener.java(4987): @@@@@@@@@@ mCacheType detachRequestHandle() --> mCacheType0 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987): FATAL EXCEPTION: main 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987): java.lang.ArrayIndexOutOfBoundsException 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987):  at com.facebook.android.Util.decodeUrl(Util.java:97) 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987):  at com.facebook.android.Util.parseUrl(Util.java:115) 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987):  at com.facebook.android.FbDialog$FbWebViewClient.shouldOverrideUrlLoading(FbDialog.java:125) 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987):  at android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:232) 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987):  at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:359) 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987):  at android.os.Looper.loop(Looper.java:123) 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987):  at android.app.ActivityThread.main(ActivityThread.java:3687) 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987):  at java.lang.reflect.Method.invoke(Method.java:507) 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
08-24 13:01:07.097: ERROR/AndroidRuntime(4987):  at dalvik.system.NativeStart.main(Native Method) 
08-24 13:01:07.128: ERROR/(158): Dumpstate > /data/log/dumpstate_app_error 
+1

Pouvez-vous publier le code qui vous cause le problème? Nous ne pouvons pas vous aider sans plus de détails. – EkcenierK

+1

Publiez la sortie LogCat et une partie de votre code qui provoque le crash. –

+0

copier coller le logcat ici. Cela aide également si vous pouviez montrer la partie de votre code qui pourrait causer des problèmes. –

Répondre

0

Facebook va fossé la fonctionnalité stream.publish (voir this notice). Récemment, d'autres personnes sur SO se sont plaintes aussi de problems with stream.publish. Je suppose que la nouvelle API facebook est maintenant un peu boguée quand il s'agit de publier via les flux. Vous feriez mieux de passer à l'affichage via le Graph API.

0

J'avais le même problème dernièrement. Pour une raison quelconque, l'un des paramètres est - qui ne peut pas être divisé en deux chaînes. Correction en injectant une vérification sur com\facebook\android\Util.java

La méthode decodeUrl modifiée a été donnée ci-dessous.

public static Bundle decodeUrl(String s) 
{ 
    Bundle params = new Bundle(); 
    if (s != null) 
    { 
     String array[] = s.split("&"); 
     for (String parameter : array) 
     { 
      String v[] = parameter.split("="); 

      if(v.length >= 2) 
      { 
       params.putString(URLDecoder.decode(v[0]), 
            URLDecoder.decode(v[1])); 
      } 
     } 
    } 
    return params; 
}