Android 創(chuàng)建QQ臨時(shí)會(huì)話,報(bào)“對(duì)方?jīng)]有開(kāi)通在線咨詢,無(wú)法發(fā)起臨時(shí)會(huì)話”解決方案

qq群:614530228

今天在測(cè)試app內(nèi)創(chuàng)建QQ臨時(shí)會(huì)話時(shí),發(fā)現(xiàn)不是QQ好友發(fā)送消息失敗,提示“對(duì)方?jīng)]有開(kāi)通在線咨詢,無(wú)法發(fā)起臨時(shí)會(huì)話”錯(cuò)誤,根據(jù)被創(chuàng)建會(huì)話的QQ類型分為兩種。

對(duì)QQ的操作封裝了如下工具類

public final class QQUtil {

    /**
     * 檢查是否安裝了app
     *
     * @param context     上下文對(duì)象
     * @param packageName app包名
     * @return true 已安裝 false 未安裝
     */
    public static boolean installedApp(Context context, String packageName) {
        if (TextUtils.isEmpty(packageName)) {
            return false;
        }
        PackageInfo packageInfo;
        try {
            packageInfo = context.getPackageManager().getPackageInfo(packageName, 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
            packageInfo = null;
        }
        return null == packageInfo ? false : true;
    }

    /**
     * 打開(kāi)企業(yè)qq,創(chuàng)建臨時(shí)會(huì)話
     *
     * @param context   上下文對(duì)象
     * @param qidianUrl 企點(diǎn)url 例如:http://q.url.cn/xxxx?_type=wpa&qidian=true
     */
    public static void openEnterpriseQQ(Context context, String qidianUrl) {
        Intent intent = new Intent(context, QQWebViewActivity.class);
        intent.putExtra("url", qidianUrl);
        context.startActivity(intent);
    }

    /**
     * 打開(kāi)個(gè)人qq,創(chuàng)建臨時(shí)會(huì)話
     *
     * @param context 上下文對(duì)象
     * @param qq      qq號(hào)碼,該qq號(hào)碼必須開(kāi)通QQ推廣,否則不能創(chuàng)建臨時(shí)會(huì)話 @url http://shang.qq.com/v3/index.html (開(kāi)通方式,點(diǎn)擊推廣工具-> 登錄 -> 立即免費(fèi)開(kāi)通)
     */
    public static void openPersonalQQ(Context context, String qq) {
        context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("mqqwpa://im/chat?chat_type=wpa&uin=" + qq)));
    }
}
  • 企業(yè)QQ
if (QQUtil.installedApp(this, "com.tencent.mobileqq") || QQUtil.installedApp(this, "com.tencent.tim")) {
    // 此處url填寫自己公司企點(diǎn)地址
    QQUtil.openEnterpriseQQ(this, "http://q.url.cn/xxx?_type=wpa&qidian=true");
}
  • 個(gè)人QQ
if (QQUtil.installedApp(this, "com.tencent.mobileqq") || QQUtil.installedApp(this, "com.tencent.tim")) {
    QQUtil.openPersonalQQ(this,"qq號(hào)碼");
}

QQwebViewActivity.class

public class QQWebViewActivity extends AppCompatActivity {

    private WebView webView;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_qq_webview);
        webView = findViewById(R.id.webView);
        Intent intent = getIntent();
        if (null != intent) {
            String url = intent.getStringExtra("url");
            webView.loadUrl(url);
            //支持App內(nèi)部javascript交互
            webView.getSettings().setJavaScriptEnabled(true);
            //自適應(yīng)屏幕
            webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
            //設(shè)置可以支持縮放
            webView.getSettings().setSupportZoom(false);
            //擴(kuò)大比例的縮放
            webView.getSettings().setUseWideViewPort(false);
            //設(shè)置是否出現(xiàn)縮放工具
            webView.getSettings().setBuiltInZoomControls(false);
            webView.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    if (url.startsWith("mqqwpa")) {
                        Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                        in.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        in.setAction(Intent.ACTION_VIEW);
                        startActivity(in);
                    } else {
                        view.loadUrl(url);
                    }
                    return true;
                }

                @Nullable
                @Override
                public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
                    return null;
                }

                @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                }
            });
        }
    }

    @Override
    protected void onStop() {
        super.onStop();
        finish();
    }
}

如果您有更好的解決方案,歡迎反饋給我。

---The end---

?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 1、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明AI閱讀 16,236評(píng)論 3 119
  • 點(diǎn)擊查看原文 Web SDK 開(kāi)發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 14,447評(píng)論 0 15
  • 我與女友的記錄本閱讀 248評(píng)論 0 1
  • “教練,現(xiàn)在有時(shí)間嗎?”教練稍稍遲疑了一下說(shuō)“嗯……有時(shí)間,你來(lái)吧?!薄昂美?,我馬上就去?!币粋€(gè)月沒(méi)打球了,...
    行路難_閱讀 261評(píng)論 0 3
  • 主持;朱文君。用語(yǔ)文做教育的教育工作者。全人課程。開(kāi)發(fā)教育戲劇。把教育戲劇引入教師視野的第一所機(jī)構(gòu)。專業(yè)戲劇老師。...
    風(fēng)清揚(yáng)892閱讀 277評(píng)論 0 0

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