2013-04-24 62 views
0

我想在我的Android應用來獲取Facebook上的朋友我的代碼是在較低的Android版本工作正常,但它顯示在4.0及更高版本NetworkOnMainThreadException NetworkOnMainThreadException。Android的Facebook好友獲取顯示4.0或更高版本的Android操作系統版本

這裏是我的代碼:

public static void getFaceBookFriendsIDs() { 

     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        JSONObject result = new JSONObject(facebook.request("me/friends")); 
        JSONArray friendsArray = result.getJSONArray("data"); 
        //friendsList = new ArrayList<String>(); 
        for (int i = 0; i < friendsArray.length(); i++) { 
         //friendsList.add(friendsArray.getJSONObject(i).getString("id")); 
         String id=friendsArray.getJSONObject(i).getString("id"); 
         String name=friendsArray.getJSONObject(i).getString("name"); 
         contactBean=new ContactBean(); 
         contactBean.setFbId(id); 
         contactBean.setUserName(name); 
         com.interactiveapp.Constants.fbContactListArrayList.add(contactBean); 
        } 
       } 
       catch (MalformedURLException e) { 
        e.printStackTrace(); 

       } 
       catch (JSONException e) { 
        e.printStackTrace(); 

       } 
       catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     }).start(); 

     /////////////HANDLE RESPONSE////////// 
     Message m = new Message(); 
     m.obj=""; 
     m.arg1 =1 ; 
     saveHandler.dispatchMessage(m); 

    } 

回答

0

你必須在> = 4.0的Android OS

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
StrictMode.setThreadPolicy(policy); 

添加此行,也可以使用:https://stackoverflow.com/a/16103640/1168654

+0

是它做的正確方法這個?因爲這可能會導致OS服務中斷。 – 2013-04-24 11:04:14

+1

你可以使用asynctask。 - > http://stackoverflow.com/a/16103640/1168654 – 2013-04-24 11:11:02

+0

使用AsyncTask,或使用Facebook SDK的3.0版和Request類,它具有異步方法。 – 2013-04-24 17:12:40

相關問題