2015-08-15 2 views
1

Я пытался исправить эту ошибку в течение недели, но все еще не могу найти проблему. LogIn работает, но по какой-то причине доля в Messenger Crashes. Я не могу понять, в чем проблема. В основном я сохраняю текст в речь на своем устройстве, а затем пытаюсь поделиться им. Файл сохраняется на устройстве (я проверял), но мессенджер не делится.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

Я также попытался делиться образом, который уже был на моем телефоне - Crashes снова – 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) 
... 

Так что это говорит вам, что на линии 205 в PersonalSettings.java, существует проблема с аргументом. И проблема связана с нулевой схемой URI при вызове build().

Угадайте, я бы сказал, что параметр contentUri может быть проблемой. Это значение устанавливается ранее Uri contentUri = Uri.parse(location);. Uri.parse(), according to the docs:

Создает Uri, который анализирует данную закодированный строку URI.

Параметры: uriString: RFC 2396-совместимый, закодированный URI

Немного исследований в URIs (например, помощь this question) приводит нас видеть, что uriString потребности иметь схему как http:// или file:// в начале строки.

В вашем случае вы вызываете Uri.parse с простым именем файла без схемы, в результате чего возникает ошибка, представленная вам в logcat.

Добавление соответствующей схемы или с помощью вспомогательной функции из Uri класса должен помочь решить эту проблему:

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

спасибо человека! Ты обалденный! – EnderNicky

Смежные вопросы