我该如何在Twitter上分享一个字符串信息?我想让用户从多个字符串信息中进行选择,并单击其中一个来通过Twitter共享它。
我该如何在Twitter上分享一个字符串信息?我想让用户从多个字符串信息中进行选择,并单击其中一个来通过Twitter共享它。
有许多方法可以实现这个功能。其中一种方法是打开http://twitter.com,并在一个意图中分享推文,例如...
Intent tweet = new Intent(Intent.ACTION_VIEW);
tweet.setData(Uri.parse("http://twitter.com/?status=" + Uri.encode(message)));//where message is your string message
startActivity(tweet);
或者,
Intent tweet = new Intent(Intent.ACTION_SEND);
tweet.putExtra(Intent.EXTRA_TEXT, "Sample test for Twitter.");
startActivity(Intent.createChooser(share, "Share this via"));
或者,
String tweetUrl = "https://twitter.com/intent/tweet?text=WRITE YOUR MESSAGE HERE &url="
+ "https://www.google.com";
Uri uri = Uri.parse(tweetUrl);
startActivity(new Intent(Intent.ACTION_VIEW, uri));
public class Util
{
public static Intent getTwitterIntent(Context ctx, String shareText)
{
Intent shareIntent;
if(doesPackageExist(ctx, "com.twitter.android"))
{
shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setClassName("com.twitter.android",
"com.twitter.android.PostActivity");
shareIntent.setType("text/*");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareText);
return shareIntent;
}
else
{
String tweetUrl = "https://twitter.com/intent/tweet?text=" + shareText;
Uri uri = Uri.parse(tweetUrl);
shareIntent = new Intent(Intent.ACTION_VIEW, uri);
return shareIntent;
}
}
}
startActivity(Util.getTwitterIntent(context, "Text that will be tweeted"));
StatusesService statusesService = TwitterCore.getInstance().getApiClient().getStatusesService();
Call<Tweet> tweetCall = statusesService.update(text, null, false, null, null, null, false, false, null);
tweetCall.enqueue(new Callback<Tweet>() {
@Override
public void success(Result<Tweet> result) {
Log.d("result", result.data.idStr);
}
@Override
public void failure(TwitterException exception) {
hideProgressDialogResult();
exception.printStackTrace();
}
});
您也可以上传带有描述的图片,但在此之前,您需要使用Twitter媒体服务创建图像的媒体ID,并将此媒体ID传递给状态服务。
添加新推文:
Twitter twitter = TwitterFactory.getSingleton();
Status status = twitter.updateStatus(latestStatus);
使用OAuth登录(Java代码,编辑):
Twitter twitter = TwitterFactory.getSingleton();
twitter.setOAuthConsumer("[consumer key]", "[consumer secret]");
RequestToken requestToken = twitter.getOAuthRequestToken();
AccessToken accessToken = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (null == accessToken) {
System.out.println("打开以下网址并授权访问您的账户:");
System.out.println(requestToken.getAuthorizationURL());
System.out.print("输入PIN码(如果有)或直接按回车键。[PIN]:");
String pin = br.readLine();
try{
if(pin.length() > 0){
accessToken = twitter.getOAuthAccessToken(requestToken, pin);
}else{
accessToken = twitter.getOAuthAccessToken();
}
} catch (TwitterException te) {
if(401 == te.getStatusCode()){
System.out.println("无法获取访问令牌。");
}else{
te.printStackTrace();
}
}
}
//将accessToken持久化以备后用。
storeAccessToken(twitter.verifyCredentials().getId() , accessToken);
Status status = twitter.updateStatus(args[0]);
System.out.println("成功更新状态为 [" + status.getText() + "]。");
System.exit(0);
}
private static void storeAccessToken(int useId, AccessToken accessToken){
//存储accessToken.getToken()
//存储accessToken.getTokenSecret()
}
获取推文:
Twitter twitter = TwitterFactory.getSingleton();
Query query = new Query("source:twitter4j yusukey");
QueryResult result = twitter.search(query);
for (Status status : result.getStatuses()) {
System.out.println("@" + status.getUser().getScreenName() + ":" + status.getText());
}
获取时间线:
Twitter twitter = TwitterFactory.getSingleton();
List<Status> statuses = twitter.getHomeTimeline();
System.out.println("显示主页时间线。");
for (Status status : statuses) {
System.out.println(status.getUser().getName() + ":" +
status.getText());
}
我希望我有所帮助
try {
Intent tweetIntent = new Intent(Intent.ACTION_SEND);
tweetIntent.setPackage("com.twitter.android");
tweetIntent.setType("text/plain");
tweetIntent.putExtra(Intent.EXTRA_TEXT, "your message");
startActivity(tweetIntent);
} catch (ActivityNotFoundException e) {
Intent tweetIntent = new Intent(Intent.ACTION_VIEW);
tweetIntent.setData(Uri.parse("https://twitter.com/intent/tweet?text=" + "your message"));
startActivity(tweetIntent);
}