user2629828
user2629828

Reputation: 685

Android facebook post on wall like twitter

I would like to create intent for facebook like this example for twitter

Intent tweetIntent = new Intent(Intent.ACTION_SEND);
            tweetIntent.putExtra(Intent.EXTRA_TEXT, "some text");
            tweetIntent.setType("text/plain");

            PackageManager packManager = Model.getInstance().getContext().getPackageManager();
            List<ResolveInfo> resolvedInfoList = packManager.queryIntentActivities(tweetIntent,  PackageManager.MATCH_DEFAULT_ONLY);

            boolean resolved = false;
            for(ResolveInfo resolveInfo: resolvedInfoList){
                if(resolveInfo.activityInfo.packageName.startsWith("com.twitter.android")){
                    tweetIntent.setClassName(
                        resolveInfo.activityInfo.packageName, 
                        resolveInfo.activityInfo.name );
                    resolved = true;
                    break;
                }
            }
            if(resolved){
                startActivity(tweetIntent);
            }else{
                Toast.makeText(Model.getInstance().getContext(), "Twitter app isn't found", Toast.LENGTH_SHORT).show();
            }    

I have read a lots of articles where I found out this way (intentIntent.putExtra(Intent.EXTRA_TEXT, "" )) is not possible for facebook. So my question how can I do achieve my goal ? I simple want to post text to user's wall.

Upvotes: 0

Views: 286

Answers (3)

Akhil
Akhil

Reputation: 6697

According to FB new policy, it will not allow to prefilling of text, while sharing any post. User has to manually enter post content.

Reference: Video: https://developers.facebook.com/docs/apps/review/prefill

Article: Check for "2. Give people control" https://developers.facebook.com/policy/

Article: Check for "Step 2: Add Publishing Logic" https://developers.facebook.com/docs/android/share

Upvotes: 1

Dhinakaran Thennarasu
Dhinakaran Thennarasu

Reputation: 3356

  To just open user's FB so that the user can post.. You can try this. However if you want to post any text or link you need to use FB SDK and permissions. It is not possible via intents anymore.

Follow this Link

  Intent sendIntent = new Intent();
            sendIntent.setAction(Intent.ACTION_SEND);
            sendIntent.putExtra(Intent.EXTRA_TEXT, "Hiee.");
            sendIntent.setType("text/plain");
            sendIntent.setPackage("com.facebook.katana");
            try {
                startActivity(sendIntent);
            } catch (android.content.ActivityNotFoundException ex) {
                Toast.makeText(getApplicationContext(), "Install Facebook", 5000).show();
            }

Upvotes: 0

Mohamed ALOUANE
Mohamed ALOUANE

Reputation: 5417

After adding the facebook SDK! in your Project

Look at the following simplified example code:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import com.facebook.android.*;
import com.facebook.android.Facebook.DialogListener;

public class FacebookActivity extends Activity implements DialogListener,
        OnClickListener
{

private Facebook facebookClient;
private LinearLayout facebookButton;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.test);//my layout xml

    facebookButton = (LinearLayout)this.findViewById(R.id.Test_Facebook_Layout);

}

@Override
public void onComplete(Bundle values)
{

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

    // if facebookClient.authorize(...) was successful, this runs
    // this also runs after successful post
    // after posting, "post_id" 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("post_id"))
    {
        try
        {
            Bundle parameters = new Bundle();
            parameters.putString("message", "this is a test");// the message to post to the wall
            facebookClient.dialog(this, "stream.publish", parameters, this);// "stream.publish" is an API call
        }
        catch (Exception e)
        {
            // TODO: handle exception
            System.out.println(e.getMessage());
        }
    }
}

@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)
{
    if (v == facebookButton)
    {
        facebookClient = new Facebook();
        // replace APP_API_ID with your own
        facebookClient.authorize(this, APP_API_ID,
            new String[] {"publish_stream", "read_stream", "offline_access"}, this);
    }
}

}

Upvotes: 0

Related Questions