2015-08-15 143 views
1

我一直在尝试解决这个错误一个星期了,但仍然无法找到问题。 LogIn正在工作,但由于某些原因,Messenger Messenger崩溃。我无法真正了解问题所在。基本上我把文字保存到我的设备上,然后我尝试分享它。该文件保存到设备(我选中),但Messenger不共享。Android:分享到Facebook Messenger错误

这里是我的代码共享:

public void shareFile(View view) { 
    String sayWhat = "This is what you sound like when you write to me, thanks to the app Messenger Say it! Available now at Google Play"; 
    HashMap hashmap = new HashMap(); 
    hashmap.put("utteranceId", sayWhat); 
    String location = new StringBuilder(Environment.getExternalStorageDirectory().toString()).append("/").append(name).append(".mp3").toString(); 


    speed = ((float)speedS.getProgress()/100F)*2.0F; 
    pitch=((float)pitchS.getProgress()/100F)*2.0F; 
    ttsread.setPitch(pitch); 
    ttsread.setSpeechRate(speed); 
    ttsread.synthesizeToFile(sayWhat, hashmap, location); 

    String mimeType = "audio/mpeg"; 


    Uri contentUri = Uri.parse(location); 
    text.setText(contentUri.toString()); 
    long futuretime = System.currentTimeMillis() + 1000; 
    while (System.currentTimeMillis() < futuretime) { 
     synchronized (this) { 
      try { 
       wait(futuretime - System.currentTimeMillis()); 
      } catch (Exception e) { 
      } 
     } 
    } 
    ShareToMessengerParams params = ShareToMessengerParams.newBuilder(contentUri, "audio/mpeg") 
      .setMetaData("com.facebook.sdk.ApplicationId") 
      .build(); 
    MessengerUtils.shareToMessenger(this, 1, params); 

    //MessengerUtils.finishShareToMessenger(activity,params); 

} 

和我的logcat:

java.lang.IllegalStateException: Could not execute method of the activity 
      at android.view.View$1.onClick(View.java:3969) 
      at android.view.View.performClick(View.java:4637) 
      at android.view.View$PerformClick.run(View.java:19422) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5586) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.reflect.InvocationTargetException 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at android.view.View$1.onClick(View.java:3964) 
            at android.view.View.performClick(View.java:4637) 
            at android.view.View$PerformClick.run(View.java:19422) 
            at android.os.Handler.handleCallback(Handler.java:733) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:136) 
            at android.app.ActivityThread.main(ActivityThread.java:5586) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
            at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.IllegalArgumentException: Unsupported URI scheme: null 
      at com.facebook.messenger.ShareToMessengerParams.<init>(ShareToMessengerParams.java:106) 
      at com.facebook.messenger.ShareToMessengerParamsBuilder.build(ShareToMessengerParamsBuilder.java:120) 
      at com.inc.nicky.messengersayit.PersonalSettings.shareFile(PersonalSettings.java:205) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at android.view.View$1.onClick(View.java:3964) 
            at android.view.View.performClick(View.java:4637) 
            at android.view.View$PerformClick.run(View.java:19422) 
            at android.os.Handler.handleCallback(Handler.java:733) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:136) 
            at android.app.ActivityThread.main(ActivityThread.java:5586) 
+0

我也尝试共享的图像,这已经是我的手机上 - 再次崩溃 – EnderNicky

回答

2

您需要阅读你的logcat和尝试,并了解了它的告诉你。

java.lang.IllegalStateException: Could not execute method of the activity 

好的......为什么?

Caused by: java.lang.reflect.InvocationTargetException 

这只是意味着它无法调用目标方法 - 与第一条消息非常相似。 Still..why?

Caused by: java.lang.IllegalArgumentException: Unsupported URI scheme: null 

IllegalArgumentException表示传递给方法的参数有问题。哪里?在代码中找到的第一个位置:

at com.facebook.messenger.ShareToMessengerParams.<init>(ShareToMessengerParams.java:106) 
      at com.facebook.messenger.ShareToMessengerParamsBuilder.build(ShareToMessengerParamsBuilder.java:120) 
      at com.inc.nicky.messengersayit.PersonalSettings.shareFile(PersonalSettings.java:205) 
... 

所以这告诉你,在PersonalSettings.java线205,还有与变量的问题。而当调用build()时,问题在于使用空URI方案。

在猜测,我会说contentUri参数可能是问题。该值由Uri contentUri = Uri.parse(location);提前设置。 Uri.parse()according to the docs

创建一个解析给定编码的URI字符串的Uri。

参数:uriString中:符合RFC 2396-,编码URI

的一点点研究到的URI(比如从this question帮助)使我们看到,uriString需要有计划像http://file://在字符串的开头。

在你的情况下,你打电话Uri.parse与一个普通的文件名没有一个计划,导致在logcat中呈现给你的错误。

添加合适的方案,或者使用一个辅助函数从Uri类应该有助于解决这个问题:

Uri contentUri = Uri.fromFile(new File(location)); 
+0

感谢的人!你太棒了! – EnderNicky