Facebook Messenger SDK for Android:共享URL时崩溃

时间:2015-11-21 23:16:59

标签: facebook facebook-android-sdk facebook-messenger

我需要在Android应用中使用Facebook Messenger SDK。我想发送一个URL,就像文本一样。由于ShareToMessengerParams太有限,我被迫手动构建一个意图,如https://developers.facebook.com/docs/messenger/android#integration_with_intents所示:

private static final String EXTRA_PROTOCOL_VERSION = "com.facebook.orca.extra.PROTOCOL_VERSION";
private static final String EXTRA_APP_ID = "com.facebook.orca.extra.APPLICATION_ID";
private static final int PROTOCOL_VERSION = 20150314;
private static final String YOUR_APP_ID = "[YOUR_FACEBOOK_APP_ID]";
private static final int SHARE_TO_MESSENGER_REQUEST_CODE = 1;

...

String mimeType = "text/plain";

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setPackage("com.facebook.orca");
intent.setType(mimeType);
intent.putExtra(Intent.EXTRA_TEXT, [MY_STRING_URL]);
intent.putExtra(EXTRA_PROTOCOL_VERSION, PROTOCOL_VERSION);
intent.putExtra(EXTRA_APP_ID, YOUR_APP_ID);

activity.startActivityForResult(shareIntent, SHARE_TO_MESSENGER_REQUEST_CODE);

这与以下内容发生冲突:

E/AndroidRuntime( 2429): FATAL EXCEPTION: main

E/AndroidRuntime( 2429): java.lang.ClassCastException: com.facebook.messaging.sharing.f cannot be cast to com.facebook.messaging.sharing.bs

E/AndroidRuntime( 2429):    at com.facebook.messaging.sharing.cz.a(ShareLauncherActivity.java:294)

E/AndroidRuntime( 2429):    at com.facebook.messaging.sharing.cz.onSuccess(ShareLauncherActivity.java:286)

E/AndroidRuntime( 2429):    at com.google.common.f.a.q.run(Futures.java:1231)

E/AndroidRuntime( 2429):    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)

E/AndroidRuntime( 2429):    at com.facebook.common.executors.dv.run(WrappingExecutorService.java:77)

E/AndroidRuntime( 2429):    at android.os.Handler.handleCallback(Handler.java:615)

E/AndroidRuntime( 2429):    at android.os.Handler.dispatchMessage(Handler.java:92)

E/AndroidRuntime( 2429):    at android.os.Looper.loop(Looper.java:137)

E/AndroidRuntime( 2429):    at android.app.ActivityThread.main(ActivityThread.java:4745)

E/AndroidRuntime( 2429):    at java.lang.reflect.Method.invokeNative(Native Method)

E/AndroidRuntime( 2429):    at java.lang.reflect.Method.invoke(Method.java:511)

E/AndroidRuntime( 2429):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)

E/AndroidRuntime( 2429):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)

E/AndroidRuntime( 2429):    at dalvik.system.NativeStart.main(Native Method)

W/ActivityManager(  312):   Force finishing activity com.facebook.orca/com.facebook.messaging.sharing.ShareLauncherActivity

如果我添加:

intent.putExtra(Intent.EXTRA_STREAM, contentUri);

它没有崩溃,但由于我的网址只是一个链接,并且没有指向文件,因此我收到了各种错误:无法找到内容,或者,如果我放了一个假的contentUri,那么真的单击时未激活我想要共享的URL。如果我删除:

intent.putExtra(EXTRA_APP_ID, YOUR_APP_ID);

它也没有崩溃,但是那些没有安装我的应用程序(从中完成共享)的用户没有得到Facebook Messenger"安装"按钮。

如何共享网络链接,同时让用户获得"安装"和"回复"根据需要按钮?

0 个答案:

没有答案