由于缺少应用程序而使Facebook ShareButton变灰时,如何烤面包?

时间:2018-09-06 02:06:21

标签: android facebook-android-sdk android-sharing

我在我的Android应用中添加了Facebook ShareButton,如下所示:

SharePhoto photo = new SharePhoto.Builder()
     .setBitmap(map)
     .build();
SharePhotoContent content = new SharePhotoContent.Builder()
     .addPhoto(photo)
     .build();
mShareButton.setShareContent(content);

我注意到,如果我的手机未安装Facebook应用,则ShareButton将显示为灰色。如果我按预期的方式单击它,则什么也不会发生。在这种情况下,我想弹出一个Toast,以通知用户他们需要安装Facebook App才能使用共享功能。我该怎么办?我尝试添加:

if (!mShareButton.isEnabled()) {
     mShareButton.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view)
         {
             Toast.makeText(getContext(), "Requires Facebook app.", Toast.LENGTH_SHORT).show();
         }
      });
}

但是,当我单击灰色按钮时,它什么也没做。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

嗯,这几乎好像从未设置监听器。而且,无论状态如何,您都希望它就位。将if移到onClick内,并清楚地处理条件。

// pseudo
button.setListener {
    if button.isEnabled doFacebookThing()
    else showToast()
}

答案 1 :(得分:0)

您可以明确检查是否已安装该应用程序...

public boolean isFBInstalled() {
        PackageManager pm = getPackageManager();
        boolean isInstalled = false;
        try {
            pm.getPackageInfo("FB APP PACKAGE NAME", PackageManager.GET_ACTIVITIES);
            isInstalled = true;
        } catch (PackageManager.NameNotFoundException e) {
            isInstalled = false;
        }
        return isInstalled;
    }

然后在“共享的onClick”按钮中仅检查应用程序是否已安装,如下所示-

        if(isFBInstalled) {
            doFbStuff();
        }
        else {
            Toast.makeText(this, "Facekook App not Found!", Toast.LENGTH_SHORT).show();
        }