web-dev-qa-db-fra.com

Ouvrir la page dans l'application Twitter à partir d'une autre application - Android

Je cherchais un moyen de lancer l'application Twitter et d'ouvrir une page spécifiée de mon application, sans affichage Web. J'ai trouvé la solution pour Facebook ici: Ouverture de l'application facebook sur la page de profil spécifiée

J'ai besoin de quelque chose de similaire.

[~ # ~] modifier [~ # ~] Je viens de trouver une solution:

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

Cela a fonctionné pour moi: Twitter://user?user_id=id_num

Pour connaître l'ID: http://www.idfromuser.com/

41
fg.radigales

Sur la base de la réponse de fg.radigales, voici ce que j'ai utilisé pour lancer l'application si possible, mais je retombe sur le navigateur sinon:

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);

MISE À JOUR

Ajout de intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); pour corriger un problème où Twitter s'ouvrait à l'intérieur de mon application au lieu d'une nouvelle activité.

44
Harry

Ouvrez la page sur l'application Twitter à partir d'une autre application en utilisant Android en 2 étapes:

1.Juste collez le code ci-dessous (cliquez sur le bouton ou n'importe où vous avez besoin)

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"));

Pour obtenir USER_ID, écrivez simplement le nom d'utilisateur http://gettwitterid.com/ et obtenez l'identifiant utilisateur Twitter dedans

Référence : https://solutionspirit.com/open-page-Twitter-application-Android/

J'espère que cela vous aidera :)

4
SHUJAT MUNAWAR

Ma réponse s'appuie sur les réponses largement acceptées de fg.radigales et Harry. Si l'utilisateur a Twitter installé mais désactivé (par exemple en utilisant App Quarantine), cette méthode ne fonctionnera pas. L'intention de l'application Twitter sera sélectionnée, mais elle ne pourra pas la traiter car elle est désactivée.

Au lieu de:

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

Vous pouvez utiliser les éléments suivants pour décider quoi faire:

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"));
4
igordc
fun getOpenTwitterIntent(context: Context, url: String) {
    return try {
        context.packageManager.getPackageInfo("com.Twitter.Android", 0)
        context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("Twitter://user?screen_name=$url")))
    } catch (e: Exception) {
        context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://Twitter.com/#!/$url")))
    }
}
1
Hardik Patel

Essayez simplement cet extrait de code. Cela vous aidera.

//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) 
        {

        }
1
Akilan

Pour moi, cela a fait l'affaire, il ouvre l'application Twitter si vous l'avez ou va dans le navigateur Web:

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://Twitter.com/"+"USERID"));
                    startActivity(intent);
0
Hussein Alghazal