I finally get it to work. I think earlier it did not work because I did not retrieve access token into the WebView.
In my WebView under onCreate i did this
myWebView = (WebView)findViewById(R.id.myWebView);
myWebView.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String url)
{ if (url != null && url.startsWith(TWITTER_CALLBACK_URL))
{ System.out.println("TWEET TWEET TWEET");
retrieveAccessToken(url); //added this
webView.setVisibility(View.GONE); //added this
return true;
}
else
return false;
}
});
and in my retrieveAccessToken(url) i have this.
private void retrieveAccessToken(final String url)
{
Uri uri = Uri.parse(url);
String verifier = uri.getQueryParameter(URL_TWITTER_OAUTH_VERIFIER);
try {
// Get the access token
AccessToken accessToken = twitter.getOAuthAccessToken(requestToken, verifier);
// Shared Preferences
Editor e = mSharedPreferences.edit();
// After getting access token, access token secret
// store them in application preferences
e.putString(PREF_KEY_OAUTH_TOKEN, accessToken.getToken());
e.putString(PREF_KEY_OAUTH_SECRET,accessToken.getTokenSecret());
// Store login status - true
e.putBoolean(PREF_KEY_TWITTER_LOGIN, true);
e.commit(); // save changes
Log.e("Twitter OAuth Token", "> " + accessToken.getToken());
TextView twitterConnect = (TextView) findViewById(R.id.twitterConnect);
String disconnect = "Disconnect";
twitterConnect.setText(disconnect);
// Getting user details from twitter
// For now i am getting his name only
long userID = accessToken.getUserId();
User user = twitter.showUser(userID);
String username = user.getName();
txtUpdate.setVisibility(View.VISIBLE);
btnUpdateStatus.setVisibility(View.VISIBLE);
// Displaying in xml ui
//twitterUser.setText(Html.fromHtml("<b>Welcome " + username + "</b>"));
TextView twitterUser = (TextView) findViewById(R.id.twitterDesc);
twitterUser.setText(Html.fromHtml(username));
Toast.makeText(getApplicationContext(), "LOGGED IN AS " + username, Toast.LENGTH_LONG).show();
} catch (Exception e) {
// Check log for login errors
Log.e("Twitter Login Error", "> " + e.getMessage());
}
}
I got this to work exactly how I wanted it and logged in successfully. Do correct me if I'm doing anything wrong here.
Thank you @user1690588 and @Nikolay Elenkov, for your time to help me out. :)