someone_ smiley
someone_ smiley

Reputation: 1066

Android Facebook SDK : post message without showing facebook page

I am trying to integrate Facebook to my Android app for social post. I have downloaded latest Facebook sdk from here and apply all setup require to post to facebook. Now i can post to facebook. But problem is that, when i run sample program from facebook sdk, a browser like page is open and user have to enter message himself there. but i dont want this page to showed up. i want a fixed message to post directly without opening facebook dialog box. But if there is noway to avoid this, please tell me how can i fixed certain part of message so that user can't modified it. Thanks in Advance

EDIT1: this is message i got after using this project

04-10 11:44:34.691: I/dalvikvm(719): Failed resolving Lnet/xeomax/TestRocket/TestRocket; 

>interface 22 'Lnet/xeomax/FBRocket/LoginListener;'

>04-10 11:44:34.691: W/dalvikvm(719): Link of class 'Lnet/xeomax/TestRocket/TestRocket;' failed

>04-10 11:44:34.691: D/AndroidRuntime(719): Shutting down VM

>04-10 11:44:34.701: W/dalvikvm(719): threadid=1: thread exiting with uncaught exception (group=0x40015560)

>04-10 11:44:34.781: E/AndroidRuntime(719): FATAL EXCEPTION: main

>04-10 11:44:34.781: E/AndroidRuntime(719): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{net.xeomax.TestRocket/net.xeomax.TestRocket.TestRocket}: java.lang.ClassNotFoundException: net.xeomax.TestRocket.TestRocket in loader dalvik.system.PathClassLoader[/data/app/net.xeomax.TestRocket-1.apk]

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.os.Handler.dispatchMessage(Handler.java:99)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.os.Looper.loop(Looper.java:130)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.app.ActivityThread.main(ActivityThread.java:3683)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at java.lang.reflect.Method.invokeNative(Native Method)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at java.lang.reflect.Method.invoke(Method.java:507)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at dalvik.system.NativeStart.main(Native Method)

>04-10 11:44:34.781: E/AndroidRuntime(719): Caused by: java.lang.ClassNotFoundException: net.xeomax.TestRocket.TestRocket in loader dalvik.system.PathClassLoader[/data/app/net.xeomax.TestRocket-1.apk]

>04-10 11:44:34.781: E/AndroidRuntime(719):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)

>04-10 11:44:34.781: E/AndroidRuntime(719):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)

>04-10 11:44:34.781: E/AndroidRuntime(719):     ... 11 more

EDIT 2 : By introducing minute changes, now i can get rid of above errors. just add folder "libs" to the project and add "fbrocket-0.1a.jar" in this folder. Thank you very much everyone for spending time to help me.

Upvotes: 1

Views: 4450

Answers (4)

Shreyash Mahajan
Shreyash Mahajan

Reputation: 23596

Its not possible.

You must have to login into facebook accountto post the message on Facebook.

Your requirement is only possible if you stored the facebook id and password staticaly in to the application.

Well but there is one alternate of it. If you use facebook sdk to implement the post message on Facebook then it may help you. With using that you can only able to get the facebook login screen once. If user has registered with that login id and password then it will never come again and simple send varification toast message that the message is posted on facebook.

For the above example refer this examples.

  1. Example 1
  2. Example 2
  3. Demo Example
  4. Example 4

Hope it will help you. If not then let me know.

Enjoy. :)

Updated

For to post the static message on facebook, do like below after integrating the Facebook sdk in to the project:

System.out.println("Message is: "+postMessage); // My static post message

                        facebook.authorize(MainActivityPage.this, new String[]{ "user_photos,publish_checkins,publish_actions,publish_stream"},new DialogListener() {                     
                            @Override                     
                            public void onComplete(Bundle values) {   

                                Bundle params = new Bundle();              
                                params.putString(Facebook.TOKEN, facebook.getAccessToken());              
                                params.putString("message", postMessage);               

                                AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);              
                                mAsyncRunner.request("me/feed", params, "POST", new SampleUploadListener(),null);

                                Toast.makeText(getApplicationContext(), "Message Posted on Facebook.", Toast.LENGTH_SHORT).show();
                            }                      
                            @Override                     
                            public void onFacebookError(FacebookError error) {}                      
                            @Override                     
                            public void onError(DialogError e) {}                      
                            @Override                     
                            public void onCancel() {}                 
                        });

Upvotes: 2

RAAAAM
RAAAAM

Reputation: 3380

Try this

public void postMessageOnWall(String msg) {
    if (facebook.isSessionValid()) {
        Bundle parameters = new Bundle();
        parameters.putString("message", msg);
        try {
            String response = facebook.request("me/feed", parameters,"POST");
            System.out.println(response);
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        login();
    }
}

Do follow the link

Upvotes: 1

K.Muthu
K.Muthu

Reputation: 1252

use FacebookRocket API http://www.androidpeople.com/android-facebook-api-example-using-fbrocket#idc-cover if u use this api facebook login page only come try this

try following code

     import net.xeomax.FBRocket.FBRocket;
     import net.xeomax.FBRocket.Facebook;
     import net.xeomax.FBRocket.LoginListener;
     import net.xeomax.FBRocket.ServerErrorException;
     import android.app.Activity;
     import android.os.Bundle;



    public class Fbook extends Activity implements LoginListener {

private FBRocket fbRocket;

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

    shareFacebook();
}

public void shareFacebook() {
    fbRocket = new FBRocket(this, "PitchFork TRY",
            "xxxxxxxxxxxxxxxxxxxx");

    if (fbRocket.existsSavedFacebook()) {
        fbRocket.loadFacebook();
    } else {
        fbRocket.login(R.layout.searchlist_view);
    }
}




public void onLoginFail() {
    fbRocket.displayToast("FaceBook Login failed!");
    fbRocket.login(R.layout.searchlist_view);
}

public void onLoginSuccess(Facebook facebook) {

    fbRocket.displayToast("FaceBook Login success!");
    try {
    final BaseApplication mlisturl = (BaseApplication)   getApplication();
        facebook.setStatus("posting ur custom status :::::::::::::::"
                +"data");
        fbRocket.displayDialog("Status Posted Successfully!! "
                + facebook.getStatus());
    } catch (ServerErrorException e) {
        if (e.notLoggedIn()) {
            fbRocket.login(R.layout.searchlist_view);
        } else {
            System.out.println(e);
        }
    }
}

}

Upvotes: 2

Naresh Sharma
Naresh Sharma

Reputation: 4323

You can do this very easily by adding one jar file and the follow some simple steps. You must have a developer account on facebook. The complete information about your question is available on Facebook sharing of text and images on this link. See the answer given by me at there.

Upvotes: 3

Related Questions