FAQS


How can get the twitter tweets in android list view from a twitter public page.(i.e www.twitter.com/givecentral). Someone help me with the working code please. I have searched all the websites but not getting any solution.

Views: 4791  |   Date: 2013-12-23 23:34:26

Below is the source code of all my java files

package com.example.TwitterTutorial;
import android.app.ListActivity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
import android.widget.ArrayAdapter;
import com.google.gson.Gson;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;

import java.io.*;
import java.net.URLEncoder;

/**
* Demonstrates how to use a twitter application keys to access a user's timeline
*/
public class MainActivity extends ListActivity {

private ListActivity activity;
final static String ScreenName = "GiveCentral";
final static String LOG_TAG = "gc";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activity = this;

downloadTweets();
}

// download twitter timeline after first checking to see if there is a network connection
public void downloadTweets() {
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();

if (networkInfo != null && networkInfo.isConnected()) {
new DownloadTwitterTask().execute(ScreenName);
} else {
Log.v(LOG_TAG, "No network connection available.");
}
}

// Uses an AsyncTask to download a Twitter user's timeline
private class DownloadTwitterTask extends AsyncTask {
final static String CONSUMER_KEY = "IkSxb6bEB63Q2mxElXNb9A";
final static String CONSUMER_SECRET = "Rz9XSnqGiCVtov3yYofEbhNLMMBJuLVRKaBer7Izb8";
final static String TwitterTokenURL = "https://api.twitter.com/oauth2/2258696856-bNQ3v3kycKXiKfQwwoE4JKmb9OYiMLcZdSrcO9I";
//final static String TwitterStreamURL = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=Mukesh17m";
final static String TwitterStreamURL = "https://api.twitter.com/1.1/statuses/home_timeline.json?screen_name";

@Override
protected String doInBackground(String... screenNames) {
String result = null;

if (screenNames.length > 0) {
result = getTwitterStream(screenNames[0]);
}
return result;
}

// onPostExecute convert the JSON results into a Twitter object (which is an Array list of tweets
@Override
protected void onPostExecute(String result) {
Twitter twits = jsonToTwitter(result);

// lets write the results to the console as well
for (Tweet tweet : twits) {
Log.i(LOG_TAG, tweet.getText());
}

// send the tweets to the adapter for rendering
ArrayAdapter adapter = new ArrayAdapter(activity, android.R.layout.simple_list_item_1, twits);
setListAdapter(adapter);
}

// converts a string of JSON data into a Twitter object
private Twitter jsonToTwitter(String result) {
Twitter twits = null;
if (result != null && result.length() > 0) {
try {
Gson gson = new Gson();
twits = gson.fromJson(result, Twitter.class);
} catch (IllegalStateException ex) {
// just eat the exception
}
}
return twits;
}

// convert a JSON authentication object into an Authenticated object
private Authenticated jsonToAuthenticated(String rawAuthorization) {
Authenticated auth = null;
if (rawAuthorization != null && rawAuthorization.length() > 0) {
try {
Gson gson = new Gson();
auth = gson.fromJson(rawAuthorization, Authenticated.class);
} catch (IllegalStateException ex) {
// just eat the exception
}
}
return auth;
}

private String getResponseBody(HttpRequestBase request) {
StringBuilder sb = new StringBuilder();
try {

DefaultHttpClient httpClient = new DefaultHttpClient(new BasicHttpParams());
HttpResponse response = httpClient.execute(request);
int statusCode = response.getStatusLine().getStatusCode();
String reason = response.getStatusLine().getReasonPhrase();

if (statusCode == 200) {

HttpEntity entity = response.getEntity();
InputStream inputStream = entity.getContent();

BufferedReader bReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
String line = null;
while ((line = bReader.readLine()) != null) {
sb.append(line);
}
} else {
sb.append(reason);
}
} catch (UnsupportedEncodingException ex) {
} catch (ClientProtocolException ex1) {
} catch (IOException ex2) {
}
return sb.toString();
}

private String getTwitterStream(String screenName) {
String results = null;

// Step 1: Encode consumer key and secret
try {
// URL encode the consumer key and secret
String urlApiKey = URLEncoder.encode(CONSUMER_KEY, "UTF-8");
String urlApiSecret = URLEncoder.encode(CONSUMER_SECRET, "UTF-8");

// Concatenate the encoded consumer key, a colon character, and the
// encoded consumer secret
String combined = urlApiKey + ":" + urlApiSecret;

// Base64 encode the string
String Encoded = Base64.encodeToString(combined.getBytes(), Base64.NO_WRAP);

// Step 2: Obtain a bearer token
HttpPost httpPost = new HttpPost(TwitterTokenURL);
httpPost.setHeader("Authorization", "Basic " + Encoded);
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
httpPost.setEntity(new StringEntity("grant_type=client_credentials"));
String rawAuthorization = getResponseBody(httpPost);
Authenticated auth = jsonToAuthenticated(rawAuthorization);

// Applications should verify that the value associated with the
// token_type key of the returned object is bear
if (auth != null && auth.token_type.equals("bearer")) {

// Step 3: Authenticate API requests with bearer token
HttpGet httpGet = new HttpGet(TwitterStreamURL + screenName);

// construct a normal HTTPS request and include an Authorization
// header with the value of Bearer
httpGet.setHeader("Authorization", "Bearer " + auth.access_token);
httpGet.setHeader("Content-Type", "application/json");
// update the results with the body of the response
results = getResponseBody(httpGet);
}
} catch (UnsupportedEncodingException ex) {
} catch (IllegalStateException ex1) {
}
return results;
}
}
}
................................................................................................................................................................
package com.example.TwitterTutorial;

public class Authenticated {
String token_type;
String access_token;
}
................................................................................................................................................................
package com.example.TwitterTutorial;

import com.google.gson.annotations.SerializedName;

public class Tweet {

@SerializedName("created_at")
private String DateCreated;

@SerializedName("id")
private String Id;

@SerializedName("text")
private String Text;

@SerializedName("in_reply_to_status_id")
private String InReplyToStatusId;

@SerializedName("in_reply_to_user_id")
private String InReplyToUserId;

@SerializedName("in_reply_to_screen_name")
private String InReplyToScreenName;

@SerializedName("user")
private TwitterUser User;

public String getDateCreated() {
return DateCreated;
}

public String getId() {
return Id;
}

public String getInReplyToScreenName() {
return InReplyToScreenName;
}

public String getInReplyToStatusId() {
return InReplyToStatusId;
}

public String getInReplyToUserId() {
return InReplyToUserId;
}

public String getText() {
return Text;
}

public void setDateCreated(String dateCreated) {
DateCreated = dateCreated;
}

public void setId(String id) {
Id = id;
}

public void setInReplyToScreenName(String inReplyToScreenName) {
InReplyToScreenName = inReplyToScreenName;
}

public void setInReplyToStatusId(String inReplyToStatusId) {
InReplyToStatusId = inReplyToStatusId;
}

public void setInReplyToUserId(String inReplyToUserId) {
InReplyToUserId = inReplyToUserId;
}

public void setText(String text) {
Text = text;
}

public void setUser(TwitterUser user) {
User = user;
}

public TwitterUser getUser() {
return User;
}

@Override
public String toString(){
return getText();
}
}
................................................................................................................................................................
package com.example.TwitterTutorial;

import java.util.ArrayList;

// a collection of tweets
public class Twitter extends ArrayList {
private static final long serialVersionUID = 1L;
}
................................................................................................................................................................
package com.example.TwitterTutorial;

import com.google.gson.annotations.SerializedName;


public class TwitterUser {

@SerializedName("screen_name")
private String screenName;

@SerializedName("name")
private String name;

@SerializedName("profile_image_url")
private String profileImageUrl;

public String getProfileImageUrl() {
return profileImageUrl;
}

public String getScreenName() {
return screenName;
}

public void setProfileImageUrl(String profileImageUrl) {
this.profileImageUrl = profileImageUrl;
}

public void setScreenName(String screenName) {
this.screenName = screenName;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

 
Submit Your Answer
  |  
 
 
 

Preview :