2013-10-21 16 views
6

I持っフラグメント内の私の共有ダイアログの次のコードは機能していませんそれは電話ではありません。また、左上の共有ボタンが無効(表示されていてもクリックできない)なので、共有ダイアログがエミュレータに読み込まれたときに共有することはできません。また、エミュレーターはトーストメッセージ「共有プレビューを取得できませんでした」を表示します。助けてください!共有ダイアログ

誰かが私にこのことを説明できることを願っています。ありがとう! https://developers.facebook.com/docs/android/share

Facebookアプリがインストールされている場合は、Facebookの共有]ダイアログボックスでのみ動作しますから、

+0

あなたのエミュレータにfacebookアプリケーションがありますか?また、Facebookのアプリのバージョンを確認してください。どのadbエラーログが表示されますか? –

答えて

0

。だから、提案された方法は、最初にShare Dialogが提示可能かどうかをチェックし、提示可能かどうか、コンテンツを提示するか、Web Dialogを使って共有画面を提示するかどうかを確認することです。すなわち

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

} 
else 
{ 
     // Fallback. For example, publish the post using the Feed Dialog 
} 

そしてここで、他のオプションの一例である

private void publishFeedDialog() { 
    Bundle params = new Bundle(); 
    params.putString("name", "Facebook SDK for Android"); 
    params.putString("caption", "Build great social apps and get more installs."); 
    params.putString("description", "The Facebook SDK for Android makes it easier and faster to develop Facebook integrated Android apps."); 
    params.putString("link", "https://developers.facebook.com/android"); 
    params.putString("picture", "https://raw.github.com/fbsamples/ios-3.x-howtos/master/Images/iossdk_logo.png"); 

    WebDialog feedDialog = (
     new WebDialog.FeedDialogBuilder(getActivity(), 
      Session.getActiveSession(), 
      params)) 
     .setOnCompleteListener(new OnCompleteListener() { 

      @Override 
      public void onComplete(Bundle values, 
       FacebookException error) { 
       if (error == null) { 
        // When the story is posted, echo the success 
        // and the post Id. 
        final String postId = values.getString("post_id"); 
        if (postId != null) { 
         Toast.makeText(getActivity(), 
          "Posted story, id: "+postId, 
          Toast.LENGTH_SHORT).show(); 
        } else { 
         // User clicked the Cancel button 
         Toast.makeText(getActivity().getApplicationContext(), 
          "Publish cancelled", 
          Toast.LENGTH_SHORT).show(); 
        } 
       } else if (error instanceof FacebookOperationCanceledException) { 
        // User clicked the "x" button 
        Toast.makeText(getActivity().getApplicationContext(), 
         "Publish cancelled", 
         Toast.LENGTH_SHORT).show(); 
       } else { 
        // Generic, ex: network error 
        Toast.makeText(getActivity().getApplicationContext(), 
         "Error posting story", 
         Toast.LENGTH_SHORT).show(); 
       } 
      } 

     }) 
     .build(); 
    feedDialog.show(); 
} 

、常に物事をチェックするためのエミュレータに依存しないでください。すべての後にちょうど "エミュレータ"。実際のデバイスでアプリを簡単にプレビューできます。したがって、エミュレータ上で実際のデバイス上で動作することが想定されているように動作していない場合(もちろん、私は同意します、あなたが複数のデバイス、画面サイズなどを持っていないとエミュレータは良いです)

PS:fbデベロッパーのウェブサイトのアプリ設定ページでキーハッシュを適切に設定する必要があります。

関連する問題