Is there a way to open the Twitter app from my own application?
For example, I have my own Android app and I want to open Twitter app using Intent. How can I do that? Answers with example would be much appreciated.
Hi there, Go to Settings > Apps > Twitter > under Defaults go to Set as default and turn off Open supported links. This will let not twitter open the twitter.com links.
Check your network connections If you're using WiFi to connect to the Twitter for Android app, try an alternate WiFi connection. If one works and the other does not, it is most likely that the WiFi connection does not accept SSL or is blocking Twitter. If you're connected to a VPN, try turning it off.
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?screen_name=" + twitter_user_name)));
}catch (Exception e) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/#!/" + twitter_user_name)));
}
This should do the necessary work for you.
Expanding on @Chrishan's answer you can open the twitter app to perform different functions based on the uri (list below from this post)
twitter://user?screen_name=lorenb
twitter://user?id=12345
twitter://status?id=12345
twitter://timeline
twitter://mentions
twitter://messages
twitter://list?screen_name=lorenb&slug=abcd
twitter://post?message=hello world
twitter://post?message=hello world&in_reply_to_status_id=12345
twitter://search?query=%23hashtag
e.g.
String uriStr = "twitter://post?message=hello world"
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(uriStr)));
}catch (Exception e) {
//the user doesn't have twitter installed
}
NOTE: I have only tried user
and post
, so if you come across any that don't work please let me know and I will update this answer.
If the user already has Twitter installed on their phone, something like this should take care of it:
try{
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, "this is a tweet");
intent.setType("text/plain");
final PackageManager pm = getPackageManager();
final List<?> activityList = pm.queryIntentActivities(intent, 0);
int len = activityList.size();
for (int i = 0; i < len; i++) {
final ResolveInfo app = (ResolveInfo) activityList.get(i);
if ("com.twitter.android.PostActivity".equals(app.activityInfo.name)) {
final ActivityInfo activity=app.activityInfo;
final ComponentName name=new ComponentName(activity.applicationInfo.packageName, activity.name);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
intent.setComponent(name);
startActivity(intent);
break;
}
}
}
catch(final ActivityNotFoundException e) {
Log.i("twitter", "no twitter native",e );
}
I use this:
Intent i = getOpenTwitterIntent(this, "UserName");
startActivity(i);
And the function:
public static Intent getOpenTwitterIntent(Context c, String Username) {
try {
c.getPackageManager().getPackageInfo("com.twitter.android", 0);
return new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?screen_name="+ Username));
} catch (Exception e) {
return new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/#!/" + Username));
}
}
If Twitter app is intalled in the device, this open that, else open web browser...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With