Java 常见的Twitt_共享类给出错误

Java 常见的Twitt_共享类给出错误,java,android,twitter,twitter4j,Java,Android,Twitter,Twitter4j,下面是课堂: package com.twitter.android; import java.io.File; import twitter4j.StatusUpdate; import twitter4j.Twitter; import twitter4j.TwitterException; import android.app.Activity; import android.app.ProgressDialog; import android.os.AsyncTask; import

下面是课堂:

package com.twitter.android;

import java.io.File;

import twitter4j.StatusUpdate;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast;
import com.twitter.android.Twitter_Handler.TwDialogListener;

public class Twitt_Sharing {

    private final Twitter_Handler mTwitter;
    private final Activity activity;
    private String twitt_msg;
    private File image_path;

    public Twitt_Sharing( Activity act, String consumer_key, String consumer_secret ) {
        this.activity = act;
        mTwitter = new Twitter_Handler(activity, consumer_key, consumer_secret);
    }

    public void shareToTwitter(String msg, File Image_url) {
        this.twitt_msg = msg;
        this.image_path = Image_url;
        mTwitter.setListener(mTwLoginDialogListener);

        if (mTwitter.hasAccessToken()) {
            // this will post data in asyn background thread
            showTwittDialog();
        } else {
            mTwitter.authorize();
        }
    }

    private void showTwittDialog() {

        new PostTwittTask().execute(twitt_msg);

    }

    private final TwDialogListener mTwLoginDialogListener = new TwDialogListener() {

        @Override
        public void onError(String value) {
            activity.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    showToast("Login Failed");
                    mTwitter.resetAccessToken();
                }
            });
        }

        @Override
        public void onComplete(String value) {
            showTwittDialog();
        }
    };

    void showToast(final String msg) {
        activity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(activity, msg, Toast.LENGTH_SHORT).show();
            }
        });

    }

    class PostTwittTask extends AsyncTask<String, Void, String> {
        ProgressDialog pDialog;

        @Override
        protected void onPreExecute() {
            pDialog = new ProgressDialog(activity);
            pDialog.setMessage("Posting Twitt...");
            pDialog.setCancelable(false);
            pDialog.show();
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... twitt) {
            try {
                // mTwitter.updateStatus(twitt[0]);
                // File imgFile = new File("/sdcard/bluetooth/Baby.jpg");

                return Share_Pic_Text_Titter(image_path, twitt_msg, mTwitter.twitterObj);

            } catch (Exception e) {
                if (e.getMessage().toString().contains("duplicate")) {
                    return "Posting Failed because of Duplicate message...";
                }
                e.printStackTrace();
                return "Posting Failed!!!";
            }

        }

        @Override
        protected void onPostExecute(final String result) {

            super.onPostExecute(result);
            pDialog.dismiss();
            if (null != result && result.equals("success")) {
                activity.runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        showToast(result);
                    }
                });

            }
        }
    }

    public String Share_Pic_Text_Titter(File image_path, String message, Twitter twitter)
            throws Exception {
        String Status = "";
        try {

            StatusUpdate st = new StatusUpdate(message);
 --------------------------**Error in the line below**--------------------------------
            st.setMedia(image_path);
            twitter.updateStatus(st);
            activity.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub

                    Toast.makeText(activity, "Successfully update on Twitter...!",
                            Toast.LENGTH_SHORT).show();
                }
            });
            Status = "success";
            /*
             * Toast.makeText(activity, "Successfully update on Twitter...!",
             * Toast.LENGTH_SHORT).show();
             */
        } catch (TwitterException e) {
            Status = "fail";
            Log.v("log_tag", "Pic Upload error" + e);
            activity.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    Toast.makeText(activity, "Ooopss..!!! Failed to update on Twitter.",
                            Toast.LENGTH_SHORT).show();
                }
            });

        }
        return Status;
    }

    public void Authorize_UserDetail() {

    }
}
package com.twitter.android;
导入java.io.File;
导入twitter4j.StatusUpdate;
导入twitter4j.Twitter;
导入twitter4j.TwitterException;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.os.AsyncTask;
导入android.util.Log;
导入android.widget.Toast;
导入com.twitter.android.twitter_Handler.TwDialogListener;
公共类Twitt_共享{
私人最终Twitter_Handler mTwitter;
私人最终活动;
私有字符串twitt_msg;
私有文件映像路径;
公共Twitt_共享(活动法案、字符串使用者密钥、字符串使用者密钥){
这个活动=行动;
mTwitter=新的Twitter处理程序(活动、消费者密钥、消费者秘密);
}
public void ShareToWitter(字符串消息、文件图像\u url){
this.twitt_msg=msg;
this.image\u path=image\u url;
mTwitter.setListener(mTwLoginDialogListener);
if(mTwitter.hasAccessToken()){
//这将在asyn后台线程中发布数据
showTwittDialog();
}否则{
mTwitter.authorize();
}
}
私有void showTwittDialog(){
新建PostTwittTask().execute(twitt_msg);
}
私有最终TwDialogListener mTwLoginDialogListener=新TwDialogListener(){
@凌驾
公共void onError(字符串值){
activity.runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
//TODO自动生成的方法存根
showToast(“登录失败”);
mTwitter.resetAccessToken();
}
});
}
@凌驾
公共void onComplete(字符串值){
showTwittDialog();
}
};
void showtoos(最终字符串msg){
activity.runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
Toast.makeText(活动、消息、Toast.LENGTH_SHORT).show();
}
});
}
类PostTwittTask扩展了AsyncTask{
ProgressDialog;
@凌驾
受保护的void onPreExecute(){
pDialog=新建进度对话框(活动);
setMessage(“发布Twitt…”);
pDialog.setCancelable(假);
pDialog.show();
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(字符串…twitt){
试一试{
//mTwitter.updateStatus(twitt[0]);
//File imgFile=新文件(“/sdcard/bluetooth/Baby.jpg”);
返回共享图片文本标题(图片路径,twitt消息,mTwitter.twitterObj);
}捕获(例外e){
如果(例如getMessage().toString()包含(“重复”)){
return“由于重复消息,发布失败…”;
}
e、 printStackTrace();
返回“发布失败!!!”;
}
}
@凌驾
受保护的void onPostExecute(最终字符串结果){
super.onPostExecute(结果);
pDialog.disclose();
if(null!=result&&result.equals(“成功”)){
activity.runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
//TODO自动生成的方法存根
展示(结果);
}
});
}
}
}
公共字符串共享\图片\文本\标题(文件图像\路径、字符串消息、Twitter)
抛出异常{
字符串状态=”;
试一试{
StatusUpdate st=新状态更新(消息);
--------------------------**下一行有错误**--------------------------------
st.setMedia(图像路径);
twitter.updateStatus(st);
activity.runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
//TODO自动生成的方法存根
Toast.makeText(活动,“在Twitter上成功更新…!”,
吐司。长度(短)。show();
}
});
Status=“success”;
/*
*Toast.makeText(活动,“在Twitter上成功更新…!”,
*吐司。长度(短)。show();
*/
}捕获(twitter异常){
Status=“fail”;
Log.v(“日志标签”,“Pic上传错误”+e);
activity.runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
//TODO自动生成的方法存根
Toast.makeText(活动“oopss..!!!未能在Twitter上更新。“,
吐司。长度(短)。show();
}
});
}
返回状态;
}
public void Authorize_UserDetail(){
}
}
现在在st.setMedia(图像路径)行中;它显示了一个错误,该错误表明StatusUpdate类型的方法setMedia(File)未定义。是否有人遇到过这种情况?

,Twitter 4j v2.2.5+中提供了方法setMedia(File File),因此在下面的版本中找不到该方法


更新到较新版本可以解决问题。

您使用的Twitter api的版本是什么?twitter4j-core-2.1.11.jar和twitter4j-media-support-4.0.2.jar该方法仅在twitter4j v2.2.5+中可用。Discalimer:我从来没有使用过我更新的Twitter apiYa,它很好。你能把它作为一个答案吗?你能帮我一个代码,我可以在fb上发布图像,但不能发布文本。它早些时候就开始工作了,但我不知道它在哪里搞砸了。你能看一下吗。?