web-dev-qa-db-fra.com

Intention d'ouvrir le profil utilisateur Instagram sur Android

Je développe une application de réseautage social et nos utilisateurs peuvent connecter leur compte Instagram à notre service. J'aimerais ouvrir les profils Instagram directement dans leur Android Android (si elle est installée), mais je ne trouve aucun moyen de le faire. Cependant, il y a un page sur leur site de développeur à propos de la même fonctionnalité exacte sur iOS, mais cela ne semble pas du tout fonctionner sur Android. Tout ce que j'ai trouvé sur le Web ne suggère que différentes façons d'ouvrir des liens dans un navigateur. Des suggestions?

38
Grishka

J'ai résolu ce problème en utilisant le code suivant.

    Uri uri = Uri.parse("http://instagram.com/_u/xxx");
    Intent likeIng = new Intent(Intent.ACTION_VIEW, uri);

    likeIng.setPackage("com.instagram.Android");

    try {
        startActivity(likeIng);
    } catch (ActivityNotFoundException e) {
        startActivity(new Intent(Intent.ACTION_VIEW,
                Uri.parse("http://instagram.com/xxx")));
    }
123
jhondge

Bien que la solution de @ jhondge fonctionne et soit correcte. C'est une façon plus propre de procéder:

Uri uri = Uri.parse("http://instagram.com/_u/xxx");
    Intent insta = new Intent(Intent.ACTION_VIEW, uri);
    insta.setPackage("com.instagram.Android");

    if (isIntentAvailable(mContext, insta)){
        startActivity(insta);
    } else{
        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://instagram.com/xxx")));
    }

private boolean isIntentAvailable(Context ctx, Intent intent) {
    final PackageManager packageManager = ctx.getPackageManager();
    List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}
25
Rahul Sainani

Pour ouvrir directement l'application instagram sur un profil utilisateur:

String scheme = "http://instagram.com/_u/USER";
String path = "https://instagram.com/USER";
String nomPackageInfo ="com.instagram.Android";
    try {
        activite.getPackageManager().getPackageInfo(nomPackageInfo, 0);
        intentAiguilleur = new Intent(Intent.ACTION_VIEW, Uri.parse(scheme));
        } catch (Exception e) {
            intentAiguilleur = new Intent(Intent.ACTION_VIEW, Uri.parse(path));
        }
        activite.startActivity(intentAiguilleur); 

// Use this link to open directly a picture
  String scheme = "http://instagram.com/_p/PICTURE";
10
Kamal

J'ai essayé de cette façon et cela a fonctionné pour moi ..

instabtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                Intent instaintent = getActivity().getPackageManager().getLaunchIntentForPackage("com.instagram.Android");

                instaintent.setComponent(new ComponentName( "com.instagram.Android", "com.instagram.Android.activity.UrlHandlerActivity"));
                instaintent.setData( Uri.parse( "https://www.instagram.com/_u/bitter_truth_lol") );

                startActivity(instaintent);

            }
        });
2
Aditya Vyas-Lakhan
fun getOpenInstagram(context: Context, url: String) {
    val likeIng = Intent(Intent.ACTION_VIEW, Uri.parse("http://instagram.com/_u/$url"))
    likeIng.setPackage("com.instagram.Android")
    try {
        context.startActivity(likeIng)
    } catch (e: ActivityNotFoundException) {
        context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("http://instagram.com/$url")))
    }
}
0
Hardik Patel

J'ai implémenté cela en utilisant un fragment dans la vue Web, mais j'ai un problème, le pop-up instagram apparaît trois fois:

webView.setWebViewClient(new WebViewClient()
        {
 public boolean shouldOverrideUrlLoading(WebView viewx, String urlx)
            {
 if(Uri.parse(urlx).getHost().endsWith("instagram.com")) {

                    gotoinstagram();

                  return false;
                }

                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlx));
                viewx.getContext().startActivity(intent);
                return true;
            }



        });

en dehors de onCreateView

// instagram

public void gotoinstagram()
{

    Uri uri = Uri.parse("http://instagram.com/_u/XXXX");
    Intent likeIng = new Intent(Intent.ACTION_VIEW, uri);

    likeIng.setPackage("com.instagram.Android");

    try {
        startActivity(likeIng);
    } catch (ActivityNotFoundException e) {
        startActivity(new Intent(Intent.ACTION_VIEW,
                Uri.parse("http://instagram.com/XXXX")));
    }

}
0
vb217