Android調(diào)起第三方社交平臺(tái),F(xiàn)acebook,Twitter,Youtube,Instagram

需求:App內(nèi)調(diào)起社交平臺(tái)的“官方賬號(hào)頁面”,如果用戶安裝有對(duì)應(yīng)社交App,直接調(diào)起;否則則通過瀏覽器方式打開網(wǎng)頁。

Facebook,Twitter,Youtube,Instagram

  /**
     * 跳轉(zhuǎn) Facebook
     * @param context 上下文
     * @return 跳轉(zhuǎn) intent
     */
    public static Intent newFacebookProfileIntent(Context context) {
        PackageManager packageManager = context.getPackageManager();
        Intent intent = new Intent(Intent.ACTION_VIEW);
        try {
            int versionCode = packageManager.getPackageInfo("com.facebook.katana", 0).versionCode;
            if (versionCode >= 3002850) { // newer versions of fb app
                intent.setData(Uri.parse("fb://facewebmodal/f?href=https://www.facebook.com/用戶名"));
            } else { // older versions of fb app
                intent.setData(Uri.parse("fb://page/用戶名"));
            }

            // 部分機(jī)型無法調(diào)起,facebook,再次判斷,失敗則瀏覽器方式顯示
            if (intent.resolveActivity(context.getPackageManager()) != null) {
                return intent;
            } else {
                intent.setData(Uri.parse("https://www.facebook.com/用戶名"));
                return intent; // normal web url
            }

        } catch (PackageManager.NameNotFoundException e) {
            intent.setData(Uri.parse("https://www.facebook.com/用戶名"));
            return intent; // normal web url
        }
    }

    /**
     * 跳轉(zhuǎn) Twitter
     * @param context 上下文
     * @return 跳轉(zhuǎn) intent
     */
    public static Intent newTwitterProfileIntent(Context context) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        try {
            if (context.getPackageManager().getPackageInfo("com.twitter.android", 0) != null) {
                // 推特用戶id(純數(shù)字),id獲取方法:(http://gettwitterid.com/)
                intent.setData(Uri.parse("twitter://user?user_id=推特用戶id"));
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                return intent;
            }
        } catch (PackageManager.NameNotFoundException ignored) {
        }
        intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.twitter.com/用戶名"));
        return intent;
    }

    /**
     * 跳轉(zhuǎn) Youtube
     * @param context 上下文
     * @return 跳轉(zhuǎn) intent
     */
    public static Intent newYoutubeProfileIntent(Context context) {
        Intent intent = new Intent(Intent.ACTION_VIEW);

        // 瀏覽器地址
        String URL_YOUTUBE = "https://www.youtube.com/channel/用戶channel ID";
        // app 內(nèi)Action
        String URL_YOUTUBE_INAPP = "vnd.youtube.com/channel/用戶channel ID";

        intent.setData(Uri.parse(URL_YOUTUBE_INAPP));

        if (intent.resolveActivity(context.getPackageManager()) != null) {
            return intent;
        } else {
            intent.setData(Uri.parse(URL_YOUTUBE));
            return intent;
        }
    }

    /**
     * Instagram
     * @param context 上下文
     * @return intent
     */
    public static Intent newInstagramProfileIntent(Context context) {
        PackageManager packageManager = context.getPackageManager();
        Intent intent = new Intent(Intent.ACTION_VIEW);
        try {
            if (packageManager.getPackageInfo("com.instagram.android", 0) != null) {
                intent.setData(Uri.parse("http://instagram.com/_u/用戶名"));
                intent.setPackage("com.instagram.android");
                return intent;
            }
        } catch (Exception ignored) {
        }
        intent.setData(Uri.parse("http://www.instagram.com/用戶名"));
        return intent;
    }

使用

  Intent intent = newFacebookProfileIntent(mContext);
  // 判斷是否可用,防止連瀏覽器都沒有的用戶觸發(fā)崩潰                
  if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
  }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容