gpt4 book ai didi

java - Facebook SDK 4.0.0,Android 上的 ShareDialog 始终为 null

转载 作者:太空狗 更新时间:2023-10-29 16:01:47 25 4
gpt4 key购买 nike

我想使用 Facebook 的 SDK 在 Facebook 上分享一些东西。我的引用是 Share Dialog由 Facebook 基于 Facebook SDK 4.0.0。

    CallbackManager callbackManager;
ShareDialog shareDialog;

@Override
protected void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

this.getWindow().addFlags(Window.FEATURE_NO_TITLE);
this.setContentView(R.layout.v3_activity_splash);

// Init Facebook SDK
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
shareDialog = new ShareDialog(this);
shareOnFacebook("This is test...");

...
}

private void shareOnFacebook(String content)
{
if (ShareDialog.canShow(ShareLinkContent.class))
{
Log.e("Test", "inside shareOnFacebook()");

// ShareLinkContent shareLinkContent = new ShareLinkContent.Builder().setContentDescription(content).build();
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setContentTitle("Hello Facebook")
.setContentDescription(content)
.setContentUrl(Uri.parse("http://developers.facebook.com/android"))
.build();

shareDialog.show(linkContent);
}
else
{
Toast.makeText(this, "NOT CALLED", Toast.LENGTH_SHORT).show();
}
}

@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);

Log.e("Test", "Yes, Uuu bitch!!!");
}

我在 Application 标签内的 list 文件中也有以下代码行:

<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="MY_APP_ID"/>

<provider
android:name="com.facebook.FacebookContentProvider"
android:authorities="com.facebook.app.FacebookContentProviderMY_APP_ID"
android:exported="true"/>

当我在 shareDialog.show(linkContent); 行启动应用程序/Activity 时,我的问题是 NullPointerException。然而,有趣的是,根据我的调试,shareDialog 不是 null :( 所以不知道为什么抛出“NullPointerException”。因此我也没有看到我的 onActivityResult 日志此函数不会被调用。

enter image description here

最后日志显示:

Process: MY_PCKAGE_NAME, PID: 2152
java.lang.RuntimeException: Unable to start activity ComponentInfo{MY_PCKAGE_NAME/MY_PCKAGE_NAME.v3.splash.SplashActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2281)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2359)
at android.app.ActivityThread.access$800(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5230)
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:780)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:596)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:883)
at com.facebook.internal.Utility.getDialogFeatureConfig(Utility.java:859)
at com.facebook.internal.DialogPresenter.getVersionSpecForFeature(DialogPresenter.java:247)
at com.facebook.internal.DialogPresenter.getProtocolVersionForNativeDialog(DialogPresenter.java:234)
at com.facebook.internal.DialogPresenter.canPresentNativeDialogWithFeature(DialogPresenter.java:75)
at com.facebook.share.widget.ShareDialog.canShowNative(ShareDialog.java:133)
at com.facebook.share.widget.ShareDialog.access$300(ShareDialog.java:55)
at com.facebook.share.widget.ShareDialog$NativeHandler.canShow(ShareDialog.java:241)
at com.facebook.share.widget.ShareDialog$NativeHandler.canShow(ShareDialog.java:233)
at com.facebook.internal.FacebookDialogBase.createAppCallForMode(FacebookDialogBase.java:184)
at com.facebook.internal.FacebookDialogBase.showImpl(FacebookDialogBase.java:147)
at com.facebook.internal.FacebookDialogBase.show(FacebookDialogBase.java:142)
at MY_PCKAGE_NAME.splash.SplashActivity.shareOnFacebook(SplashActivity.java:414)
at MY_PCKAGE_NAME.splash.SplashActivity.onCreate(SplashActivity.java:93)
at android.app.Activity.performCreate(Activity.java:5411)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2359)
            at android.app.ActivityThread.access$800(ActivityThread.java:139)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5230)
            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:780)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:596)
            at dalvik.system.NativeStart.main(Native Method)

如有任何建议,我们将不胜感激。谢谢。

最佳答案

我刚刚创建了一个示例项目来查找我的问题所在,最后发现我有两个错误。其实其中一个不是因为我,Facebook 疯了!

1) 我忘记将 Facebook Activity 添加到我的 list 文件中(这就是为什么我没有得到 OnActivityResult 的日志)

<!-- Facebook -->
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

2) 您必须在您的 strings.xml 文件中创建 facebook_app_id 并将元数据链接到该文件,而不是直接将您的 app_id 放在那里.

<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>

进行这些更改后,我可以在我的项目中看到 Facebook 对话框。这些事情浪费了我两天的时间,希望不会发生在你身上。

关于java - Facebook SDK 4.0.0,Android 上的 ShareDialog 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29465547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com