Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
推特上的Android共享_Android_Twitter - Fatal编程技术网

推特上的Android共享

推特上的Android共享,android,twitter,Android,Twitter,如何在twitter上共享字符串消息?我想让用户在多条字符串消息之间进行选择,然后单击其中一条通过Twitter共享。实现这一点的方法有很多。其中一种可能只是打开并以单一目的共享推文,例如 Intent tweet = new Intent(Intent.ACTION_VIEW); tweet.setData(Uri.parse("http://twitter.com/?status=" + Uri.encode(message)));//where message is your string

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

实现这一点的方法有很多。其中一种可能只是打开并以单一目的共享推文,例如

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

或者


要通过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"));
你可以使用图书馆。下载它并添加到JavaBulidPath。 代码示例:

  • 添加新推文:

    Twitter=TwitterFactory.getSingleton()

    Status Status=twitter.updateStatus(最新状态)

  • 使用OAuth登录(Java代码,编辑):

    }

    private static void storeAccessToken(int-useId,AccessToken-AccessToken){
    //存储accessToken.getToken()
    //存储accessToken.getTokenCret()
    }

    • 获取推文:

      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());
    }
    
    Twitter=TwitterFactory.getSingleton();
    列表状态=twitter.getHomeTimeline();
    System.out.println(“显示主时间线”);
    用于(状态:状态){
    System.out.println(status.getUser().getName()+“:”+
    status.getText());
    }
    


我希望我能帮助你

如果你需要一个成功的回复和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();

        }
    });
statuseService statuseService=TwitterCore.getInstance().getApiClient().getStatuseService();
Call tweetCall=StatuseService.update(text,null,false,null,null,null,false,false,null);
tweetCall.enqueue(新的回调函数(){
@凌驾
公开作废成功(结果){
Log.d(“result”,result.data.idStr);
}
@凌驾
公共无效失败(TwitterException异常){
hideProgressDialogResult();
异常。printStackTrace();
}
});

您也可以上传带有说明的图像,但在此之前,您必须使用twitter媒体服务创建图像的媒体id,并将此媒体id传递给状态服务。

可能重复我使用SDK完成的检查,但当它打开浏览器时,它不会返回到你的应用程序中。用户除了发送图像和文本外,是否还有其他方法可以使用此方法?是否有其他方法可以知道共享是否成功?
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());
}
   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();

        }
    });