我只是将一些社交网络链接到我的应用程序作为初步测试并使用相同类型的代码,我得到的结果与Facebook,Instagram和Twitter意图不同。
当我点击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)));
}
}
答案 0 :(得分:2)
您正在使用
字符串InstagramURL =" https://instagram.com/" + InstagramUsername;
因此,您尝试启动的每个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;
}
}
我不确定这是否会帮助您在App上打开特定的用户页面。
编辑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);