3

I'm writing an app, that its entire connection to facebook is for uploading bitmaps. Is there any way to do it without registering the app, downloading the sdk, etc?

n00b programmer
  • 2,671
  • 7
  • 41
  • 56

3 Answers3

0

Sure, assuming the user has facebook app installed already, you could fire off an ACTION_SEND intent with your image. The user then selects facebook and uploads it that way. Kind of ugly imo... Why avoid sdk though? It's not too hard to integrate and grants you a lot more flexibility when you think of something else to do in your app.

broody
  • 697
  • 1
  • 6
  • 17
0

Like 'broody' said, it will be tacky. Is this a personal app or for distribution?

If you decide to use the SDK, etc, check out this post: Android - Upload photo to Facebook with Facebook Android SDK

Community
  • 1
  • 1
Anthony Graglia
  • 5,355
  • 5
  • 46
  • 75
  • I tryed this post before, downloaded everything, etc., but having some problems with it. Java doesn't recognize certain libraries, etc. so I hoped there is a very simple way for. It. It is hopefully for distribution :) – n00b programmer Feb 22 '12 at 07:28
  • You should post code... IT helps people know what is going on so they can help. – Anthony Graglia Feb 22 '12 at 07:44
0

dude try this

import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.text.util.Linkify;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class UploadPhotoResultDialog extends Dialog {

private String response, photo_id;
private TextView mOutput, mUsefulTip;
private Button mViewPhotoButton, mTagPhotoButton;
private ImageView mUploadedPhoto;
private Activity activity;
private ProgressDialog dialog;
private boolean hidePhoto = false;
private Handler mHandler;

public UploadPhotoResultDialog(Activity activity, String title, String response) {
    super(activity);
    this.activity = activity;
    this.response = response;
    setTitle(title);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mHandler = new Handler();

    setContentView(R.layout.upload_photo_response);
    LayoutParams params = getWindow().getAttributes();
    params.width = LayoutParams.FILL_PARENT;
    params.height = LayoutParams.FILL_PARENT;
    getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);

    mOutput = (TextView) findViewById(R.id.apiOutput);
    mUsefulTip = (TextView) findViewById(R.id.usefulTip);
    mViewPhotoButton = (Button) findViewById(R.id.view_photo_button);
    mTagPhotoButton = (Button) findViewById(R.id.tag_photo_button);
    mUploadedPhoto = (ImageView) findViewById(R.id.uploadedPhoto);

    JSONObject json;
    try {
        json = Util.parseJson(response);
        final String photo_id = json.getString("id");
        this.photo_id = photo_id;

        mOutput.setText(json.toString(2));
        mUsefulTip.setText(activity.getString(R.string.photo_tip));
        Linkify.addLinks(mUsefulTip, Linkify.WEB_URLS);

        mViewPhotoButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (hidePhoto) {
                    mViewPhotoButton.setText(R.string.view_photo);
                    hidePhoto = false;
                    mUploadedPhoto.setImageBitmap(null);
                } else {
                    hidePhoto = true;
                    mViewPhotoButton.setText(R.string.hide_photo);
                    /*
                     * Source tag: view_photo_tag
                     */
                    Bundle params = new Bundle();
                    params.putString("fields", "picture");
                    dialog = ProgressDialog.show(activity, "",
                            activity.getString(R.string.please_wait), true, true);
                    dialog.show();
                    Utility.mAsyncRunner.request(photo_id, params,
                            new ViewPhotoRequestListener());
                }
            }
        });
        mTagPhotoButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /*
                 * Source tag: tag_photo_tag
                 */
                setTag();
            }
        });
    } catch (JSONException e) {
        setText(activity.getString(R.string.exception) + e.getMessage());
    } catch (FacebookError e) {
        setText(activity.getString(R.string.facebook_error) + e.getMessage());
    }
}

public void setTag() {
    String relativePath = photo_id + "/tags/" + Utility.userUID;
    Bundle params = new Bundle();
    params.putString("x", "5");
    params.putString("y", "5");
    Utility.mAsyncRunner.request(relativePath, params, "POST", new TagPhotoRequestListener(),
            null);
}

public class ViewPhotoRequestListener extends BaseRequestListener {

    @Override
    public void onComplete(final String response, final Object state) {
        try {
            JSONObject json = Util.parseJson(response);
            final String pictureURL = json.getString("picture");
            if (TextUtils.isEmpty(pictureURL)) {
                setText("Error getting \'picture\' field of the photo");
            } else {
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        new FetchImage().execute(pictureURL);
                    }
                });
            }
        } catch (JSONException e) {
            dialog.dismiss();
            setText(activity.getString(R.string.exception) + e.getMessage());
        } catch (FacebookError e) {
            dialog.dismiss();
            setText(activity.getString(R.string.facebook_error) + e.getMessage());
        }
    }

    public void onFacebookError(FacebookError error) {
        dialog.dismiss();
        setText(activity.getString(R.string.facebook_error) + error.getMessage());
    }
}

public class TagPhotoRequestListener extends BaseRequestListener {

    @Override
    public void onComplete(final String response, final Object state) {
        if (response.equals("true")) {
            String message = "User tagged in photo at (5, 5)" + "\n";
            message += "Api Response: " + response;
            setText(message);
        } else {
            setText("User could not be tagged.");
        }
    }

    public void onFacebookError(FacebookError error) {
        setText(activity.getString(R.string.facebook_error) + error.getMessage());
    }
}

public void setText(final String txt) {
    mHandler.post(new Runnable() {
        @Override
        public void run() {
            mOutput.setText(txt);
        }
    });
}

private class FetchImage extends AsyncTask<String, Void, Bitmap> {
    @Override
    protected Bitmap doInBackground(String... urls) {
        return Utility.getBitmap(urls[0]);
    }

    @Override
    protected void onPostExecute(Bitmap result) {
        dialog.dismiss();
        mUploadedPhoto.setImageBitmap(result);
    }
}}
Ronak Mehta
  • 5,971
  • 5
  • 42
  • 69