您的位置:首页 > 移动开发

App跳转到与手机版QQ公众服务号聊天界面会话异常

2018-01-18 10:20 253 查看
最近在项目中集成一个智能客服的SDK,实现App的智能咨询,应需求抛弃原生的转人工(即第三方客服平台的人工服务应该要收费什么的),改为直接转到公司公众号,实现微信、网站、Android的统一。

错误描述

虽然跳转到了QQ,但并没有显示出QQ号码对应的公众号,而是一个独立的普通QQ,发送消息失败。





实现代码

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isQQClientAvailable(MainActivity.this)){
String url = "mqqwpa://im/chat?chat_type=crm&uin=800095555&version=1&src_type=web&web_src=http:://wpa.b.qq.com";
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
}else{
Toast.makeText(MainActivity.this, "您的手机暂未安装QQ客户端", Toast.LENGTH_SHORT).show();
}
}
});
}
/**
* 判断qq是否可用
* @param context
* @return
*/
public static boolean isQQClientAvailable(Context context) {
final PackageManager packageManager = context.getPackageManager();
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
if (pn.equals("com.tencent.mobileqq")) {
return true;
}

4000
}
}
return false;
}


实现思路:对应的URL可以在腾讯开发平台查看,点击跳转到QQ。

问题原因:我是百度的,说的不对请指正,从app请求某些公众号跳转到QQ客户端,UID用户身份证明(User Identification)会发生变化,与对应的QQ号码不一致

参考博客:http://blog.csdn.net/jamy2015/article/details/51188509

我用某些公众号 是因为我使用的是800开头的,但还是发生了这种错误。

解决办法

既然知道是因为UID发生了变化,我们就应该找到正确的UID再来请求

参考博客:http://blog.csdn.net/jyqj123/article/details/51171122

代码实现

webView = (WebView) findViewById(R.id.webview);
webView.loadUrl("http://wpa.b.qq.com/cgi/wpa.php?ln=2&uin=4008205555");
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
//设置可自由缩放网页
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
Log.i("TTT", url);
return true;
}
});


得到URL



这时候我们把原来的UID换成URL中的UID,再次实现跳转。(记住网络权限的添加)

最终效果图



bingo!!!填了一小坑,记录一下

最后附上所有代码

import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.Toast;

import java.util.List;

public class MainActivity extends AppCompatActivity {
private Button button;
private WebView webView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
webView = (WebView) findViewById(R.id.webview); webView.loadUrl("http://wpa.b.qq.com/cgi/wpa.php?ln=2&uin=4008205555"); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); //设置可自由缩放网页 webView.getSettings().setSupportZoom(true); webView.getSettings().setBuiltInZoomControls(true); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); Log.i("TTT", url); return true; } });
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isQQClientAvailable(MainActivity.this)){
String url = "mqqwpa://im/chat?chat_type=crm&uin=800095555&version=1&src_type=web&web_src=http:://wpa.b.qq.com";
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
}else{
Toast.makeText(MainActivity.this, "您的手机暂未安装QQ客户端", Toast.LENGTH_SHORT).show();
}
}
});
}
/**
* 判断qq是否可用
* @param context
* @return
*/
public static boolean isQQClientAvailable(Context context) {
final PackageManager packageManager = context.getPackageManager();
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
if (pn.equals("com.tencent.mobileqq")) {
return true;
}
}
}
return false;
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: