【问题标题】:Upload an image from Android to facebook without Facebook sdk无需 Facebook sdk 将图像从 Android 上传到 facebook
【发布时间】:2012-02-21 20:33:45
【问题描述】:

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

【问题讨论】:

  • 你有没有尝试过?你有什么工作吗?
  • 到目前为止,我尝试了 sdk,但没有任何效果

标签: android facebook bitmap


【解决方案1】:

当然,假设用户已经安装了 facebook 应用,您可以使用您的图片触发 ACTION_SEND 意图。然后用户选择facebook并以这种方式上传。有点丑陋的imo ...为什么要避免使用sdk?当您想到在您的应用程序中做其他事情时,集成并赋予您更多的灵活性并不难。

【讨论】:

    【解决方案2】:

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

    如果您决定使用 SDK 等,请查看此帖子:Android - Upload photo to Facebook with Facebook Android SDK

    【讨论】:

    • 我之前试过这个帖子,下载了所有东西等等,但是遇到了一些问题。 Java不识别某些库等,所以我希望有一个非常简单的方法。它。希望可以分发:)
    • 您应该发布代码... IT 帮助人们了解正在发生的事情,以便他们提供帮助。
    【解决方案3】:

    老兄试试这个

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-11
      • 2013-05-23
      • 2012-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多