我刚刚将一些社交网络链接到我的应用程序作为初步测试,并使用相同类型的代码,我得到的结果对于 Facebook、Instagram 和 Twitter Intent 是不同的。
当我单击 Facebook 或 Twitter 时,它会在安装时自动打开应用程序,而在未安装时使用浏览器。然而,Instagram 的情况并非如此。使用对话框弹出完整的操作,这不是我想要发生的事情。
protected void LaunchInstagram() {
String InstagramUsername = "USERNAME";
String LaunchInstagram = "http://instagram.com/_u/" + InstagramUsername;
String InstagramURL = "https://instagram.com/" + InstagramUsername;
try {
this.getPackageManager().getPackageInfo("com.instagram.android", 0);
Uri Uri = Uri.parse(LaunchInstagram);
startActivity(new Intent(Intent.ACTION_VIEW, Uri));
} catch (PackageManager.NameNotFoundException InstagramAppNotFoundOpenBrowser) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(InstagramURL)));
}
}
最佳答案
您正在使用
字符串 InstagramURL = "https://instagram.com/ "+ Instagram 用户名;
因此,您尝试启动的每个 Intent 都会打开一个选择器,因为这是一个 URL。
比每个支持 URL 的应用程序(例如浏览器等)都会尝试处理该问题。
编辑1:
尝试这样:
public static boolean openApp(Context context, String packageName) {
PackageManager manager = context.getPackageManager();
try {
Intent i = manager.getLaunchIntentForPackage(packageName);
if (i == null) {
return false;
//throw new PackageManager.NameNotFoundException();
}
i.addCategory(Intent.CATEGORY_LAUNCHER);
context.startActivity(i);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
我不确定这是否会帮助您打开应用程序上的特定用户页面。
编辑2:
尝试这样:
Uri uri = Uri.parse("http://instagram.com/_u/USERNAME");
Intent insta = new Intent(Intent.ACTION_VIEW, uri);
insta.setPackage("com.instagram.android");
startActivity(insta);
关于android - 为什么会为此 Intent 弹出 "complete action using"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32929702/