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]"))); 
}
jbc25
quelle
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

fg.radigales
quelle
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.

Harry
quelle
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 :)

Lösungsgeist
quelle
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"));
igordc
quelle
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) 
        {

        }
Akilan
quelle
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);
Hussein Alghazal
quelle