【发布时间】:2011-04-28 05:44:31
【问题描述】:
我尝试在推特上上传照片,但状态是发送而不是照片。任何人都可以提供一些帮助吗?
【问题讨论】:
-
欢迎来到 SO。到目前为止,您尝试了什么?你在使用 API 吗?
标签: android
我尝试在推特上上传照片,但状态是发送而不是照片。任何人都可以提供一些帮助吗?
【问题讨论】:
标签: android
您需要将图片上传到 twitpic 等图片服务,它会返回一个 URL,然后您将其放入您的状态更新中。
有像 Twitter4J 这样的库可以帮助您完成这项任务。
看看Zwitscher如何使用它:code to upload
【讨论】:
试试这个代码..
final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);
String token = prefs.getString(OAuth.OAUTH_TOKEN, "") != null ? prefs
.getString(OAuth.OAUTH_TOKEN, "") : "";
String secret = prefs.getString(OAuth.OAUTH_TOKEN_SECRET, "") != null ? prefs
.getString(OAuth.OAUTH_TOKEN_SECRET, "") : "";
if (token != null && !token.trim().equals("") && secret != null
&& !secret.trim().equals("")) {
AccessToken a = new AccessToken(token, secret);
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(Constants.CONSUMER_KEY,
Constants.CONSUMER_SECRET);
twitter.setOAuthAccessToken(a);
Configuration conf = new ConfigurationBuilder()
.setOAuthConsumerKey(Constants.CONSUMER_KEY)
.setOAuthConsumerSecret(Constants.CONSUMER_SECRET)
.setOAuthAccessToken(a.getToken())
.setOAuthAccessTokenSecret(a.getTokenSecret())
.build();
OAuthAuthorization auth = new OAuthAuthorization (conf, conf.getOAuthConsumerKey (), conf.getOAuthConsumerSecret (), new AccessToken (conf.getOAuthAccessToken (), AuthAccessTokenSecret ()));
ImageUpload upload = ImageUpload.getTwitpicUploader ("fa6707f43c41faab003dc134348acabd",auth);
url = upload.upload(new File(path));
twitter.updateStatus(url);
///Add twitter4j-core-2.1.11jar to libs
【讨论】:
Twitter4j 3.0.3 更新了其ImageUpload 类。 ImageUpload.getTwitpicUploader 方法现已弃用;它只有ImageUpload.upload 方法。此外,您必须在项目构建路径中添加这两个 .jar:
您可以通过以下方式获取更多信息:http://twitter4j.org/oldjavadocs/3.0.3/index.html
【讨论】:
首先你需要在 twitter 上创建一个应用
这是在 Twitter 上发布消息的代码
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.setOAuthConsumerKey(context.getResources().getString(R.string.twitter_consumer_key));
configurationBuilder.setOAuthConsumerSecret(context.getResources().getString(R.string.twitter_consumer_secret));
configurationBuilder.setOAuthAccessToken(LoginActivity.getAccessToken((context)));
configurationBuilder.setOAuthAccessTokenSecret(LoginActivity.getAccessTokenSecret(context));
Configuration configuration = configurationBuilder.build();
final Twitter twitter = new TwitterFactory(configuration).getInstance();
new Thread(new Runnable() {
private double x;
@Override
public void run() {
boolean success = true;
try {
x = Math.random();
twitter.updateStatus(message +" "+x);
} catch (TwitterException e) {
e.printStackTrace();
success = false;
}
final boolean finalSuccess = success;
callingActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
postResponse.onFinsihed(finalSuccess);
}
});
}
}).start();
查看tutorial了解更多详情。
【讨论】: