I am using twitter4j to integrate twitter into android. This is my twitter code. I am creating a separate twitter class.
I looked at similar questions, but nothing works for me. Question and some other questions.
Twitter class
public class OBLTwitter { private static final String TAG = "OBLTwitter"; private Activity activity; // Twitter constants private static final String TWITTER_CONSUMER_KEY = "KEY"; private static final String TWITTER_CONSUMER_SECRET = "SECRET"; public static final String TWITTER_CALLBACK_URL = "app://ridesharebuddy"; // Twitter variables private static Twitter twitter; private static RequestToken requestToken; public static boolean userDeniedToContinue; public OBLTwitter(Activity activity) { Log.d(TAG, "Parameterized constructor called."); this.activity = activity; userDeniedToContinue = false; } // Login to twitter public void loginToTwitter() { Log.e(TAG, "Logging in to twitter."); if(!isNetworkAvailable(this.activity)) { Log.e(TAG, "Interent connection not available"); } // Set up Twitter object ConfigurationBuilder builder = new ConfigurationBuilder(); builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY); builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET); Configuration configuration = builder.build(); TwitterFactory factory = new TwitterFactory(configuration); twitter = factory.getInstance(); Thread thread = new Thread(new Runnable() { @Override public void run() { try { if(twitter == null) { Log.e(TAG, "twitter is null"); } Log.e("called", "called run method"); // Get RequestToken and call authentication URL to show // twitter page requestToken = twitter .getOAuthRequestToken(TWITTER_CALLBACK_URL); Log.e(TAG, "getting request token"); Log.e("oAuth token :", requestToken.getToken()); Log.e("oAUth secret:", requestToken.getTokenSecret()); Log.e("oAuth URL: ", requestToken.getAuthenticationURL()); activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri .parse(requestToken.getAuthenticationURL()))); } catch (TwitterException te) { Log.e(TAG, "Twitter exception, Login error."); te.printStackTrace(); Log.e(TAG, "Error code : " + te.getErrorCode()); Log.e(TAG, "Error message : " + te.getErrorMessage()); Log.e(TAG, "Status code : " + te.getStatusCode()); Log.e(TAG, "Access level : " + te.getAccessLevel()); } catch (Exception e) { e.printStackTrace(); } } }); thread.start(); } public boolean isNetworkAvailable(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); return activeNetworkInfo != null; }
}
This is my activity code from which I call the loginToTwitter function.
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); OBLTwitter twitter = new OBLTwitter(this); twitter.loginToTwitter(); }
This is my manifest file, I am adding this because I made some changes suggested by the respondents of various questions.
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="18" /> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.objectlounge.OBLTwitter.MainActivity" android:label="@string/app_name" > android:launchMode="singleInstance"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="ridesharebuddy" android:scheme="app" /> </intent-filter> </activity> </application>
Error log

android twitter twitter4j
keen
source share