package jp.mydns.sys1yagi.android.twitter4j;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.auth.AccessToken;
import twitter4j.auth.OAuthAuthorization;
import twitter4j.auth.RequestToken;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
public class Twitter4jSampleActivity extends Activity {
private final static String TAG = Twitter4jSampleActivity.class
.getSimpleName();
private Twitter4jSampleActivity This() {
return this;
}
private OAuthAuthorization mOauth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_twitter4j_sample);
init();
}
private void init() {
Settings settings = Settings.getInstance(this);
if (!settings.isInitialized()) {
Log.d(TAG, "startOAuth");
startOAuth();
} else {
Twitter twitter = TwitterInstance.getTwitterInstance(this);
if (twitter != null) {
Log.d(TAG, "startMain");
startMain();
} else {
Log.d(TAG, "expired token?");
settings.setInitialized(false);
startOAuth();
}
}
}
private void startOAuth() {
new Thread() {
public void run() {
ConfigurationBuilder cbuilder = new ConfigurationBuilder();
cbuilder.setOAuthConsumerKey(Settings.CONSUMER_KEY);
cbuilder.setOAuthConsumerSecret(Settings.CONSUMER_SECRET);
Configuration conf = cbuilder.build();
mOauth = new OAuthAuthorization(conf);
String authUrl = null;
try {
RequestToken requestToken = mOauth
.getOAuthRequestToken(null);
authUrl = requestToken.getAuthorizationURL();
} catch (Exception e) {
e.printStackTrace();
return;
}
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(authUrl));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
};
}.start();
setContentView(R.layout.login);
findViewById(R.id.login).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// ピンコード処理を書く
EditText editText = (EditText) findViewById(R.id.pincode);
getOAuthAccessToken(editText.getText().toString());
}
});
}
private void getOAuthAccessToken(final String pincode) {
new Thread() {
@Override
public void run() {
try {
AccessToken token = mOauth.getOAuthAccessToken(pincode);
Settings.getInstance(This()).setAccessToken(
token.getToken(), token.getTokenSecret());
Settings.getInstance(This()).setInitialized(true);
runOnUiThread(new Runnable() {
@Override
public void run() {
startMain();
}
});
} catch (TwitterException e) {
e.printStackTrace();
}
}
}.start();
}
private void startMain() {
setContentView(R.layout.activity_twitter4j_sample);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.twitter4j_sample, menu);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case R.id.action_logout:
Settings.getInstance(This()).setInitialized(false);
break;
}
return super.onMenuItemSelected(featureId, item);
}
}