# Android 接入教程

# 引入文件到项目中

将提供的 jar 或 aar 文件添加到项目。

# 修改 manifest 配置

在 AndroidManifest.xml 中声明相应的权限以及浏览器所在的 Activity

<!--begin 如果接入高清视频功能需添加的权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.REORDER_TASKS" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<!--end 如果接入高清视频功能需添加的权限 -->

 <!-- webview activity -->
<activity
  android:name="com.tencent.slugsdk.webview.X5WebViewActivity"
  android:exported="false"
  android:configChanges="orientation|screenSize|keyboardHidden|smallestScreenSize|screenLayout"
  android:screenOrientation="sensor"
  android:hardwareAccelerated="true"
  android:windowSoftInputMode="adjustPan"
  android:process=":ingame_inner_webview"
  android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen">
  <meta-data android:name="android.max_aspect" android:value="2.2" />
  <meta-data android:name="notch.config" android:value="portrait|landscape" />
  <meta-data android:name="android.notch_support" android:value="true" />
  <intent-filter>
    <action android:name="com.tencent.slugsdk.webview.X5WebViewActivity" />
    <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
</activity>

 <!-- 微信结构化分享需要中转activity -->
<activity
    android:name="com.tencent.slugsdk.webview.SlugJumpShareActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

# 接入高清视频功能注意事项:

  1. 在 build.gradle 文件中添加
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.aar'])
 }
 defaultConfig {
   ndk {
     abiFilter "armeabi-v7a"
   }
}
repositories {
	flatDir {
		dirs 'libs' //this way we can find the .aar file in libs folder
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
  1. 如果接入高清视频功能,使用时需要从混淆脚本中过滤如下包名:
-keep class com.tencent.qqlive.ck.** {*;}
-keep class com.tencent .qqlive downloadproxy .**
-keep class com.tencent .qqlive .moduleupdate.**
-keep class com.tencent.qqlive. multimedia.multimedia.**
-keep class com.tencent.ads.** {*;}
-keep class com.tencent.omg.** {*;}
-keep class cn.com.iresearch.dau {*;}
-keep class pi.** {*;}
-keep class com.qq.taf.** {*;}
1
2
3
4
5
6
7
8
9

# 拼接用户参数

首先游戏客户端需在微社区首页 URL 上拼接以下参数:

参数名 描述 必须
areaid 账号类型:1(微信),2(QQ)
partition 区服 id,若无则传 0
platid 平台类型:0(iOS),1(Android)
roleid 角色 id
lng 用户当前位置:经度
lat 用户当前位置:纬度

示例一:

首页 URL:https://sy.qq.com/hyrzol/ingame/

拼接后 URL:https://sy.qq.com/hyrzol/ingame/?areaid=1&platid=0&partition=8195&roleid=2306687434798319382

示例二:

首页 URL:https://sy.qq.com/zhuoyao/ingame/?router=moment

拼接后 URL:https://sy.qq.com/zhuoyao/ingame/?router=moment&areaid=2&partition=0&platid=1&roleid=40520350780&lng=113.944527&lat=22.547869

# 调用 Slug SDK

unity 调用请参考 Unity Android 接入文档

import com.tencent.slugsdk.webview.X5WebViewAdapter; //引入浏览器sdk类

/*
*@currentActivity: 当前activity
*@url: 需要打开的url(带用户参数的首页 URL)
*@supportedOrientations:支持横竖屏(1:只支持横屏,2:只支持竖屏,3:横竖屏都支持)
*@qqAppid:设置游戏的QQ Appid(建议设置),设置之后QQ分享的接口就会直接调用QQ互联的接口(无需登录态),否则就会调用MSDK的接口(需要登录态)
*@wxAppid:设置游戏的微信Appid(建议设置,微社区接论坛时涉及到微信委托授权,需要游戏的微信Appid),设置之后微信分享的接口就会直接调用微信开放平台的接口(无需登录态),否则就会调用MSDK的接口(需要登录态)
**/
X5WebViewAdapter.openIngameCommunityByUrl(Activity currentActivity, String url, int supportedOrientations, String qqAppid, String wxAppid)


如果需要从H5页面跳转到游戏某界面的功能,需要传递游戏中转activity类名,可以使用下面的方法:
/*
* @className 从H5页面跳转到游戏的某个界面,如果不需要可以设置为"",H5页面跳转到游戏的某个界面时,会先跳转到游戏的该Activity(即className)再由该Activity作为中转跳转到具体的游戏界面,可*以通过getIntent().getStringExtra("routeInfo")获取跳转的路由信息
* @finishShouldSendMsgToGame 浏览器webview finish时向游戏发送close消息,不需要可以传false,X5WebViewActivity finish时向游戏发送finish消息,需要先设置@className参数
*/
X5WebViewAdapter.openIngameCommunityByUrl(Activity currentActivity, String url, int supportedOrientations, String qqAppid, String wxAppid, String className, boolean finishShouldSendMsgToGame)

如果需要设置webview背景颜色,可以使用下面的方法,默认webview是透明的背景
/*
* @webviewBackground 背景颜色,比如:#ff3300
*/
openIngameCommunityByUrl(Activity currentActivity, String url, int supportedOrientations, String qqAppid, String wxAppid, String className, boolean finishShouldSendMsgToGame, String webviewBackground)

如果需要使用广点通播放广告,需添加广点通appid
/*
*@gdtAppid 广点通appid
*/
openIngameCommunityByUrl(Activity currentActivity, String url, int supportedOrientations, String qqAppid, String wxAppid, String className, boolean finishShouldSendMsgToGame, String webviewBackground, String gdtAppid)

//使用资源预加载功能,如果需要使用此功能一般在application或游戏大厅调用,需找开发人员提前准备预加载配置文件地址
X5WebViewOfflineCache.initX5webViewCacheProcess(Context context, String configUrl); //预加载离线资源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 从微社区跳转到游戏界面例子

# 游戏新建一个中转的 Activity,类似于:

package com.tencent.mobilegame;

public class IngameJumpActivity extends Activity
{
	@Override
    protected void onCreate(Bundle savedInstanceState)
	{
		String routeInfo = getIntent().getStringExtra("routeInfo"); /*获取H5页面传过来的参数,跳转到游戏界面*/
	}
}
1
2
3
4
5
6
7
8
9
10

# 在 AndroidManifest.xml 中配置:

<activity
	android:name="com.tencent.mobilegame.IngameJumpActivity"
	android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"
	android:screenOrientation="landscape">
</activity>
1
2
3
4
5

# 接入微社区时传递 className

...
intent.putExtra("className", "com.tencent.mobilegame.IngameJumpActivity");
...
startActivity(intent);
1
2
3
4