2011-12-10 3 views
1

나는 EditText와 버튼을 만드는 응용 프로그램을 만듭니다. 나는 버튼을 클릭 한 후 페이스 북 친구 벽에 EditText에 쓰여진 그 메시지를 게시하고 싶다. Facebook sdk를 사용하여이 작업을 수행 할 수있는 방법을 알려주십시오. Android에서 친구의 Facebook 벽에 게시하려면 어떻게해야합니까?

코드

은 다음과 같습니다 : 사전에

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     this.setContentView(R.layout.post_wall); 

     share = (Button) findViewById(R.id.share); 
     friend_name = (TextView) findViewById(R.id.wall_to); 
     wall = (EditText) findViewById(R.id.wall); 

     savedInstanceState = new Bundle(); 
     savedInstanceState.getString("to"); 

     onComplete(savedInstanceState); 

    } 

@Override public void onComplete(Bundle values) 
    { 

     Utility.currentPermissions.clear(); 


     if (values.isEmpty()) 
     { 
      //"skip" clicked ? 
      return; 
     } 

     // if facebookClient.authorize(...) was successful, this runs 
     // this also runs after successful post 
     // after posting, "to"(which is the id of friend) is added to the values bundle 
     // I use that to differentiate between a call from 
     // faceBook.authorize(...) and a call from a successful post 
     // is there a better way of doing this? 
     if (!values.containsKey("to")) 
     { 
      try 
      { 
       Log.d("Wall try", "Click successfully"); 

       for (String key : parameters.keySet()) { 
        if (parameters.getByteArray(key) != null) { 
         parameters.putByteArray(key, parameters.getByteArray(key)); 

         Log.d("key", parameters.getByteArray(key).toString()); 
        } 
       } 

       mHandler.post(new Runnable() { 
        @Override 
        public void run() { 
         performActivityInfo(); 
        } 
       }); 


      } 
      catch (Exception e) 
      { 
       // TODO: handle exception 
       System.out.println(e.getMessage()); 
      } 
     } 
    } 



protected void performActivityInfo() { 

     Log.d("perform wall", "Perform Activity"); 
     mHandler.sendEmptyMessage(FRIEND_WALL); 


     parameters.putString("message", wall.getText().toString()); 
     facebookClient.dialog(this, "stream.publish", parameters, this);// "stream.publish" is an API call 
     Log.d("Wall post", "Click successfully"); 

    } 

    public Handler mHandler = new Handler() { 
     @Override 
     public void handleMessage(Message msg) { 
      switch (msg.what) { 
      case FRIEND_WALL: 
       Log.d("Handler WALL", "Handler"); 
       postOnWall(wall.getText().toString()); 
       break; 
      } 
      super.handleMessage(msg); 
     } 
    }; 



@Override 
    public void onError(DialogError e) 
    { 
     System.out.println("Error: " + e.getMessage()); 
    } 

    @Override 
    public void onFacebookError(FacebookError e) 
    { 
     System.out.println("Error: " + e.getMessage()); 
    } 

    @Override 
    public void onCancel() 
    { 
    } 

    @Override 
    public void onClick(View v) 
    { 
      facebookClient = new Facebook(APP_ID); 
      // replace APP_API_ID with your own 
      Log.d("Wall click", "Click successfully"); 
      facebookClient.authorize(this, 
       new String[] {"publish_stream", "read_stream", "offline_access"}, this); 
    } 

    public void postOnWall(String msg) { 
     Log.d("Tests", "Testing graph API wall post"); 
     try { 
       String response = facebookClient.request("me"); 
       Bundle parameters = new Bundle(); 
       parameters.putString("message", msg); 
       parameters.putString("description", "test test test"); 
       response = facebookClient.request("me/feed", parameters, 
         "POST"); 
       Log.d("Tests", "got response: " + response); 
       if (response == null || response.equals("") || 
         response.equals("false")) { 
        Log.v("Error", "Blank response"); 
       } 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 

감사합니다. 텍스트 편집에서 값을 얻기 위해

+0

이 코드에 문제가 있으면 샘플 코드를 제공해주세요. 이 코드가 필요합니다. –

답변

2

바로 사용

글고 글고; 버튼 클릭 리스너 내부

edittext.getEditableText().toString(); 

이 코드를 사용하여 다음

button.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View arg0) { 
      String entered_value=edittext.getEditableText().toString(); 
      try{ 
       parameters.putString("message", entered_value); 
       parameters.putString("target_id", "XXXXX"); // target Id in which you need to Post 
       parameters.putString("method", "stream.publish"); 
       String response = authenticatedFacebook.request(parameters);  
       Log.v("response", response); 
      } 
      catch(Exception e){} 
     } 
    }); 

버튼이 버튼 개체입니다

.

+0

고마워요. 나는 이것을했다. ... !!! –

관련 문제