android - 从另一个 Activity (Android) 启动社交媒体应用程序或浏览器

标签 android android-intent

目前当用户点击按钮时,他们将直接启动 Facebook 和 Twitter 应用程序。但是我想让用户能够选择使用浏览器或应用程序来查看个人资料。 另一个问题是我找不到 Instagram 协议(protocol)来启动应用程序来查看个人资料,我只能在网页上查看。有人知道吗?

        btnFb.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String uri = "fb://page/80829078894";
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
            startActivity(intent);

        }
    });

    btnTwitter.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String uri = "twitter://user?user_id=87114940";
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
            startActivity(intent);

        }
    });

    btnInstagram.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String uri = "http://instagram.com/plaza_semanggi";
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
            startActivity(intent);

        }
    });

最佳答案

将您的代码更改为以下内容

    btnFb.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            openFacebookIntent(ActivityMain.this, "80829078894");


        }
    });

    btnTwitter.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            openTwiterIntent(ActivityMain.this, "87114940");

        }
    });

    btnInstagram.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            openInstagramIntent(ActivityMain.this, "plaza_semanggi");

        }
    });

并有以下方法。

public static void openFacebookIntent(Context context, String facebookID) {

    Intent intent;

    try {
        context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
        intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/facebookID"));
    } catch (Exception e) {
        intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/facebookID"));
    }

    context.startActivity(intent);
}

public static void openTwiterIntent(Context context, String twitterID) {

    Intent intent;

    try {
        context.getPackageManager().getPackageInfo("com.twitter.android", 0);
        intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=twitterID"));
    } catch (Exception e) {
        intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/twitterID"));
    }

    context.startActivity(intent);
}

public static void openInstagramIntent(Context context, String instagramID) {

    Uri uri = Uri.parse("http://instagram.com/_u/instagramID");
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);

    intent.setPackage("com.instagram.android");

    try {
        context.startActivity(intent);
    } catch (ActivityNotFoundException e) {
        context.startActivity(new Intent(Intent.ACTION_VIEW,
                Uri.parse("http://instagram.com/instagramID")));
    }
}

检查是否安装了facebook

private boolean isAppInstalled(String uri)
{
    PackageManager pm = getPackageManager();
    boolean app_installed = false;
    try
    {
        pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
        app_installed = true;
    }
    catch (PackageManager.NameNotFoundException e)
    {
        app_installed = false;
    }
    return app_installed ;
}

boolean appInstalled = isAppInstalled("com.facebook.katana");

归功于 Find out if app is installed

关于android - 从另一个 Activity (Android) 启动社交媒体应用程序或浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33370832/

相关文章:

java - 在 Canvas 上绘图,平滑缩放并绘制更多内容

android - 如何打开新 Activity 的 WebView 链接?

android - 如何实现像 super 光束一样的wifi direct?

android - 我如何在我的 Android 应用程序中看到完整的 ListView

android - 从电子邮件启动 Android Intent

android - 如何创建 ViewModel 并使用 dagger 2 向其注入(inject)存储库?

android - 如何获取我的 Android 系统上所有 Activity 内核驱动程序的列表?

android - 如何从 ResolveInfo 启动 Intent

java - 使用 onClickListener 时出错( Intent )

java - 如何启动 <provider/> 标签(启动 Shazam 搜索 Activity )