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上发布图像,但不能发布文本。它早些时候就开始工作了,但我不知道它在哪里搞砸了。你能看一下吗。?