14

Twitter で文字列メッセージを共有するにはどうすればよいですか? ユーザーが複数の文字列メッセージから選択し、1 つをクリックして Twitter で共有できるようにしたいと考えています。

4

4 に答える 4

20

これを実装する方法はいくつかあります。1つは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));
于 2013-02-02T18:09:51.893 に答える
6

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 ページを使用することです。ツイートされるテキストが関数に渡されます。

このシナリオでは、ユーザーが選択したメッセージから選択したときに、選択したメッセージを関数に渡します。次に、次のように startActivity() 関数にプラグインできるインテントを返します。

startActivity(Util.getTwitterIntent(context, "Text that will be tweeted"));
于 2013-02-02T18:13:35.690 に答える
1

ライブラリTwitter4Jを使用できます。それをダウンロードして、Java ビルド パスに追加します。コードサンプル:

  • 新しいツイートの追加:

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

    }

    private static void storeAccessToken(int useId, AccessToken accessToken){ //store accessToken.getToken() //store 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("Showing home timeline.");
       for (Status status : statuses) {
          System.out.println(status.getUser().getName() + ":" +
                           status.getText());
    }
    

私が助けたことを願っています

于 2013-02-02T18:29:10.393 に答える