androidfacebookfacebook-graph-apiandroid-listviewfacebook-invite

android how to display all my facebook friends and invite to play


I am new in Facebook Integration In my app i successfully log in through Facebook,

But, I want to,

  1. Display all my Facebook friends in list with invite button

  2. After Invite invitation sent to them

I much finding but i don't understand Facebook documentation, So any one please give me any related example,

It very appreciated.


Solution

  • I have put some important portion for display facebook friends are followwing. For more info and any quesry you must refere to,

    https://developers.facebook.com/

    https://developers.facebook.com/docs/games/unity/unity-tutorial

    https://github.com/fbsamples/web-friend-smash-v1 and

    https://github.com/fbsamples/android-friend-smash-v2

    Following main portion for display fb friends list( that have not install game ) To Display Facebook friends on list :

    Call following function on your button onClick :

          Session session = Session.getActiveSession();
          if (session == null || !session.isOpened()) {
                return;
          }
          List<String> permissions = session.getPermissions();
    
          if (!permissions.contains("user_friends")) {
    
                askForFriendsForPlayPermission(session);
    
            } else {
                loadFriendsFromFacebook(new FriendsLoadedCallback() {
    
                    @Override
                    public void afterFriendsLoaded() {
                        // startGame();
                        close_button_value = 11;
                        img_close_button.setVisibility(View.VISIBLE);
                    }
    
                });
    
            }
    

    askForFriendsForPlayPermission(...) : this function helps to take friends permission , if you press yes then it show the list of fb friends list, are following:

        private void askForFriendsForPlayPermission(final Session session) {
        // user has already said no once this session.
        if (application.hasDeniedFriendPermission()) {
        } else {
            new AlertDialog.Builder(HomeActivity.this)
                    .setPositiveButton(R.string.dialog_yes, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int id) {
                            // User hit OK. Request Facebook friends
                            // permission.
                              requestFriendsPermission(AUTH_FRIENDS_PLAY_ACTIVITY_CODE);
                        }
                    }).setNegativeButton(R.string.dialog_no, new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // User hit cancel. Keep track of deny so
                            // that we
                            // only ask once per session
                            // and then just play the game.
                            application.setHasDeniedFriendPermission(true);
    
                        }
                    }).setTitle(R.string.with_friends_dialog_title).setMessage(R.string.with_friends_dialog_message)
                    .show();
        }
    }
    

    Take user_friends Permission - call :

        private void requestFriendsPermission(int requestCode) {
        // --//--Log.d("Permiision", "Requesting friends permissions.");
        Session.NewPermissionsRequest newFriendsPermissionsRequest = new Session.NewPermissionsRequest(this,
                "user_friends").setRequestCode(requestCode);
        Session.getActiveSession().requestNewReadPermissions(newFriendsPermissionsRequest);
    
    }
    

    Load facebook friends :

       private void loadFriendsFromFacebook(final FriendsLoadedCallback callback) {
       final Session session = Session.getActiveSession();
       RequestBatch requestBatch = new RequestBatch();
       Request invitableFriendsRequest = Request.newGraphPathRequest(session, "/me/invitable_friends",
                new Request.Callback() {
    
                    @Override
                    public void onCompleted(Response response) {
    
                        FacebookRequestError error = response.getError();
                        if (error != null) {
                            Log.e(CricoApplication.TAG, error.toString());
                            // handleError(error, true);
                        } else if (session == Session.getActiveSession()) {
                            if (response != null) {
                                // Get the result
                                GraphObject graphObject = response.getGraphObject();
                                JSONArray dataArray = (JSONArray) graphObject.getProperty("data");
    
                                List<JSONObject> invitableFriends = new ArrayList<JSONObject>();
                                if (dataArray.length() > 0) {
                                    // Ensure the user has at least one friend
                                    // ...
                                    // fb_friends = new ArrayList<String>();
                                    list_fb_friends = new ArrayList<HashMap<String, String>>();
                                    for (int i = 0; i < dataArray.length(); i++) {
                                        invitableFriends.add(dataArray.optJSONObject(i));
                                        try {
                                            JSONObject json = dataArray.getJSONObject(i);
                                            String str_id = json.getString(TAG_ID);
                                            String str_first_name = json.getString(TAG_FIRST_NAME);
    
                                            JSONObject picture_obj = json.getJSONObject(TAG_PICTURE);
                                            JSONObject data_obj = picture_obj.getJSONObject(TAG_DATA);
                                            // String str_is_silhouette =
                                            // data_obj.getString(TAG_IS_SILHOUETTE);
                                            String str_url = data_obj.getString(TAG_URL);
    
       // put fb id and friends name in map and add to list view 
                                            map_fb_friends = new HashMap<String, String>();
                                            map_fb_friends.put("str_id", str_id);
                                            map_fb_friends.put("str_first_name", str_first_name);
                                            map_fb_friends.put("str_url", str_url);
                                            list_fb_friends.add(map_fb_friends);
                                            fb_friends.add(str_id);
    
                                        } catch (Exception e) {
                                            e.printStackTrace();
                                        }
                                    }
    
    
    LazyAdapter_fb_friends adapter = new LazyAdapter_fb_friends(HomeActivity.this,
                                            list_fb_friends);
    Your_list_view.setAdapter(adapter);
                                }
    
                                application.setInvitableFriends(invitableFriends);
                            }
                        }
                    }
    
                });
        Bundle invitableParams = new Bundle();
        invitableParams.putString("fields", "id,first_name,picture");
        invitableFriendsRequest.setParameters(invitableParams);
        requestBatch.add(invitableFriendsRequest);
    
        // Get the user's list of friends.
        // This only returns friends who have installed the game.
        Request friendsRequest = Request.newMyFriendsRequest(session, new Request.GraphUserListCallback() {
    
            @Override
            public void onCompleted(List<GraphUser> users, Response response) {
                FacebookRequestError error = response.getError();
                if (error != null) {
                    Log.e(CricoApplication.TAG, error.toString());
                    // handleError(error, true);
                } else if (session == Session.getActiveSession()) {
                    // Set the friends attribute
                    application.setFriends(users);
                    callback.afterFriendsLoaded();
                }
            }
        });
    

    You can use facebook-id to invite particular friends.