Seite in der Twitter-App von einer anderen App öffnen - Android


79

Ich suchte nach einer Möglichkeit, die Twitter-App zu starten und eine bestimmte Seite in meiner Anwendung ohne Webansicht zu öffnen. Ich habe die Lösung für Facebook hier gefunden: Öffnen der Facebook-App auf der angegebenen Profilseite

Ich brauche etwas ähnliches.

BEARBEITEN Ich habe gerade eine Lösung gefunden:

try {
    Intent intent = new Intent(Intent.ACTION_VIEW,
    Uri.parse("twitter://user?screen_name=[user_name]"));
    startActivity(intent);
} catch (Exception e) {
    startActivity(new Intent(Intent.ACTION_VIEW,
    Uri.parse("https://twitter.com/#!/[user_name]"))); 
}

3
Vielen Dank! Ich würde hier eine spezifischere Ausnahme setzen: ActivityNotFoundException
— Sergey Kostrukov

Und "twitter: // status? User_id = [USER_ID] & status_id = [STATUS_ID]" ist möglich
— ChangUZ

@jbc gibt es einen Rückruf, wenn wir auf folgen klicken ....
— NagarjunaReddy

Keine Ahnung, ich kann dir nicht dabei helfen @NagarjunaReddy :(
— jbc25

Ziehen Sie es vor, eine spezifischere Ausnahme abzufangen, in diesem Fall ActivityNotFoundException. Andernfalls könnten andere Probleme auftreten (wenn Sie diesem Block mehr Code hinzufügen).
— Raúl Salinas-Monteagudo

Antworten:


41

Das hat bei mir funktioniert: twitter://user?user_id=id_num


2
Im Jahr 2016 verwenden Sie einfach:startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/PROFILENAME")));
— Rick

Ich kann meine ID mit dem Link haben, den Sie uns geben. Ich benutze diese Website: mytwitterid.com
— Sébastien REMY

Wie würde das aussehen, wenn Sie Intent verwenden möchten? wie https://twitter.com/intent?text=hello?
— Kevin Hernandez

47

Basierend auf der Antwort von fg.radigales habe ich die App nach Möglichkeit gestartet, aber ansonsten auf den Browser zurückgegriffen:

Intent intent = null;
try {
    // get the Twitter app if possible
    this.getPackageManager().getPackageInfo("com.twitter.android", 0);
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=USERID"));
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
} catch (Exception e) {
    // no Twitter app, revert to browser
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/PROFILENAME"));
}
this.startActivity(intent);

AKTUALISIEREN

Hinzugefügt intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);, um ein Problem zu beheben, bei dem Twitter in meiner App anstatt als neue Aktivität geöffnet wurde.


2
gibt Fehler kann Benutzer zu diesem Zeitpunkt nicht bekommen Twitter android
— Rahul

Siehe fg.radigales Antwort
— Harry

Dieser Link hat mir nicht geholfen ... sowieso habe ich ihn von irgendwo anders bekommen und arbeite jetzt :)
— Narendra Singh

8

Öffnen Sie die Seite in der Twitter-App von einer anderen App mit Android in 2 Schritten:

1. Fügen Sie einfach den folgenden Code ein (beim Klicken auf die Schaltfläche oder an einer beliebigen Stelle)

Intent intent = null;
try{
   // Get Twitter app
   this.getPackageManager().getPackageInfo("com.twitter.android", 0);
   intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=USER_ID"));
   intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
} catch () {
   // If no Twitter app found, open on browser
   intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/USERNAME"));
}

2.intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=USER_ID"));

Um USER_ID zu erhalten, schreiben Sie einfach den Benutzernamen http://gettwitterid.com/ und geben Sie dort die Twitter-Benutzer-ID ein

Referenz : https://solutionspirit.com/open-page-twitter-application-android/

Hoffe es wird helfen :)


4

Meine Antwort baut auf den allgemein akzeptierten Antworten von fg.radigales und Harry auf. Wenn der Benutzer Twitter installiert, aber deaktiviert hat (z. B. mithilfe der App-Quarantäne), funktioniert diese Methode nicht. Die Absicht für die Twitter-App wird ausgewählt, kann sie jedoch nicht verarbeiten, da sie deaktiviert ist.

Anstatt von:

getPackageManager().getPackageInfo("com.twitter.android", 0);
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=2343965036"));

Sie können Folgendes verwenden, um zu entscheiden, was zu tun ist:

PackageInfo info = getPackageManager().getPackageInfo("com.twitter.android", 0);
if(info.applicationInfo.enabled)
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=2343965036"));
else
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/wrkoutapp"));

1

Probieren Sie einfach dieses Code-Snippet aus. Es wird dir helfen.

//Checking If the app is installed, according to the package name
        Intent intent = new Intent();
        intent.setType("text/plain");
        intent.setAction(Intent.ACTION_SEND);
        final PackageManager packageManager = getPackageManager();
        List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);

        for (ResolveInfo resolveInfo : list) 
        {
            String packageName = resolveInfo.activityInfo.packageName;

            //In case that the app is installed, lunch it.
            if (packageName != null && packageName.equals("com.twitter.android")) 
            {
                try
                {
                    String formattedTwitterAddress = "twitter://user/" ;
                    Intent browseTwitter = new Intent(Intent.ACTION_VIEW, Uri.parse(formattedTwitterAddress));
                                    long twitterId = <Here is the place for the twitter id>
                    browseTwitter.putExtra("user_id", twitterId);
                    startActivity(browseTwitter);

                    return;
                }
                catch (Exception e) 
                {

                }
            }
        }

        //If it gets here it means that the twitter app is not installed. Therefor, lunch the browser.
        try
        { 
                            String twitterName = <Put the twitter name here>
            String formattedTwitterAddress = "http://twitter.com/" + twitterName;
            Intent browseTwitter = new Intent(Intent.ACTION_VIEW, Uri.parse(formattedTwitterAddress)); 
            startActivity(browseTwitter);
        }
        catch (Exception e) 
        {

        }

Bitte beschreiben Sie, wie Sie "Twitter-ID" expliziter erhalten
— Dmitry Kolesnikovich

0

Für mich war dies der Trick, mit dem die Twitter-App geöffnet wird, wenn Sie sie haben oder zum Webbrowser gehen:

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/"+"USERID"));
                    startActivity(intent);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.