web-dev-qa-db-ja.com

Instagramユーザープロファイルを開く

アプリからTwitterFacebookのユーザープロファイルをなんとか開けました。しかし、Instagramへの参照は見つかりません。

TwitterやFacebookなどのユーザープロファイルを表示するためにInstagramを開く方法はありますか?

たとえば、Intentを取得してTwitterアプリケーションを起動するには、次のようにします。

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

}

Instagramで同様のことをするにはどうすればよいですか?前もって感謝します。

28
Blackbelt

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;
}
37
Jared Rummler

これまでのところ、ユーザーのプロファイルを直接表示する方法を見つけることができませんでしたが、回避策はあります。

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 を使用できます

これは私たちが正確に望んでいるわけではありませんが、今はより良いオプションです...

9
Dinesh Balu

簡単に検索して、「WO N'T WORK」というすべての知識を試した後、これを機能させました。

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

これにより、デフォルトのブラウザが起動します。答えは「instagram.com」+「/ UserName」です。

8
KaSiris

ユーザープロファイルに直接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";
4
Kamal
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)));
     }
1
Ashwin H

残念ながら、現時点では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」を表示する画像のIDに設定し、「String pageName」をInstagramアカウントのユーザー名に設定します。

ユーザー名の部分は明白ですが、画像IDを取得するのにヘルプが必要な場合は、これを参照してください picture

0
David Read