以下为具体代码:
1.这是第一种方法:
String url="mqqwpa://im/chat?chat_type=wpa&uin=123456";
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
直接调用就好,后面可以接上自己的想要打开聊天的qq账号,非常的方便!
2.这是第二种方法(利用工具类):
// 打开QQ对话, 其中Constants.UIN_QQ就指的一个qq账号,eg:992116519
ExchangeUtils.chatQQ(MainActivity.this, Constants.UIN_QQ);
package com.example.nyw.even2048;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
public class ExchangeUtils {
private ExchangeUtils() {
throw new IllegalAccessError("Utility class");
}
/****************
* @param uinQQ 要发起临时对话的QQ号码
* @return 返回true表示呼起手Q成功,返回false表示呼起失败
******************/
public static boolean chatQQ(Context context , String uinQQ) {
Intent intent = new Intent();
intent.setData(Uri.parse("mqqwpa://im/chat?chat_type=wpa&uin=" + uinQQ));
// 此Flag可根据具体产品需要自定义,如设置,则在加群界面按返回,返回手Q主界面,不设置,按返回会返回到呼起产品界面
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
try {
context.startActivity(intent);
return true;
} catch (Exception e) {
// 未安装手Q或安装的版本不支持
e.printStackTrace();
return false;
}
}
/****************
* @param key 由官网生成的key
* @return 返回true表示呼起手Q成功,返回false表示呼起失败
******************/
public static boolean joinQQGroup(Context context , String key) {
Intent intent = new Intent();
intent.setData(Uri.parse("mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26k%3D" + key));
// 此Flag可根据具体产品需要自定义,如设置,则在加群界面按返回,返回手Q主界面,不设置,按返回会返回到呼起产品界面
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
try {
context.startActivity(intent);
return true;
} catch (Exception e) {
// 未安装手Q或安装的版本不支持
e.printStackTrace();
return false;
}
}
}
if (com.sina.weibo.sdk.ApiUtils.validateWeiboSign(context, "com.sina.weibo")) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("sinaweibo://userinfo?uid=" + weiboId)); Intent chooseIntent = Intent.createChooser(intent, "Weibo"); context.startActivity(chooseIntent); } else { NavigateHelper.startWebview(context, "http://weibo.com/u/" + weiboId); }
// 打开支付宝打赏 if (AlipayUtils.hasInstalledAlipayClient(MainActivity.this)) { AlipayUtils.startAlipayClient(MainActivity.this, Constants.KEY_ALIPAY); } else { tip("没有找到支付宝"); }
工具类为:
package com.example.nyw.even2048;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.service.quicksettings.TileService;
import java.net.URISyntaxException;
/*********************************************************************
* Copyright © 2014-2017 zhoujianbin All Rights Reserved.
* Project Name:BKLockGuard
* File Creation Time:2017/07/12 03:08:46
* Class Description: 阿里支付宝工具类
* Comment: 阿里支付宝工具类
********************************************************************/
@SuppressWarnings(“unused”)
public final class AlipayUtils {
// 支付宝包名
private static final String ALIPAY_PACKAGE_NAME = “com.eg.android.AlipayGphone”;
// 旧版支付宝二维码通用 Intent Scheme Url 格式
private static final String INTENT_URL_FORMAT = "intent://platformapi/startapp?saId=10000007&" +
"clientVersion=3.7.0.0718&qrcode=https%3A%2F%2Fqr.alipay.com%2F{urlCode}%3F_s" +
"%3Dweb-other&_t=1472443966571#Intent;" +
"scheme=alipayqr;package=com.eg.android.AlipayGphone;end";
public static final String ALIPAY_SCAN = "10000007";
public static final String ALIPAY_BARCODE = "20000056";
private AlipayUtils() {
throw new IllegalAccessError("Utility class");
}
/**
* 打开转账窗口
* 旧版支付宝二维码方法,需要使用 https://fama.alipay.com/qrcode/index.htm 网站生成的二维码
* 这个方法最好,但在 2016 年 8 月发现新用户可能无法使用
*
* @param activity Parent Activity
* @param urlCode 手动解析二维码获得地址中的参数,例如 https://qr.alipay.com/aehvyvf4taua18zo6e 最后那段
* @return 是否成功调用
*/
public static boolean startAlipayClient(Activity activity, String urlCode) {
return startIntentUrl(activity, INTENT_URL_FORMAT.replace("{urlCode}", urlCode));
}
/**
* 打开 Intent Scheme Url
*
* @param activity Parent Activity
* @param intentFullUrl Intent 跳转地址
* @return 是否成功调用
*/
public static boolean startIntentUrl(Activity activity, String intentFullUrl) {
try {
Intent intent = Intent.parseUri(
intentFullUrl,
Intent.URI_INTENT_SCHEME
);
activity.startActivity(intent);
return true;
} catch (URISyntaxException | ActivityNotFoundException e) {
e.printStackTrace();
return false;
}
}
/**
* 判断支付宝客户端是否已安装,建议调用转账前检查
*
* @param context Context
* @return 支付宝客户端是否已安装
*/
public static boolean hasInstalledAlipayClient(Context context) {
PackageManager pm = context.getPackageManager();
try {
PackageInfo info = pm.getPackageInfo(ALIPAY_PACKAGE_NAME, 0);
return info != null;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return false;
}
}
/**
* 获取支付宝客户端版本名称,作用不大
*
* @param context Context
* @return 版本名称
*/
public static String getAlipayClientVersion(Context context) {
PackageManager pm = context.getPackageManager();
try {
PackageInfo info = pm.getPackageInfo(ALIPAY_PACKAGE_NAME, 0);
return info.versionName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return null;
}
}
/**
* 打开支付宝界面
*
* @param context Context
* @param saId String
* saID:"10000007"打开支付宝扫码界面
* saID:"20000056"打开支付宝付款码界面
* @return 是否成功打开 Activity
*/
public static boolean openAlipayScan(Context context, String saId) {
try {
Uri uri = Uri.parse("alipayqr://platformapi/startapp?saId=" + saId);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
if (context instanceof TileService) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
((TileService) context).startActivityAndCollapse(intent);
}
} else {
context.startActivity(intent);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
// 支付宝打赏二维码key
public static final String KEY_ALIPAY = “FKX023479MNFIKOVRBKH14”;
这个key获取需要用到一个工具,利用二维码转成这个key