I want to send messages for twitter from android external application. I am looking for examples and I found this one, but it gives me an error:
public class OAuthAccessTokenActivity extends Activity {
final String TAG = getClass().getName();
private OAuthProvider httpOauthprovider = new DefaultOAuthProvider(Constants.REQUEST_URL, Constants.ACCESS_URL, Constants.AUTHORIZE_URL);
private CommonsHttpOAuthConsumer httpOauthConsumer = new CommonsHttpOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "Starting task to retrieve request token.");
}
@Override
protected void onResume() {
super.onResume();
WebView webview = new WebView(this);
webview.getSettings().setJavaScriptEnabled(true);
webview.setVisibility(View.VISIBLE);
setContentView(webview);
Log.i(TAG, "Retrieving request token from Google servers");
try {
Log.i(TAG, "Last Log in Code.");
String authUrl = httpOauthprovider.retrieveRequestToken(httpOauthConsumer, Constants.OAUTH_CALLBACK_URL);
Log.i(TAG, "This Log isn't shown");
// WebViewClient must be set BEFORE calling loadUrl!
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url,Bitmap bitmap) {
System.out.println("onPageStarted : " + url);
}
@Override
public void onPageFinished(WebView view, String url) {
Uri uri = Uri.parse(url);
if (uri != null && uri.toString().startsWith(Constants.OAUTH_CALLBACK_URL)) {
view.setVisibility(View.INVISIBLE);
String verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER);
try {
// this will populate token and token_secret in consumer
httpOauthprovider.retrieveAccessToken(httpOauthConsumer, verifier);
String userKey = httpOauthConsumer.getToken();
String userSecret = httpOauthConsumer.getTokenSecret();
// Save user_key and user_secret in user preferences and return
SharedPreferences settings = getBaseContext().getSharedPreferences("your_app_prefs", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("user_key", userKey);
editor.putString("user_secret", userSecret);
editor.commit();
startActivity(new Intent(OAuthAccessTokenActivity.this, TwitterConnectActivity.class));
finish();
} catch (Exception e) {
}
}
}
});
webview.loadUrl(authUrl);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
And this is the LogCat:
04-01 03:51:02.505: W/System.err(1295): oauth.signpost.exception.OAuthCommunicationException: Communication with the service provider failed: null
04-01 03:51:02.515: W/System.err(1295): at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:218)
04-01 03:51:02.515: W/System.err(1295): at oauth.signpost.AbstractOAuthProvider.retrieveRequestToken(AbstractOAuthProvider.java:74)
04-01 03:51:02.515: W/System.err(1295): at com.limecreativelabs.twitterconnect.OAuthAccessTokenActivity.onResume(OAuthAccessTokenActivity.java:43)
04-01 03:51:02.515: W/System.err(1295): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1192)
04-01 03:51:02.515: W/System.err(1295): at android.app.Activity.performResume(Activity.java:5211)
04-01 03:51:02.535: W/System.err(1295): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2780)
04-01 03:51:02.535: W/System.err(1295): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2819)
04-01 03:51:02.535: W/System.err(1295): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2266)
04-01 03:51:02.535: W/System.err(1295): at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-01 03:51:02.535: W/System.err(1295): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
04-01 03:51:02.545: W/System.err(1295): at android.os.Handler.dispatchMessage(Handler.java:99)
04-01 03:51:02.545: W/System.err(1295): at android.os.Looper.loop(Looper.java:137)
04-01 03:51:02.555: W/System.err(1295): at android.app.ActivityThread.main(ActivityThread.java:5103)
04-01 03:51:02.555: W/System.err(1295): at java.lang.reflect.Method.invokeNative(Native Method)
04-01 03:51:02.555: W/System.err(1295): at java.lang.reflect.Method.invoke(Method.java:525)
04-01 03:51:02.555: W/System.err(1295): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
04-01 03:51:02.588: W/System.err(1295): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-01 03:51:02.588: W/System.err(1295): at dalvik.system.NativeStart.main(Native Method)
04-01 03:51:02.607: W/System.err(1295): Caused by: android.os.NetworkOnMainThreadException
04-01 03:51:02.615: W/System.err(1295): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1133)
04-01 03:51:02.615: W/System.err(1295): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
04-01 03:51:02.615: W/System.err(1295): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
04-01 03:51:02.635: W/System.err(1295): at java.net.InetAddress.getAllByName(InetAddress.java:214)
04-01 03:51:02.645: W/System.err(1295): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
04-01 03:51:02.645: W/System.err(1295): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
04-01 03:51:02.665: W/System.err(1295): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
04-01 03:51:02.675: W/System.err(1295): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
04-01 03:51:02.685: W/System.err(1295): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
04-01 03:51:02.685: W/System.err(1295): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
04-01 03:51:02.705: W/System.err(1295): at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:461)
04-01 03:51:02.715: W/System.err(1295): at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433)
04-01 03:51:02.725: W/System.err(1295): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
04-01 03:51:02.725: W/System.err(1295): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
04-01 03:51:02.745: W/System.err(1295): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81)
04-01 03:51:02.777: W/System.err(1295): at libcore.net.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:165)
04-01 03:51:02.785: W/System.err(1295): at oauth.signpost.basic.DefaultOAuthProvider.sendRequest(DefaultOAuthProvider.java:48)
04-01 03:51:02.785: W/System.err(1295): at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:181)
04-01 03:51:02.797: W/System.err(1295): ... 17 more
04-01 03:51:03.745: E/cutils-trace(1295): Error opening trace file: No such file or directory (2)
04-01 03:51:05.335: D/TilesManager(1295): Starting TG #0, 0x2a23b2e0
Apparently the example was finished and ready to go, do you know what am I doing wrong? Is there anything else I need to run it? Thanks in advance.