2013-03-19 8 views
24

Мне удалось открыть Twitter и Facebook профиль пользователя из моего приложения. Но я не могу найти ссылок на Instagram.Открыть профиль пользователя Instagram

Есть ли способ открыть Instagram, чтобы показать профиль пользователя, как в twitter или facebook?

Например, для того, чтобы получить Intent, чтобы запустить приложение твиттер я делаю:

public Intent getOpenTwitterIntent(Context context) { 

    try { 
     return new Intent(Intent.ACTION_VIEW, 
       Uri.parse("twitter://user?screen_name=" 
         .concat(twitterUsername))); 

    } catch (Exception e) { 
     return new Intent(
       Intent.ACTION_VIEW, 
       Uri.parse("https://twitter.com/#!/".concat(twitterUsername))); 
    } 

} 

Как я могу achive что-то подобное с Instagram? Спасибо заранее.

+0

вы получили какое-либо решение для выше? –

+0

Нет, я этого не делал. Прошу прощения – Blackbelt

+0

okie np ... спасибо за ваш ответ ... пожалуйста, напишите, если вы получите что-нибудь ... –

ответ

29

Вот метод получить Intent, чтобы открыть приложение Instagram на страницу профиля пользователя:

/** 
* Intent to open the official Instagram app to the user's profile. If the Instagram app is not 
* installed then the Web Browser will be used.</p> 
* 
* Example usage:</p> {@code newInstagramProfileIntent(context.getPackageManager(), 
*  "http://instagram.com/jaredrummler");}</p> 
* 
* @param pm 
*   The {@link PackageManager}. You can find this class through 
*   {@link Context#getPackageManager()}. 
* @param url 
*   The URL to the user's Instagram profile. 
* @return The intent to open the Instagram app to the user's profile. 
*/ 
public static Intent newInstagramProfileIntent(PackageManager pm, String url) { 
    final Intent intent = new Intent(Intent.ACTION_VIEW); 
    try { 
     if (pm.getPackageInfo("com.instagram.android", 0) != null) { 
      if (url.endsWith("/")) { 
       url = url.substring(0, url.length() - 1); 
      } 
      final String username = url.substring(url.lastIndexOf("/") + 1); 
      // http://stackoverflow.com/questions/21505941/intent-to-open-instagram-user-profile-on-android 
      intent.setData(Uri.parse("http://instagram.com/_u/" + username)); 
      intent.setPackage("com.instagram.android"); 
      return intent; 
     } 
    } catch (NameNotFoundException ignored) { 
    } 
    intent.setData(Uri.parse(url)); 
    return intent; 
} 
+2

Я рад, что вы использовали '' http: //instagram.com/_u/... ''URI. Это помогло мне открыть профиль в приложении Instagram (пока он был установлен), а не браузере по умолчанию. – AdamMc331

+1

@ McAdam331 благодарит за указание ответа – Blackbelt

8

После непродолжительного поиска и пытается что мы все знаем, «НЕ РАБОТАЕТ» Я получил эту работу

Uri uri = Uri.parse("http://instagram.com/mzcoco2you"); 
Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
startActivity(intent); 

Это должно начать свой браузер по умолчанию и ... там вы идете. Ответ: «instagram.com» + «/ UserName».

+0

спасибо. Я попробую это как можно скорее – Blackbelt

+3

Я попробовал, он открывает браузер, а не приложение. Есть ли способ открыть приложение? – Blackbelt

+0

похоже, что вы можете открывать изображения в приложении instagram с намерением, но не (пока) профили пользователей. подробности: https://groups.google.com/d/msg/instagram-api-developers/7XUKm9HSAdg/9SrdVmB4trQJ – ryan

8

До сих пор я не мог найти способ, чтобы показать профиль пользователя непосредственно .. но есть способ обойти ..

Найдено это решение от Instagram Manifest from GitHub

Intent iIntent = getPackageManager().getLaunchIntentForPackage("com.instagram.android"); 

iIntent.setComponent(new ComponentName("com.instagram.android", "com.instagram.android.activity.UrlHandlerActivity")); 
iIntent.setData(Uri.parse("http://instagram.com/p/gjfLqSBQTJ/")); 

startActivity(iIntent); 

Это откроет особый пост изображения пользователем в приложении. Из приложения на странице пользователь может открыть профиль со ссылкой внутри.

Если вы хотите открыть недавний пост или что-то, вы можете использовать Instagram API

Это не мы хотим точно, но лучший вариант сейчас ... я думаю :)

+0

Благодарим за вход – Blackbelt

+0

Это сработало для меня: http://stackoverflow.com/a/23511180/1048340 –

+8

@ dinesh-balu Вы, работа по решению, просто должны изменить URL-адрес на 'iIntent.setData (Uri. parse ("http://instagram.com/p/gjfLqSBQTJ/")); 'to' intent.setData (Uri.parse ("http://instagram.com/_u/" + INSTAGRAM_USERNAME)); ' ** URL ** http://instagram.com/_u/ ** [USERNAME] ** – eOnOe

0

к сожалению, в это время вы не можете открыть приложение Instagram, чтобы перейти непосредственно к профилю пользователя. Однако вы можете открыть определенную фотографию в приложении Instagram.

Следующий код, который я предоставил, откроет определенное изображение внутри приложения Instagram. Если приложение Instagram не установлено, оно откроет пользовательский профиль внутри браузера.

public void openInstagram (View view) { 
    Intent intent = null; 
    String pictureId = "p/0vtNxgqHx9"; 
    String pageName = "d4v3_r34d"; 
    try {intent = getPackageManager().getLaunchIntentForPackage("com.instagram.android"); 
     intent.setComponent(new ComponentName("com.instagram.android", "com.instagram.android.activity.UrlHandlerActivity")); 
     intent.setData(Uri.parse("http://instagram.com/" + pictureId)); 
    } catch (Exception e) { 
     intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://instagram.com/" + pageName)); 
    } 
    this.startActivity(intent); 

Я очень упростил этот код для редактирования в ваших собственных целях. Установите «String pictureId» на идентификатор изображения, которое вы хотите отобразить, и установите «String pageName» для имени пользователя вашей учетной записи Instagram.

Часть имени пользователя очевиден, но если вам нужна помощь, чтобы получить изображение, посмотрите на это picture.

3

Чтобы открыть непосредственно 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

Спасибо за ваш вклад. – Blackbelt

1
try { 
    Intent intent = new Intent(Intent.ACTION_VIEW); 
    intent.setData(Uri.parse("http://instagram.com/_u/" + "username")); 
    intent.setPackage("com.instagram.android"); 
    startActivity(intent); 
    } 
    catch (android.content.ActivityNotFoundException anfe) 
    { 
     startActivity(new Intent(Intent.ACTION_VIEW, 
     Uri.parse("https://www.instagram.com/" + username))); 
    } 
Смежные вопросы