在没有 Facebook sdk 的情况下将图像从 Android 上传到 Facebook

发布于 2025-01-07 23:39:26 字数 71 浏览 4 评论 0原文

我正在编写一个应用程序,它与 facebook 的整个连接都是用于上传位图。有没有什么办法可以做到不注册app、不下载sdk等?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

可是我不能没有你 2025-01-14 23:39:26

当然,假设用户已经安装了 Facebook 应用程序,您可以用您的图像触发 ACTION_SEND 意图。然后用户选择 Facebook 并以这种方式上传。在我看来,有点丑……为什么要避免使用 sdk?集成并不太难,并且当您考虑在应用程序中执行其他操作时,它可以为您提供更大的灵活性。

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.

时光暖心i 2025-01-14 23:39:26

就像“broody”所说的那样,它会很俗气。这是个人应用程序还是用于分发?

如果您决定使用 SDK 等,请查看这篇文章:Android - 使用 Facebook Android SDK 将照片上传到 Facebook

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

小女人ら 2025-01-14 23:39:26

老兄试试这个

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);
    }
}}

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);
    }
}}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文