1

似ていないエラーが発生しました。Facebook 共有ダイアログを実行しようとしましたが、logcat でこのエラーが発生しました。

 10-17 15:44:39.026: E/AndroidRuntime(2534): com.facebook.FacebookException: Unable to create Intent; this likely means the Facebook app is not installed.

これが何を意味するのかわかりません。探してみましたが、似たような事例はありませんでした。これが私のコードです。

TabFour.java

public class TabFour extends Fragment {
private UiLifecycleHelper uiHelper;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.activity_tab_four, container, false);

    return rootView;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    uiHelper = new UiLifecycleHelper(getActivity(), callback);
    uiHelper.onCreate(savedInstanceState);

    OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class);
    action.setProperty("book", "https://example.com/book/Snow-Crash.html");

    @SuppressWarnings("deprecation")
    FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(getActivity(), action, "books.reads", "book")
            .build();
    uiHelper.trackPendingDialogCall(shareDialog.present());
}


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

    uiHelper.onActivityResult(requestCode, resultCode, data, new FacebookDialog.Callback() {
        @Override
        public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) {
            Log.e("Activity", String.format("Error: %s", error.toString()));
        }

        @Override
        public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) {
            Log.i("Activity", "Success!");
        }
    });
}



@Override
public void onResume() {
    super.onResume();
    uiHelper.onResume();
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    uiHelper.onSaveInstanceState(outState);
}

@Override
public void onPause() {
    super.onPause();
    uiHelper.onPause();
}

@Override
public void onDestroy() {
    super.onDestroy();
    uiHelper.onDestroy();
}
private Session.StatusCallback callback = new Session.StatusCallback() {


    @Override
    public void call(Session session, SessionState state,
            Exception exception) {
        // TODO Auto-generated method stub

    }
};

}

これが私のログキャットです。

http://shrib.com/nointentstuff

4

4 に答える 4

17

Facebook アプリをインストールしていない可能性のあるユーザー向けに実際にアプリをビルドしたい場合は、ShareDialog ビルダーに次のチェックを含めてください (詳細はこちら)。

if (FacebookDialog.canPresentShareDialog(getApplicationContext(), 
                                         FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) {
    FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(this)
            .setLink("https://developers.facebook.com/android")
            .build();
    uiHelper.trackPendingDialogCall(shareDialog.present());

}
于 2013-10-29T18:10:00.223 に答える
12

ユーザーがアプリをインストールしていない場合 (FB からのばかげた依存関係...)、ブラウザーからの共有にフォールバックできます。

String linkString = "https://developers.facebook.com/android";
if (FacebookDialog.canPresentShareDialog(getApplicationContext(), FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) {
    FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(this).setLink(linkString).build();
    uiHelper.trackPendingDialogCall(shareDialog.present());
} else {
    String sharerUrl = "https://www.facebook.com/sharer/sharer.php?u=" + linkString;
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(sharerUrl));
    this.startActivity(intent);
}
于 2014-11-05T13:59:27.593 に答える
4

com.facebook.FacebookException: インテントを作成できません。これはおそらく、Facebook アプリがインストールされていないことを意味します

ステップ 2 からの引用 @ https://developers.facebook.com/docs/android/getting-started/facebook-sdk-for-android/

Facebook SDK は、Facebook のネイティブ アプリを使用して、存在する場合に認証のサポートを提供します。実際のデバイスでは、このアプリを Google Play から無料でインストールするだけでテストできます。ただし、エミュレータで Google Play にアクセスすることはできません。そこでフローをテストしたい場合は、インストール可能な SDK にコピーが含まれています。

Facebook アプリのインストール可能な APK は、SDK の bin フォルダーにあり、FBAndroid-3.5.apk などの名前が付けられています。Android エミュレーターにインストールするには、まずエミュレーターを起動する必要があります。

次に、メインの Android SDK の platform-tools ディレクトリで adb ツールを見つけます。OS X では、Android SDK を解凍したときにこの場所を選択します。Windows では、SDK は AppData\Local\Android\android-sdk の下のホーム ディレクトリにインストールされます。

Facebook SDK をホーム ディレクトリに配置したと仮定すると、adb を使用して、次のように OS X で実行中のエミュレータに APK をインストールします。

./adb install ~/facebook-android-sdk-3.5/bin/FBAndroid-3.5.apk

Windows では、次のようにします。

adb install %HOMEPATH%\facebook-android-sdk-3.5\bin\FBAndroid-3.5.apk 完了したら、エミュレータのアプリ画面でアプリが正しくインストールされていることを確認します。このアプリを以前のバージョンから強制的にアップグレードする必要がある場合は、OS X で次のように -r フラグを追加します。

./adb install -r ~/facebook-android-sdk-3.5/bin/FBAndroid-3.5.apk
于 2013-10-21T05:16:10.270 に答える