Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Open Twitter app from other app and load some page

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.

like image 443
Speise Avatar asked Aug 01 '11 16:08

Speise


People also ask

How do I stop Twitter from opening on the app?

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.

Why is my Twitter app not showing?

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.


4 Answers

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.

like image 183
Chrishan Avatar answered Oct 29 '22 15:10

Chrishan


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.

like image 34
Bulwinkel Avatar answered Oct 29 '22 15:10

Bulwinkel


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 );
        }
like image 45
Phil Avatar answered Oct 29 '22 15:10

Phil


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...

like image 33
ratoncolorao Avatar answered Oct 29 '22 15:10

ratoncolorao