2011-12-10 14 views
1

私はEditTextとボタンを作成するアプリケーションを作成します。私はボタンをクリックした後、Facebookの友達の壁に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のEditText。ボタン内

edittext.getEditableText().toString(); 

Listenerは、ボタンは、ボタンオブジェクトである

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

ありがとうございました。私はこれをやった... !!! –

関連する問題