我正在开发一个社交网络应用程序,我们的用户可以将他们的Instagram帐户连接到我们的服务。我想直接在他们的官方Android应用程序中打开Instagram个人资料(如果已安装),但我找不到任何方法可以做到这一点。但是,他们的开发者网站上有page关于iOS上完全相同的功能,但这似乎根本不适用于Android。我在网上找到的所有内容都只提供了在浏览器中打开链接的各种方法。有什么建议吗?
答案 0 :(得分:114)
我使用以下代码解决了这个问题。
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")));
}
答案 1 :(得分:23)
虽然@ 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;
}
答案 2 :(得分:10)
直接将instagram应用程序打开到用户个人资料:
Dim src As String = "../Images/Logos/" & ImageName
Dim MyImage As System.Drawing.Image = System.Drawing.Image.FromFile(src)
答案 3 :(得分:2)
我试过这种方式,它对我有用..
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);
}
});
答案 4 :(得分:1)
@jhondge的科特琳版答案:
val uriForApp: Uri = Uri.parse("http://instagram.com/_u/xxx")
val forApp = Intent(Intent.ACTION_VIEW, uriForApp)
val uriForBrowser: Uri = Uri.parse("http://instagram.com/xxx")
val forBrowser = Intent(Intent.ACTION_VIEW, uriForBrowser)
forApp("com.instagram.android")
try {
startActivity(context, forApp, null)
} catch (e: ActivityNotFoundException) {
startActivity(context, forBrowser, null)
}
答案 5 :(得分:1)
基于@alex-karapanos 的回答,我使用以下代码:
fun launchInsta() {
val uriForApp: Uri = Uri.parse("http://instagram.com/_u/xxx")
val forApp = Intent(Intent.ACTION_VIEW, uriForApp)
val uriForBrowser: Uri = Uri.parse("http://instagram.com/xxx")
val forBrowser = Intent(Intent.ACTION_VIEW, uriForBrowser)
forApp.component =
ComponentName(
"com.instagram.android",
"com.instagram.android.activity.UrlHandlerActivity"
)
try {
startActivity(forApp)
} catch (e: ActivityNotFoundException) {
startActivity(forBrowser)
}
}
答案 6 :(得分:0)
我在Webview中使用片段实现了此功能,但是我遇到了一个问题, instagram弹出三次:
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")));
}
}