2014-02-02 3 views
27

Я разрабатываю приложение для социальных сетей, и наши пользователи могут подключить свою учетную запись Instagram к нашему сервису. Я бы хотел открыть профили Instagram прямо в своем официальном приложении для Android (если он установлен), но я не могу найти способ сделать это. Однако на своем сайте разработчиков есть page о той же функции на iOS, но это вообще не работает на Android. Все, что я нашел в Интернете, предлагает только различные способы открытия ссылок в браузере. Какие-либо предложения?Намерение открыть профиль пользователя Instagram на Android

+0

@kentarosu да, но нет правильного ответа. – Grishka

+0

Прочтите комментарии по выбранному правилу. В нем говорится, что вы не можете открыть приложение IG на данный момент для профиля, только для изображения. Ближайшим решением является открытие браузера. – kentarosu

ответ

80

Я решил эту проблему, используя следующий код.

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"))); 
    } 
+3

он открывает браузер –

+0

Посмотрите на этот ответ: https://stackoverflow.com/questions/15497261/open-instagram-user-profile Вы должны использовать формат ''/_u/'' для профилей – Gonzalo

+0

Я не понимаю этот код, потому что вы не объяснили это, так что это ТЕРРИТОРИЙ ОТВЕТ. –

20

Хотя решение @ jhondge работает и является правильным. Это более экологически чистые способы сделать это:

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; 
} 
+0

Мне нравится это решение, но по какой-то причине оно не работает для меня, когда я пытаюсь сделать то же самое для Facebook Intent. Подход try/catch работает для Facebook, но ваш подход подходит для намерения Instagram. Вы случайно знаете, что может вызвать это? –

+0

@ Krøllebølle Я думаю, что я столкнулся с той же проблемой и переключился на попытку поймать фейсбук. Не знаю, что вызывает это. –

9

Чтобы открыть непосредственно Instagram приложения к профилю пользователя:

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"; 
+0

он открывается в браузере. –

0

Я попробовал этот путь, и это работает для меня ..

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

      } 
     }); 
Смежные вопросы