2011-01-25 23 views
0

我想将图像发布到Facebook中,其中我有我的JSON字符串,我已将静态图像包含在字符串中,并且其工作正常,如果我想添加动态图像我能做些什么?在Android中以JSON格式发布图像到Facebook

这是我的代码:

parameters.putString( “附件”, “{\” 名称\ “:\”” + b.getString( “标题”) + “\”, \“\”,\“”\“” + b.getString(“cmpWeb”) +“\”,\“description \”:\“” + desc +“\”,\“media \ {\ “类型\”:\ “图像\”,\ “SRC \”:\ “HTTP://184.106.227.45/quaddeals/img/small_thumb/Deal/692.e6b86fa39f3ba25e29f0351140b57a94.jpg \”,\ “HREF \” :\ “HTTP://alumni.brown.edu/ \”}]}“);

此值是http://184.106.227.45/quaddeals/img/small_thumb/Deal/692.e6b86fa39f3ba25e29f0351140b57a94.jpg \”静态值,我想包括动态内容,我通过使用意图从以前的页面了,说(b.getString(‘URL’)).. 此外,我想显示的网站链接如果用户点击链接它应该显示Web视图IST亦静“http://alumni.brown.edu”我想包括动态数据..

请帮助我在此先感谢...

回答

3

嘿,我用这个代码上传图片使用Json 我会告诉你那个代码,如果你得到了帮助表格

UploadPhotoResultDialog.java

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() { 
       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() { 
       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 { 

     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() { 
         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 { 

     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() { 
      public void run() { 
       mOutput.setText(txt); 
      } 
     }); 
    } 

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

     protected void onPostExecute(Bitmap result) { 
      dialog.dismiss(); 
      mUploadedPhoto.setImageBitmap(result); 
     } 
    } 
} 

而且 的Xml FIEL为:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/black"> 
    <TextView 
     android:id="@+id/apiOutputLabel" 
     android:text="@string/api_response" 
     android:textColor="@color/white" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="3dp" 
     android:paddingLeft="3dp" /> 
    <ScrollView 
     android:id="@+id/ScrollView01" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:paddingBottom="3dp"> 
     <TextView android:id="@+id/apiOutput" 
      android:textColor="@color/white" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:paddingTop="3dp" 
      android:paddingLeft="3dp" 
      android:background="@color/grey" /> 
    </ScrollView> 
    <View 
     android:paddingTop="3dp" 
     android:layout_width="fill_parent" 
     android:layout_height="2dip" 
     android:background="@color/grey" /> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <Button 
      android:id="@+id/view_photo_button" 
      android:text="@string/view_photo" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="10dp" /> 
     <Button 
      android:id="@+id/tag_photo_button" 
      android:text="@string/tag_photo" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="10dp" /> 
    </LinearLayout> 
    <ImageView 
      android:id="@+id/uploadedPhoto" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingTop="3dp" 
      android:paddingBottom="3dp" /> 
    <TextView 
     android:id="@+id/tip_label" 
     android:text="@string/tip_label" 
     android:textColor="@color/white" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="3dp" 
     android:paddingLeft="3dp" /> 

    <TextView 
     android:id="@+id/usefulTip" 
     android:textColor="@color/white" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="5dp" 
     android:paddingLeft="3dp" /> 
</LinearLayout>