问题描述:

i am using facebook android sdk provided for facebook i m using their examples-simple provided by them and its working very finely , now on login in fb show a form from fb to post on wall on button click .

but I want to set text directly from code and on button click it directly post the text set by me on fb without calling the wall post form to enter the text and share .

this is my project image conatning all fb related files that i m using and beloow is mu step wise o/p of this project

1.login

after clcik show share form

but after wall post i want to directly upload my post on fb how can i do this and what to change i am not getting any idea i tried but cannot set my predefined text ,how cani directly post on wall without calling the form to share

i have downloaded sdk fron gitstore from this link https://github.com/facebook/facebook-android-sdk/ pls help me thanks in advance

this is my example.java code

 mUploadButton.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

Bundle params = new Bundle();

params.putString("method", "photos.upload");

URL uploadFileUrl = null;

try {

uploadFileUrl = new URL(

"http://www.facebook.com/images/devsite/iphone_connect_btn.jpg");

} catch (MalformedURLException e) {

e.printStackTrace();

}

try {

HttpURLConnection conn= (HttpURLConnection)uploadFileUrl.openConnection();

conn.setDoInput(true);

conn.connect();

int length = conn.getContentLength();

byte[] imgData =new byte[length];

InputStream is = conn.getInputStream();

is.read(imgData);

params.putByteArray("picture", imgData);

} catch (IOException e) {

e.printStackTrace();

}

mAsyncRunner.request(null, params, "POST",

new SampleUploadListener(), null);

}

});

mUploadButton.setVisibility(mFacebook.isSessionValid() ?

View.VISIBLE :

View.INVISIBLE);

mPostButton.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

mFacebook.dialog(Example.this, "feed",

new SampleDialogListener());

}

});

mPostButton.setVisibility(mFacebook.isSessionValid() ?

View.VISIBLE :

View.INVISIBLE);

}

@Override

protected void onActivityResult(int requestCode, int resultCode,

Intent data) {

mFacebook.authorizeCallback(requestCode, resultCode, data);

}

public class SampleAuthListener implements AuthListener {

public void onAuthSucceed() {

mText.setText("You have logged in! ");

mRequestButton.setVisibility(View.VISIBLE);

mUploadButton.setVisibility(View.VISIBLE);

mPostButton.setVisibility(View.VISIBLE);

}

public void onAuthFail(String error) {

mText.setText("Login Failed: " + error);

}

}

public class SampleLogoutListener implements LogoutListener {

public void onLogoutBegin() {

mText.setText("Logging out...");

}

public void onLogoutFinish() {

mText.setText("You have logged out! ");

mRequestButton.setVisibility(View.INVISIBLE);

mUploadButton.setVisibility(View.INVISIBLE);

mPostButton.setVisibility(View.INVISIBLE);

}

}

public class SampleRequestListener extends BaseRequestListener {

public void onComplete(final String response, final Object state) {

try {

// process the response here: executed in background thread

Log.d("Facebook-Example", "Response: " + response.toString());

JSONObject json = Util.parseJson(response);

final String name = json.getString("name");

// then post the processed result back to the UI thread

// if we do not do this, an runtime exception will be generated

// e.g. "CalledFromWrongThreadException: Only the original

// thread that created a view hierarchy can touch its views."

Example.this.runOnUiThread(new Runnable() {

public void run() {

mText.setText("Hello there, " + name + "!");

}

});

} catch (JSONException e) {

Log.w("Facebook-Example", "JSON Error in response");

} catch (FacebookError e) {

Log.w("Facebook-Example", "Facebook Error: " + e.getMessage());

}

}

}

public class SampleUploadListener extends BaseRequestListener {

public void onComplete(final String response, final Object state) {

try {

// process the response here: (executed in background thread)

Log.d("Facebook-Example", "Response: " + response.toString());

JSONObject json = Util.parseJson(response);

final String src = json.getString("src");

// then post the processed result back to the UI thread

// if we do not do this, an runtime exception will be generated

// e.g. "CalledFromWrongThreadException: Only the original

// thread that created a view hierarchy can touch its views."

Example.this.runOnUiThread(new Runnable() {

public void run() {

mText.setText("Hello there, photo has been uploaded at \n" + src);

}

});

} catch (JSONException e) {

Log.w("Facebook-Example", "JSON Error in response");

} catch (FacebookError e) {

Log.w("Facebook-Example", "Facebook Error: " + e.getMessage());

}

}

}

public class WallPostRequestListener extends BaseRequestListener {

public void onComplete(final String response, final Object state) {

Log.d("Facebook-Example", "Got response: " + response);

String message = "<empty>";

try {

JSONObject json = Util.parseJson(response);

message = json.getString("lithe Technologies");

} catch (JSONException e) {

Log.w("Facebook-Example", "JSON Error in response");

} catch (FacebookError e) {

Log.w("Facebook-Example", "Facebook Error: " + e.getMessage());

}

final String text = "Your Wall Post: " + message + "helloooo lithe";

Example.this.runOnUiThread(new Runnable() {

public void run() {

mText.setText(text);

}

});

}

}

public class WallPostDeleteListener extends BaseRequestListener {

public void onComplete(final String response, final Object state) {

if (response.equals("true")) {

Log.d("Facebook-Example", "Successfully deleted wall post");

Example.this.runOnUiThread(new Runnable() {

public void run() {

mDeleteButton.setVisibility(View.INVISIBLE);

mText.setText("Deleted Wall Post");

}

});

} else {

Log.d("Facebook-Example", "Could not delete wall post");

}

}

}

public class SampleDialogListener extends BaseDialogListener {

public void onComplete(Bundle values) {

final String postId = values.getString("post_id");

if (postId != null) {

Log.d("Facebook-Example", "Dialog Success! post_id=" + postId);

mAsyncRunner.request(postId, new WallPostRequestListener());

mDeleteButton.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

mAsyncRunner.request(postId, new Bundle(), "DELETE",

new WallPostDeleteListener(), null);

}

});

mDeleteButton.setVisibility(View.VISIBLE);

} else {

Log.d("Facebook-Example", "No wall post made");

}

}

}

}

网友答案:

Write below two functions into your Activity.

public void postToWall() {
    String message="Good Morning to All";
    Bundle parameters = new Bundle();
    parameters.putString("message", message);
    parameters.putString("description", "topic share");
    try {
        facebook.request("me");
        String response = facebook.request("me/feed", parameters, "POST");
        Log.d("Tests", "got response: " + response);
        if (response == null || response.equals("") || response.equals("false")) {
            showToast("Blank response.");
        } else {
            showToast("Message posted to your facebook wall!");
        }
    } catch (Exception e) {
        showToast("Failed to post to wall!");
        e.printStackTrace();
    }
}

2)

public boolean restoreCredentials(Facebook facebook) {
    SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE);
    facebook.setAccessToken(sharedPreferences.getString(TOKEN, null));
    facebook.setAccessExpires(sharedPreferences.getLong(EXPIRES, 0));
    return facebook.isSessionValid();
}

3)

public void loginAndPostToWall() {
    facebook.authorize(this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener());
}

Write below code into your wall post button click event

facebook = new Facebook(APP_ID);
restoreCredentials(facebook);
if (!facebook.isSessionValid()) {
    loginAndPostToWall();
} else {
    postToWall();
}
相关阅读:
Top