Android在Twitter上分享

vsaztqbk  于 2023-02-10  发布在  Android
关注(0)|答案(5)|浏览(639)

如何在Twitter上分享一条字符串消息?我想让用户在多条字符串消息中进行选择,然后单击其中一条通过Twitter分享。

ecbunoof

ecbunoof1#

有很多方法可以实现这一点,其中一种可能是简单地打开http://twitter.com,并在一个单一的意图,如分享tweet。

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));
vmjh9lq9

vmjh9lq92#

为了通过twitter共享,我在Util类中使用了我自己的自定义静态函数,如下所示:

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;
       }
   }
}

这个函数的优点是如果twitter应用程序已经安装了,它就使用它,否则,它就使用基于web的twitter页面,将要发布的文本被传递到函数中。
在您的场景中,当用户从一组消息中进行选择时,将所选消息传递给函数,然后它会给予一个Intent,您可以将其插入startActivity()函数,如下所示:

startActivity(Util.getTwitterIntent(context, "Text that will be tweeted"));
tf7tbtn2

tf7tbtn23#

可以使用Twitter4J库,下载后添加到java bulid路径,代码示例:

  • 添加新推文:

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("Open the following URL and grant access to your account:");
  System.out.println(requestToken.getAuthorizationURL());
  System.out.print("Enter the PIN(if aviailable) or just hit enter.[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("Unable to get the access token.");
    }else{
      te.printStackTrace();
    }
  }
}
//persist to the accessToken for future reference.
storeAccessToken(twitter.verifyCredentials().getId() , accessToken);
Status status = twitter.updateStatus(args[0]);
System.out.println("Successfully updated the status to [" + status.getText() + "].");
System.exit(0);

}
x一名男子2名男子1名x一名男子3名男子1名x一名男子4名男子1名x一名男子5名男子1名

  • 获取推文:
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("Showing home timeline.");
   for (Status status : statuses) {
      System.out.println(status.getUser().getName() + ":" +
                       status.getText());
}

我希望我能帮上忙

nlejzf6q

nlejzf6q4#

如果你需要一个成功的响应和tweet id你可以使用twitter SDK状态服务,以便在Twitter上发布tweet。你可以使用这个发布文本。

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传递给状态服务。

xhv8bpkk

xhv8bpkk5#

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);
  }

相关问题