安卓:分享至Facebook Messenger的错误 [英] Android: Share to Facebook Messenger Error
问题描述
我一直在努力,现在来修复这个错误了一个星期,但仍无法找到问题。登录工作正常,但由于某些原因的份额Messenger的崩溃。我实在无法理解的问题是什么。基本上我一个文本到语音保存到我的设备,然后我尝试共享它。该文件保存到设备(我查了),但Messenger无法共享。
下面是我的code分享:
公共无效shareFile(查看视图){
字符串sayWhat =这是你的声音,当你写信给我喜欢,这要归功于应用使者说它现在可在谷歌播放!;
HashMap的HashMap的=新的HashMap();
hashmap.put(utteranceId,sayWhat);
字符串位置=新StringBuilder(Environment.getExternalStorageDirectory().toString()).append("/").append(name).append(".mp3").toString();
速度=((浮点)speedS.getProgress()/ 100°F)* 2.0F;
间距=((浮点)pitchS.getProgress()/ 100°F)* 2.0F;
ttsread.setPitch(间距);
ttsread.setSpeechRate(速度);
ttsread.synthesizeToFile(sayWhat,HashMap中,位置);
字符串MIMETYPE =音频/ MPEG;
乌里contentUri = Uri.parse(位置);
text.setText(contentUri.toString());
长futuretime = System.currentTimeMillis的()+ 1000;
而(System.currentTimeMillis的()< futuretime){
同步(本){
尝试 {
等待(futuretime - System.currentTimeMillis的());
}赶上(例外五){
}
}
}
ShareToMessengerParams PARAMS = ShareToMessengerParams.newBuilder(contentUri,音频/ MPEG)
.setMetaData(com.facebook.sdk.ApplicationId)
。建立();
MessengerUtils.shareToMessenger(这一点,1,则params);
//MessengerUtils.finishShareToMessenger(activity,params);
}
和我的logcat:
java.lang.IllegalStateException:无法执行活动的方法
在android.view.View $ 1.onClick(View.java:3969)
在android.view.View.performClick(View.java:4637)
在android.view.View $ PerformClick.run(View.java:19422)
在android.os.Handler.handleCallback(Handler.java:733)
在android.os.Handler.dispatchMessage(Handler.java:95)
在android.os.Looper.loop(Looper.java:136)
在android.app.ActivityThread.main(ActivityThread.java:5586)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1268)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
在dalvik.system.NativeStart.main(本机方法)
java.lang.reflect.InvocationTargetException:产生的原因
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:515)
在android.view.View $ 1.onClick(View.java:3964)
在android.view.View.performClick(View.java:4637)
在android.view.View $ PerformClick.run(View.java:19422)
在android.os.Handler.handleCallback(Handler.java:733)
在android.os.Handler.dispatchMessage(Handler.java:95)
在android.os.Looper.loop(Looper.java:136)
在android.app.ActivityThread.main(ActivityThread.java:5586)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1268)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
在dalvik.system.NativeStart.main(本机方法)
致:java.lang.IllegalArgumentException:如果不支持的URI方案:空
在com.facebook.messenger.ShareToMessengerParams< INIT>(ShareToMessengerParams.java:106)
在com.facebook.messenger.ShareToMessengerParamsBuilder.build(ShareToMessengerParamsBuilder.java:120)
在com.inc.nicky.messengersayit.PersonalSettings.shareFile(PersonalSettings.java:205)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:515)
在android.view.View $ 1.onClick(View.java:3964)
在android.view.View.performClick(View.java:4637)
在android.view.View $ PerformClick.run(View.java:19422)
在android.os.Handler.handleCallback(Handler.java:733)
在android.os.Handler.dispatchMessage(Handler.java:95)
在android.os.Looper.loop(Looper.java:136)
在android.app.ActivityThread.main(ActivityThread.java:5586)
您需要阅读你的logcat和尝试,并了解它是什么告诉你。
java.lang.IllegalStateException:无法执行活动的方法
确定。为什么?
产生的原因:java.lang.reflect.InvocationTargetException
这只是意味着它无法调用目标的方法 - 所以pretty的大致相同的第一条消息。 Still..why?
产生的原因:java.lang.IllegalArgumentException:如果不支持的URI方案:空
抛出:IllegalArgumentException
意味着什么是错传递给方法的参数。哪里?找到你code中的第一个位置:
在com.facebook.messenger.ShareToMessengerParams< INIT>(ShareToMessengerParams.java:106)
在com.facebook.messenger.ShareToMessengerParamsBuilder.build(ShareToMessengerParamsBuilder.java:120)
在com.inc.nicky.messengersayit.PersonalSettings.shareFile(PersonalSettings.java:205)
...
因此,这告诉你,在PersonalSettings.java线205,有一个与争论的一个问题。而问题是,做一个空URI方案时,构建()
之称。
在猜测,我会说contentUri参数可能是问题。这个值被先前设置为乌里contentUri = Uri.parse(位置);
。 Uri.parse()
的根据文档:
创建一个开放的这分析给定的连接codeD URI字符串。
参数:uriString中:一个RFC 2396标准,EN codeD URI
研究一点点进入的URI(从这个问题)线索我们看到, uriString中
需要有这样一个方案的http://
或文件: //
在字符串的开始。
在你的情况,你调用 Uri.parse
与普通文件名的没有计划的,从而导致psented到错误$ P $您在logcat中。
添加一个合适的方案,或者使用从乌里
类中的辅助函数将有助于解决这一问题:
乌里contentUri = Uri.fromFile(新文件(的位置));
I have been trying to fix this error for a week now, but still cannot find the problem. The LogIn is working, but for some reason the share to Messenger Crashes. I cannot really understand what the problem is. Basically I save a text to speech to my device and then I attempt to share it. The file saves to the device (I checked), but messenger does not share.
Here is my code for sharing:
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);
}
and my 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)
You need to read your logcat and try and understand what it is telling you.
java.lang.IllegalStateException: Could not execute method of the activity
OK...why?
Caused by: java.lang.reflect.InvocationTargetException
This just means it failed to invoke the target method - so pretty much the same as the first message. Still..why?
Caused by: java.lang.IllegalArgumentException: Unsupported URI scheme: null
IllegalArgumentException
means something is wrong with an argument passed to a method. Where? Find the first location in your code:
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)
...
So this tells you that on line 205 in PersonalSettings.java, there is a problem with an argument. And the problem is to do with a null URI scheme when build()
is called.
At a guess, I'd say the contentUri parameter could be the problem. This value is being set earlier by Uri contentUri = Uri.parse(location);
. Uri.parse()
, according to the docs:
Creates a Uri which parses the given encoded URI string.
Parameters: uriString: an RFC 2396-compliant, encoded URI
A little bit of research into URIs (like help from this question) leads us to see that uriString
needs to have a scheme like http://
or file://
at the start of the string.
In your case, you are calling Uri.parse
with a plain filename without a scheme, resulting in the error presented to you in logcat.
Adding an appropriate scheme or using a helper function from the Uri
class should help to fix the problem:
Uri contentUri = Uri.fromFile(new File(location));
这篇关于安卓:分享至Facebook Messenger的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!