Xamarin Android Facebook共享按钮被禁用

时间:2017-03-23 19:15:53

标签: facebook xamarin.android

希望你一切都好。 我有一个简单的xamarin android应用程序,并试图在其中集成Facebook分享按钮。 我已完成所有文档和其他教程。应用已在Facebook注册。 但该按钮在应用程序中显示为灰色,已禁用。 我不知道是什么问题。 使用Android M 6.0.1在Nexus 5中进行测试。

感谢。

到目前为止我所做的事情几乎没有更新。

清单文件

清单文件

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id" />
        <activity android:name="com.facebook.FacebookActivity" 
              android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
              android:theme="@android:style/Theme.Translucent.NoTitleBar" 
              android:label="@string/ApplicationName" />
        <provider android:authorities="com.facebook.app.FacebookContentProvider266540057101076" android:name="com.facebook.FacebookContentProvider" android:exported="true" />

活动文件代码段

<com.facebook.share.widget.ShareButton
      android:id="@+id/fShareButton"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_marginTop="10dp"
      android:layout_gravity="center_horizontal" />

最后是控制器。

private ShareButton fShareButton;

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    getKeyHashes();
    FacebookSdk.SdkInitialize(ApplicationContext);
    SetContentView(Resource.Layout.details);
    fShareButton = FindViewById<ShareButton>(Resource.Id.fShareButton);
    fShareButton.Click += FShareButton_Click;
    ..........
 }

private void FShareButton_Click(object sender, EventArgs e)
{
    #region Facebook Share Button
    View v1 = Window.DecorView.RootView;
    v1.DrawingCacheEnabled = true;

    Android.Graphics.Bitmap bitmap = Android.Graphics.Bitmap.CreateBitmap(v1.GetDrawingCache(true));

    var photoBuilder = new SharePhoto.Builder();
    photoBuilder.SetBitmap(bitmap);
    var photo = photoBuilder.Build().JavaCast<SharePhoto>();

    var photos = new List<SharePhoto>();
    photos.Add(photo);

    SharePhotoContent photoContent = new SharePhotoContent.Builder().SetPhotos(photos).Build();
    fShareButton.ShareContent = photoContent;
    #endregion
}

1 个答案:

答案 0 :(得分:0)

您必须在ShareButton中设置callbackManager并填充ShareContent属性,在我的示例中,我使用ShareLinkContent作为内容,但是还有其他选项,例如“ ShareMediaContent”,“ SharePhotContent”等,您可以在{中获得更多的解释{3}}:

fShareButton = FindViewById<ShareButton>(Resource.Id.fShareButton);
            callbackManager = CallbackManagerFactory.Create();
            fShareButton.RegisterCallback(callbackManager, this);
            var content = new ShareLinkContent.Builder();
            content.SetContentUrl(Android.Net.Uri.Parse("https://www.mivinco.com/linkapp_an9.html"));
            var hashtag = new ShareHashtag.Builder();
            hashtag.SetHashtag("#porqueTuExperienciaCuenta");
            content.SetShareHashtag((ShareHashtag)hashtag.Build());
            fShareButton.ShareContent = content.Build();

此外,您还应该在活动中实现IFacebookCallback接口:

protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
    {
        base.OnActivityResult(requestCode, resultCode, data);
        callbackManager.OnActivityResult(requestCode, (int)resultCode, data);
    }

它在我的Android应用中正常运行。让我知道它在您的应用中是否也能正常工作。