列表视图中的Android Facebook sdk好友列表

时间:2013-11-21 07:07:47

标签: android facebook

我需要在listview中显示我的facebook好友.. 我的代码在这里.. 当我在模拟器中启动它时它停止工作.. 请帮助我...

我需要在listview中显示我的facebook好友.. 我的代码在这里.. 当我在模拟器中启动它时它停止工作.. 请帮助我... 我推荐的代码是[1]:http://pastebin.com/5fCRxtL

public class LoginActivity extends Activity{

                        private static final String[] PERMISSIONS = new String[] {"publish_stream","publish_checkins", "read_stream", "offline_access"};
                        public static final String APP_ID = "**************";
             private Facebook facebook = new Facebook(APP_ID);
       private AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
       private ProgressDialog mProgress;
       private Handler mHandler = new Handler();
       private ProgressDialog mSpinner;
       private Handler mRunOnUi = new Handler();
       String FILENAME = "AndroidSSO_data";
             private SharedPreferences mPrefs;

                 public static ArrayList<String> friends ;
                 String _error;

            // private FriendsArrayAdapter friendsArrayAdapter;
            // SharedPreferences.Editor editor;

       TextView tv;
             Button loginButton;
                 private UiLifecycleHelper uiHelper;
                        private ContextWrapper uiActivity;

                 @Override
     public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
                    setContentView(R.layout.login);
                    friends= new ArrayList<String>();

                    tv=(TextView)LoginActivity.this.findViewById(R.id.textview1);
                                loginButton=(Button)findViewById(R.id.button_login);

        loginButton.setOnClickListener(new View.OnClickListener() {

          @Override
              public void onClick(View v) {

                if (! facebook.isSessionValid()) {        
              facebook.authorize(LoginActivity.this, PERMISSIONS, new LoginDialogListener());
                }
         }     
  });
}  

            public void onActivityResult(int requestCode, int resultCode, Intent data) {
       super.onActivityResult(requestCode, resultCode, data);
       Log.d("FB Demo App", "onActivityResult(): " + requestCode);
       facebook.authorizeCallback(requestCode, resultCode, data);
     }

             private class LoginDialogListener implements DialogListener {

               public void onComplete(Bundle values) {
                   saveCredentials(facebook);
                   getAlbumsData task = new getAlbumsData();          
                   task.execute();
                   mHandler.post(new Runnable() {
                     public void run() {
               //---        Intent i = new Intent(LoginActivity.this,FrndActivity.class);
              //---         i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
               //---        startActivity(i);


                             }
                     });
                   mAsyncRunner.request("me/friends", new FriendsRequestListener());
               }

               private void saveCredentials(Facebook facebook) {
                                        // TODO Auto-generated method stub

                                }

                                public void onFacebookError(FacebookError error) {
                   showToast("Authentication with Facebook failed!");
               }

               public void onError(DialogError error) {
                   showToast("Authentication with Facebook failed!");
               }

               public void onCancel() {
                   showToast("Authentication with Facebook cancelled!");
               }
           }



                        public void showToast(String string) {
                                // TODO Auto-generated method stub

                        }
                        public class getAlbumsData {

                                public void execute() {
                                        // TODO Auto-generated method stub

                                }

                        }

      private class FriendsRequestListener implements RequestListener {
          String friendData;

          //Method runs when request is complete
          public void onComplete(String response, Object state) {
              Log.v("", "FriendListRequestONComplete");
              //Create a copy of the response so i can be read in the run() method.
              friendData = response;
              Log.v("friendData--", ""+friendData);
              //Create method to run on UI thread
              LoginActivity.this.runOnUiThread(new Runnable() {
                  public void run() {
                      try {
                          //Parse JSON Data
                          JSONObject json;
                          json = Util.parseJson(friendData);

                          //Get the JSONArry from our response JSONObject
                          JSONArray friendArray = json.getJSONArray("data");

                          Log.v("friendArray--", ""+friendArray);

                          for(int i = 0; i< friendArray.length(); i++)
                          {
                              JSONObject frnd_obj = friendArray.getJSONObject(i);
                              friends.add(frnd_obj.getString("name")+"~~~"+frnd_obj.getString("id"));
                          }

Intent ide = new Intent(LoginActivity.this,FrndActivity.class);
                              ide.putStringArrayListExtra("friends", friends);
                            //  ide.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                              startActivity(ide);

                        //  ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1,android.R.id.text1, friends_list);
                       //   lv.setAdapter(adapter);

                      } catch (JSONException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      } catch (FacebookError e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      }
                  }
              });
          }

          @Override
          public void onIOException(IOException e, Object state) {
              // TODO Auto-generated method stub

          }

          @Override
          public void onFileNotFoundException(FileNotFoundException e,
                  Object state) {
              // TODO Auto-generated method stub

          }

          @Override
          public void onMalformedURLException(MalformedURLException e,
                  Object state) {
              // TODO Auto-generated method stub

          }

          @Override
          public void onFacebookError(FacebookError e, Object state) {
              // TODO Auto-generated method stub

          }
          }

1 个答案:

答案 0 :(得分:1)

请注意...... AsyncFacebookRunner已弃用,因为它已在Facebook文档中显示。

https://developers.facebook.com/docs/reference/android/current/AsyncFacebookRunner/