0

私のAndroidアプリケーションでは、ボタンのクリックでFacebookの友達が読み込まれます。次の関数を使用してFacebookの友達を取得しました。しかし、ユーザーが投稿許可を与えていない場合、Facebookの友達を取得していません。投稿の許可があれば、Facebook の友達がリスト ビューに読み込まれます。私のコードの問題は何ですか。助けてください。よろしくお願いします。

private boolean hasPublishPermission() {
        Session session = Session.getActiveSession();
        return session != null
                && session.getPermissions().contains("publish_stream");
    }

private void getFacebookFriends(final Session session) {
        Session msession = session;
        if (msession.isOpened()) {


            if (!hasPublishPermission()) {
                if (progressDlg != null) {
                    progressDlg.dismiss();
                }
                msession.requestNewPublishPermissions(new NewPermissionsRequest(
                        FindFriendsActivity.this, PERMISSIONS));
            } else {
                if (progressDlg != null) {
                    progressDlg.dismiss();
                }
                Request friendRequest = Request.newMyFriendsRequest(msession,
                        new GraphUserListCallback() {

                            public void onCompleted(List<GraphUser> users,
                                    Response response) {
                                fbfrndsDetails.clear();
                                isfindFriendsFromFB = false;
                                ArrayList<FriendsFinderRequest> data = new ArrayList<FriendsFinderRequest>();
                                for (int i = 0; i < users.size(); i++) {

                                    Log.d("name", "" + users.get(i).toString());

                                    FriendsDetails fbfrndDetail = new FriendsDetails();

                                    JSONObject jobj;
                                    try {
                                        jobj = users.get(i)
                                                .getInnerJSONObject();

                                        Log.e("name",
                                                "" + jobj.getString("name"));
                                        Log.e("id", "" + jobj.getString("id"));
                                        JSONObject ob = jobj
                                                .getJSONObject("picture");
                                        JSONObject obj = ob
                                                .getJSONObject("data");



                                    } catch (Exception e1) {
                                        e1.printStackTrace();
                                    }

                                }
                                if (progressDlg != null) {
                                    progressDlg.dismiss();
                                }


                            }
                        });
                Bundle params = new Bundle();
                params.putString("fields", "id,name,picture");
                friendRequest.setParameters(params);
                friendRequest.executeAsync();
            }

        } else {
            if (progressDlg != null) {
                progressDlg.dismiss();
            }
            Session.OpenRequest openRequest = null;
            openRequest = new Session.OpenRequest(FindFriendsActivity.this);
            if (openRequest != null) {

                openRequest.setDefaultAudience(SessionDefaultAudience.FRIENDS);

                if (!hasPublishPermission()) {
                    openRequest.setPermissions(PERMISSIONS);
                }
                if (session.getState() == SessionState.CLOSED_LOGIN_FAILED) {

                    Session.setActiveSession(null);
                    msession = new Session(FindFriendsActivity.this);
                    Session.setActiveSession(msession);
                    msession.openForPublish(openRequest);
                } else {
                    session.openForPublish(openRequest);
                }
            }
        }


    }





private void onSessionStateChange(Session session, SessionState state,
            Exception exception) {



        if (state.isOpened()) {
            if (isfindFriendsFromFB) {
                rootLayout.setVisibility(View.GONE);
                progressDlg = ProgressDialog.show(FindFriendsActivity.this, "",
                        "Please wait");
                Request friendRequest = Request.newMyFriendsRequest(session,
                        new GraphUserListCallback() {

                            public void onCompleted(List<GraphUser> users,
                                    Response response) {
                                isfindFriendsFromFB = false;
                                ArrayList<FriendsFinderRequest> data = new ArrayList<FriendsFinderRequest>();
                                for (int i = 0; i < users.size(); i++) {

                                    Log.d("name", "" + users.get(i).toString());

                                    FriendsDetails fbfrndDetail = new FriendsDetails();

                                    JSONObject jobj;
                                    try {
                                        jobj = users.get(i)
                                                .getInnerJSONObject();

                                        Log.e("name",
                                                "" + jobj.getString("name"));
                                        Log.e("id", "" + jobj.getString("id"));
                                        JSONObject ob = jobj
                                                .getJSONObject("picture");
                                        JSONObject obj = ob
                                                .getJSONObject("data");




                                    } catch (Exception e1) {
                                        e1.printStackTrace();
                                    }

                                }
                                if (progressDlg != null) {
                                    progressDlg.dismiss();
                                }


                            }
                        });
                Bundle params = new Bundle();
                params.putString("fields", "id,name,picture");
                friendRequest.setParameters(params);
                friendRequest.executeAsync();

            }


        } else if (state.isClosed()) {
            if (progressDlg != null) {
                progressDlg.dismiss();
            }

        }
    }
4

1 に答える 1