web-dev-qa-db-ja.com

AndroidでInstagramユーザープロファイルを開く意図

私はソーシャルネットワーキングアプリを開発しており、ユーザーはInstagramアカウントをサービスに接続できます。 Instagramプロファイルを公式のAndroidアプリ(インストールされている場合)で直接開きたいのですが、それを行う方法が見つかりません。しかし、 ページ iOSのまったく同じ機能に関する開発者向けサイトで、これはAndroidではまったく機能しないようです。ブラウザで。提案はありますか?

38
Grishka

次のコードを使用してこの問題を解決しました。

    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

@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;
}
25
Rahul Sainani

ユーザープロファイルに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";
10
Kamal

この方法を試してみたところ、うまくいきました。

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

私はwebviewのフラグメントを使用してこれを実装しましたが、1つの問題があります。Instagramのポップアップが3回表示されます:

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



        });

onCreateViewの外側

//インスタグラム

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