Instagram应用程序无法通过Android Intent打开

5
这是我的代码,问题是我不想发送图片,只想打开IG应用程序。是的,该应用程序已安装,但仍未被检测到。

上周之前这个功能一直正常。请帮忙解决。

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

            if (isIntentAvailable(insta)) {
                this.startActivityForResult(insta, REQUEST_CODE_MY_PICK);
            } else {
            }

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


如果您的清单文件中没有<queries>元素,您的代码将无法在Android 11上运行。 ACTION_VIEW不会返回结果,因此startActivityForResult()不是一个好选择。 Instagram没有支持不安全的http协议的要求。而且,在您的else中,您可能应该记录一条消息和/或让用户知道正在发生什么。 - CommonsWare
谢谢您的反馈@CommonsWare..是的,我在else中向用户提供反馈..我尝试了所有这些..仍然没有任何区别。 - Muneeb Awan
2个回答

7

试试这个

Uri appUri = Uri.parse("https://instagram.com/_u/user_name");
Uri browserUri = Uri.parse("https://instagram.com/user_name");

try{ //first try to open in instagram app
  Intent appIntent = getPackageManager().getLaunchIntentForPackage("com.instagram.android");
  if(appIntent != null){
     appIntent.setAction(Intent.ACTION_VIEW)
     appIntent.setData(appUri);
     startActivity(appIntent);
  }
}catch(Exception e){ //or else open in browser
   Intent browserIntent = new Intent(Intent.ACTION_VIEW, browserUri);
   startActivity(browserIntent);
}

0
尝试将Uri.parse("http://instagram.com/")替换为Uri.parse("https://instagram.com/")。同时尝试删除isIntentAvailable并直接调用startActivity(insta)而不是使用'forResult',最后删除insta.setPackage行。

它在网页浏览器上打开IG..我想要应用程序打开。 - Muneeb Awan
请检查 IG 应用程序的“默认打开”设置(在 Android 应用程序设置中)。'打开支持的链接' 必须设置为 '在此应用程序中打开'。还尝试将 Uri 更改为 https://www.instagram.com - 请注意 www。 - Webfreak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接