您需要阅读 logcat 并尝试理解它告诉您什么。
java.lang.IllegalStateException: Could not execute method of the activity
好吧……为什么?
Caused by: java.lang.reflect.InvocationTargetException
这仅意味着它无法调用目标方法 - 与第一条消息几乎相同。还是……为什么?
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 行,参数存在问题。问题是与空 URI 方案有关build()
叫做。
据猜测,我认为 contentUri 参数可能是问题所在。该值是由之前设置的Uri contentUri = Uri.parse(location);
. Uri.parse()
, 根据文档:
创建一个解析给定编码 URI 字符串的 Uri。
参数: uriString:符合 RFC 2396 的编码 URI
对 URI 进行一些研究(例如来自这个问题)让我们看到uriString
需要有一个类似的方案http://
or file://
在字符串的开头。
在你的情况下,你正在打电话Uri.parse
使用普通文件名没有计划,导致 logcat 中向您显示错误。
添加适当的方案或使用辅助函数Uri
类应该有助于解决问题:
Uri contentUri = Uri.fromFile(new File(location));