集成vasdolly
This commit is contained in:
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
|
||||
apply plugin: 'kotlin-android'
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
compileSdkVersion 30
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
@@ -19,7 +19,7 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
buildToolsVersion = '28.0.3'
|
||||
buildToolsVersion = '30.0.3'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
@@ -1,124 +0,0 @@
|
||||
/**
|
||||
* *************************************
|
||||
* android 资源混淆脚本
|
||||
***************************************
|
||||
*/
|
||||
apply plugin: 'AndResGuard'
|
||||
|
||||
|
||||
andResGuard {
|
||||
mappingFile = file("./resource_mapping.txt")
|
||||
// mappingFile = null
|
||||
// 当你使用v2签名的时候,7zip压缩是无法生效的。
|
||||
use7zip = false
|
||||
useSign = true
|
||||
// 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字
|
||||
keepRoot = false
|
||||
whiteList = [
|
||||
// for your icon
|
||||
"R.mipmap.app_logo",
|
||||
// for fabric
|
||||
"R.string.com.crashlytics.*",
|
||||
//sharesdk
|
||||
"R.string.ssdk_*",
|
||||
"R.string.smssdk_*",
|
||||
"R.layout.ssdk_*",
|
||||
"R.drawable.ssdk_*",
|
||||
"R.mipmap.ssdk_*",
|
||||
"R.anim.ssdk_*",
|
||||
"R.color.ssdk_*",
|
||||
"R.style.ssdk_*",
|
||||
"R.id.ssdk_*",
|
||||
//ktv
|
||||
"R.id.sb_accompany_voice",
|
||||
"R.id.tv_accompany_voice",
|
||||
"R.id.sb_person_voice",
|
||||
"R.id.tv_person_voice",
|
||||
"R.id.tv_change_audio",
|
||||
"R.id.iv_play_or_pause",
|
||||
"R.id.cv_people_sound",
|
||||
"R.id.cv_accompany_sound",
|
||||
"R.id.layout_song_progress",
|
||||
// for google-services
|
||||
"R.string.google_app_id",
|
||||
"R.string.gcm_defaultSenderId",
|
||||
"R.string.default_web_client_id",
|
||||
"R.string.ga_trackingId",
|
||||
"R.string.firebase_database_url",
|
||||
"R.string.google_api_key",
|
||||
"R.string.google_crash_reporting_api_key",
|
||||
//for aliyun RPSDK
|
||||
"R.drawable.yw_1222_*",
|
||||
//for voice match
|
||||
"R.id.iv_group_like",
|
||||
"R.id.iv_group_dont_like",
|
||||
"R.id.fl_group_content",
|
||||
"R.id.svga_group_voice_like",
|
||||
//for yidun
|
||||
"R.drawable.bg_quick_pass*",
|
||||
"R.drawable.quick_pass_*",
|
||||
//for yidun liantong
|
||||
"R.layout.activity_oauth",
|
||||
"R.id.oauth_back",
|
||||
"R.id.is_agree",
|
||||
"R.id.oauth_title",
|
||||
"R.id.app_name",
|
||||
"R.id.oauth_mobile_et",
|
||||
"R.id.oauth_login",
|
||||
"R.id.service_and_privacy",
|
||||
"R.id.authorize_app",
|
||||
"R.id.brand",
|
||||
"R.id.navigation_bar_line",
|
||||
"R.id.oauth_logo",
|
||||
"R.id.navigation_bar",
|
||||
"R.id.protocol",
|
||||
"R.id.oauth_content",
|
||||
"R.id.other_login",
|
||||
"R.id.login_before_text",
|
||||
|
||||
"R.layout.oauth_loading_dialog",
|
||||
"R.id.oauth_loading_dialog_txt",
|
||||
"R.id.loading_parent",
|
||||
"R.id.oauth_loading_dialog_img",
|
||||
//for yidongka
|
||||
"R.anim.umcsdk_*",
|
||||
"R.drawable.dialog_loading",
|
||||
"R.drawable.umcsdk_*",
|
||||
"R.drawable.loading",
|
||||
"R.string.umcsdk_*",
|
||||
//华为推送
|
||||
"R.string.hms*",
|
||||
"R.string.connect_server_fail_prompt_toast",
|
||||
"R.string.getting_message_fail_prompt_toast",
|
||||
"R.string.no_available_network_prompt_toast",
|
||||
"R.string.third_app_*",
|
||||
"R.string.upsdk_*",
|
||||
"R.layout.hms*",
|
||||
"R.layout.upsdk_*",
|
||||
"R.drawable.upsdk*",
|
||||
"R.color.upsdk*",
|
||||
"R.dimen.upsdk*",
|
||||
"R.style.upsdk*",
|
||||
"R.string.agc*"
|
||||
]
|
||||
compressFilePattern = [
|
||||
"*.png",
|
||||
"*.jpg",
|
||||
"*.jpeg",
|
||||
"*.gif",
|
||||
"resources.arsc"
|
||||
]
|
||||
sevenzip {
|
||||
artifact = 'com.tencent.mm:SevenZip:1.2.15'
|
||||
//path = "/usr/local/bin/7za"
|
||||
}
|
||||
|
||||
// erban-${variant.buildType.name}-${defaultConfig.versionName}_${defaultConfig.versionCode}-${releaseTime()}-${variant.productFlavors[0].name}.apk".toLowerCase())
|
||||
// sourceApk = "${project.rootDir}/耳伴-${buildTypes}-${defaultConfig.versionName}_${defaultConfig.versionCode}-${releaseTime()}.apk".toLowerCase()
|
||||
|
||||
/**
|
||||
* 可选: 指定v1签名时生成jar文件的摘要算法
|
||||
* 默认值为“SHA-1”
|
||||
**/
|
||||
// digestalg = "SHA-256"
|
||||
}
|
@@ -1,14 +1,13 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
// android res guard 资源混淆脚本
|
||||
apply from: 'and_res_guard.gradle'
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
apply plugin: 'com.huawei.agconnect'
|
||||
apply plugin: 'com.tencent.vasdolly'
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
compileSdkVersion 30
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.mango.yinyou"
|
||||
@@ -44,11 +43,6 @@ android {
|
||||
disable 'ExtraTranslation'
|
||||
}
|
||||
|
||||
dexOptions {
|
||||
javaMaxHeapSize "1g"
|
||||
jumboMode = true
|
||||
}
|
||||
|
||||
dataBinding {
|
||||
enabled = true
|
||||
}
|
||||
@@ -145,18 +139,6 @@ android {
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
|
||||
staging {
|
||||
buildConfigField "String", "BASE_URL", "\"https://api.lecheng163.com/\""
|
||||
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
|
||||
buildConfigField "String", "BASE_URL_STAGING", "BASE_URL"
|
||||
buildConfigField "String", "BASE_URL_RELEASE", "BASE_URL"
|
||||
minifyEnabled true
|
||||
shrinkResources true
|
||||
signingConfig signingConfigs.v2
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
matchingFallbacks = ['staging', 'release']
|
||||
}
|
||||
|
||||
debug {
|
||||
buildConfigField "String", "BASE_URL", "\"http://api.uat.lecheng163.com/\""
|
||||
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
|
||||
@@ -179,17 +161,11 @@ android {
|
||||
jvmTarget = "1.8"
|
||||
}
|
||||
|
||||
productFlavors {
|
||||
accompany {
|
||||
dimension 'default'
|
||||
manifestPlaceholders = [CHANNEL_VALUE: channel]
|
||||
}
|
||||
}
|
||||
buildToolsVersion = '28.0.3'
|
||||
buildToolsVersion = '30.0.3'
|
||||
|
||||
}
|
||||
|
||||
def Lombok = "1.16.20"
|
||||
def Lombok = "1.18.10"
|
||||
def useFlutterAar = Boolean.parseBoolean(with_flutter_aar)
|
||||
|
||||
dependencies {
|
||||
@@ -217,8 +193,8 @@ dependencies {
|
||||
api "com.github.yyued:SVGAPlayer-Android:2.6.1"
|
||||
implementation "com.orhanobut:logger:2.2.0"
|
||||
api "com.ms-square:expandableTextView:0.1.4"
|
||||
api "com.jakewharton:butterknife:10.1.0"
|
||||
annotationProcessor "com.jakewharton:butterknife-compiler:10.1.0"
|
||||
api "com.jakewharton:butterknife:10.2.3"
|
||||
annotationProcessor "com.jakewharton:butterknife-compiler:10.2.3"
|
||||
implementation "com.llew.huawei:verifier:1.0.3"
|
||||
annotationProcessor 'androidx.annotation:annotation:1.1.0'
|
||||
|
||||
@@ -289,6 +265,8 @@ dependencies {
|
||||
implementation project(path: ':flutter')
|
||||
implementation project(path: ':flutter_boost')
|
||||
}
|
||||
|
||||
api 'com.tencent.vasdolly:helper:3.0.3'
|
||||
}
|
||||
|
||||
String storageUrl = System.env.FLUTTER_STORAGE_BASE_URL ?: "https://storage.googleapis.com"
|
||||
@@ -307,3 +285,16 @@ repositories {
|
||||
url "$storageUrl/download.flutter.io"
|
||||
}
|
||||
}
|
||||
|
||||
channel{
|
||||
//多渠道包的输出目录,默认为new File(project.buildDir,"channel")
|
||||
outputDir = new File(project.buildDir,"channelapk")
|
||||
//多渠道包的命名规则,默认为:${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}-${buildTime}
|
||||
apkNameFormat ='${appName}-${buildType}-${flavorName}-${versionName}-${buildTime}'
|
||||
//快速模式:生成渠道包时不进行校验(速度可以提升10倍以上,默认为false)
|
||||
fastMode = false
|
||||
//buildTime的时间格式,默认格式:yyyyMMdd-HHmmss
|
||||
buildTimeDateFormat = 'MMddHHmm'
|
||||
//低内存模式(仅针对V2签名,默认为false):只把签名块、中央目录和EOCD读取到内存,不把最大头的内容块读取到内存,在手机上合成APK时,可以使用该模式
|
||||
lowMemory = false
|
||||
}
|
||||
|
@@ -91,10 +91,6 @@
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:replace="android:name,android:allowBackup">
|
||||
|
||||
<meta-data
|
||||
android:name="CHANNEL"
|
||||
android:value="${CHANNEL_VALUE}" />
|
||||
|
||||
<!-- 刘海屏适配 begin -->
|
||||
<!-- 小米 -->
|
||||
<meta-data
|
||||
|
@@ -65,6 +65,7 @@ import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
|
||||
import com.tencent.bugly.Bugly;
|
||||
import com.tencent.bugly.beta.Beta;
|
||||
import com.tencent.bugly.crashreport.CrashReport;
|
||||
import com.tencent.vasdolly.helper.ChannelReaderUtil;
|
||||
import com.umeng.analytics.MobclickAgent;
|
||||
import com.umeng.commonsdk.UMConfigure;
|
||||
import com.yizhuan.erban.BuildConfig;
|
||||
@@ -219,12 +220,7 @@ public class XChatApplication extends Application {
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
String channel = "";
|
||||
try {
|
||||
ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
|
||||
channel = appInfo.metaData.getString("CHANNEL");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
channel = ChannelReaderUtil.getChannel(instance);
|
||||
if (TextUtils.isEmpty(channel)) {
|
||||
channel = "official";
|
||||
}
|
||||
|
@@ -25,7 +25,7 @@ class GiveGoldSuccessActivity : BaseActivity() {
|
||||
setContentView(R.layout.activity_give_gold_success)
|
||||
initTitleBar("转赠到寻梦帐号")
|
||||
tvNickname.text = "转赠给:${intent.getStringExtra("nickname")}"
|
||||
tvGold.text = "${intent.getStringExtra("gold").toInt()}钻石"
|
||||
tvGold.text = "${intent.getStringExtra("gold")?.toInt()}钻石"
|
||||
tvSure.setOnClickListener { finish() }
|
||||
}
|
||||
|
||||
|
@@ -10,6 +10,8 @@ import android.webkit.JavascriptInterface;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.orhanobut.logger.Logger;
|
||||
import com.tencent.vasdolly.helper.ChannelReaderUtil;
|
||||
import com.yizhuan.erban.application.XChatApplication;
|
||||
import com.yizhuan.xchat_android_constants.XChatConstants;
|
||||
import com.yizhuan.xchat_android_core.auth.AuthModel;
|
||||
import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil;
|
||||
@@ -89,13 +91,8 @@ public class SimpleJSInterface {
|
||||
*/
|
||||
@JavascriptInterface
|
||||
public String getChannel() {
|
||||
String channel = "";
|
||||
try {
|
||||
ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
|
||||
channel = appInfo.metaData.getString("CHANNEL");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
String channel;
|
||||
channel = ChannelReaderUtil.getChannel(XChatApplication.instance());
|
||||
if (TextUtils.isEmpty(channel)) {
|
||||
channel = "official";
|
||||
}
|
||||
|
16
build.gradle
16
build.gradle
@@ -13,19 +13,19 @@ buildscript {
|
||||
maven { url 'https://jitpack.io' }
|
||||
google()
|
||||
mavenCentral()
|
||||
maven {url 'http://developer.huawei.com/repo/'}
|
||||
maven { url "http://mvn.mob.com/android" }
|
||||
maven {url 'https://developer.huawei.com/repo/'}
|
||||
maven { url "https://mvn.mob.com/android" }
|
||||
maven { url 'https://repo1.maven.org/maven2/' }
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.6.2'
|
||||
classpath 'com.android.tools.build:gradle:4.2.2'
|
||||
//realm 数据库插件
|
||||
classpath "io.realm:realm-gradle-plugin:5.3.0"
|
||||
// android 资源混淆插件
|
||||
classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.16'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath 'com.huawei.agconnect:agcp:1.3.1.300'
|
||||
classpath 'com.huawei.agconnect:agcp:1.6.0.300'
|
||||
classpath 'com.tencent.vasdolly:plugin:3.0.3'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,11 +35,11 @@ allprojects {
|
||||
mavenCentral()
|
||||
maven { url 'https://maven.aliyun.com/repository/public' }
|
||||
maven { url 'https://jitpack.io' }
|
||||
maven { url "http://mvn.mob.com/android" }
|
||||
maven { url "https://mvn.mob.com/android" }
|
||||
maven { url 'https://repo1.maven.org/maven2/' }
|
||||
maven { url 'http://developer.huawei.com/repo/' }
|
||||
maven { url 'https://developer.huawei.com/repo/' }
|
||||
maven(){
|
||||
url 'http://sdk-repository.wujiehh.com:8081/repository/WJHD/'
|
||||
url 'https://sdk-repository.wujiehh.com/repository/WJHD/'
|
||||
credentials {
|
||||
username = 'wjhd'
|
||||
password = 'WV9#i%C3e@p$jtPyU*ds^VUp317koE1Y'
|
||||
|
22
channel.txt
Normal file
22
channel.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
official
|
||||
yingyongbao
|
||||
vivo
|
||||
oppo
|
||||
xiaomi
|
||||
xingqiu0
|
||||
xingqiu1
|
||||
xingqiu2
|
||||
xingqiu3
|
||||
xingqiu4
|
||||
xingqiu5
|
||||
xingqiu6
|
||||
xingqiu7
|
||||
xingqiu8
|
||||
xingqiu9
|
||||
xingqiu10
|
||||
yingyongbao01
|
||||
yingyongbao02
|
||||
yingyongbao03
|
||||
gongzhonghao
|
||||
toutiao
|
||||
kuaishou-xxl-01
|
@@ -4,7 +4,7 @@ apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
compileSdkVersion 30
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 29
|
||||
@@ -50,12 +50,12 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
buildToolsVersion = '28.0.3'
|
||||
buildToolsVersion = '30.0.3'
|
||||
|
||||
}
|
||||
|
||||
def loggerVersion = "2.2.0"
|
||||
def Lombok = "1.16.20"
|
||||
def Lombok = "1.18.10"
|
||||
|
||||
dependencies {
|
||||
api fileTree(dir: 'libs', include: ['*.jar'])
|
||||
|
@@ -12,7 +12,6 @@ org.gradle.daemon=true
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||
# org.gradle.parallel=true
|
||||
android.enableD8=true
|
||||
android.injected.testOnly=false
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
@@ -23,3 +22,5 @@ with_flutter_aar=true
|
||||
with_jenkins=false
|
||||
|
||||
channel=official
|
||||
|
||||
channel_file=channel.txt
|
||||
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
|
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
|
||||
apply plugin: 'kotlin-android'
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
compileSdkVersion 30
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 29
|
||||
@@ -31,7 +31,7 @@ android {
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
buildToolsVersion = '28.0.3'
|
||||
buildToolsVersion = '30.0.3'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
@@ -3,8 +3,8 @@ apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
buildToolsVersion '28.0.3'
|
||||
compileSdkVersion 30
|
||||
buildToolsVersion '30.0.3'
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
|
Binary file not shown.
@@ -1,84 +0,0 @@
|
||||
package com.netease.nim.uikit.business.robot.parser.elements.group;
|
||||
|
||||
import com.netease.nim.uikit.business.robot.parser.elements.base.ElementGroup;
|
||||
import com.netease.nim.uikit.business.robot.parser.elements.base.ElementTag;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.json.XML;
|
||||
|
||||
/**
|
||||
* 根元素,解析器入口
|
||||
* <p>
|
||||
* Created by huangjun on 2017/6/22.
|
||||
*/
|
||||
|
||||
public class TemplateRoot extends ElementGroup<LinearLayout> {
|
||||
// attr
|
||||
private String templateId; // 模板编号
|
||||
private String globalParams; // 全局变量
|
||||
private String version; // 协议版本号
|
||||
|
||||
// log
|
||||
private String jsonString; // xml2JsonString
|
||||
|
||||
public TemplateRoot(String xml) {
|
||||
try {
|
||||
if (!xml.contains(ElementTag.XML_HEADER_PREFIX)) {
|
||||
xml = ElementTag.XML_HEADER + xml;
|
||||
}
|
||||
JSONObject rootJsonObject = XML.toJSONObject(xml);
|
||||
parse(rootJsonObject);
|
||||
jsonString = rootJsonObject.toString();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(JSONObject rootJsonObject) throws JSONException {
|
||||
JSONObject jsonObject = rootJsonObject.getJSONObject(ElementTag.ELEMENT_LABEL_TEMPLATE);
|
||||
|
||||
templateId = jsonObject.optString(ElementTag.ELEMENT_ATTRIBUTE_ID);
|
||||
globalParams = jsonObject.optString(ElementTag.ELEMENT_ATTRIBUTE_PARAMS);
|
||||
version = jsonObject.optString(ElementTag.ELEMENT_ATTRIBUTE_VERSION);
|
||||
|
||||
if (jsonObject.has(ElementTag.ELEMENT_LABEL_LINEAR_LAYOUT)) {
|
||||
|
||||
JSONObject object = jsonObject.optJSONObject(ElementTag.ELEMENT_LABEL_LINEAR_LAYOUT);
|
||||
if (object != null) {
|
||||
LinearLayout linearLayout = new LinearLayout();
|
||||
linearLayout.parse(object);
|
||||
addElement(linearLayout);
|
||||
} else {
|
||||
JSONArray array = jsonObject.optJSONArray(ElementTag.ELEMENT_LABEL_LINEAR_LAYOUT);
|
||||
if (array != null && array.length() > 0) {
|
||||
for (int i = 0; i < array.length(); i++) {
|
||||
JSONObject obj = array.getJSONObject(i);
|
||||
LinearLayout linearLayout = new LinearLayout();
|
||||
linearLayout.parse(obj);
|
||||
addElement(linearLayout);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getTemplateId() {
|
||||
return templateId;
|
||||
}
|
||||
|
||||
public String getGlobalParams() {
|
||||
return globalParams;
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return jsonString;
|
||||
}
|
||||
}
|
@@ -13,7 +13,6 @@ import com.netease.nim.uikit.business.robot.parser.elements.base.Element;
|
||||
import com.netease.nim.uikit.business.robot.parser.elements.element.ImageElement;
|
||||
import com.netease.nim.uikit.business.robot.parser.elements.element.TextElement;
|
||||
import com.netease.nim.uikit.business.robot.parser.elements.group.LinkElement;
|
||||
import com.netease.nim.uikit.business.robot.parser.elements.group.TemplateRoot;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -66,7 +65,7 @@ public class RobotContentLinearLayout extends LinearLayout {
|
||||
for (RobotBotContent bot : botContents) {
|
||||
if (RobotResponseContent.RES_TYPE_BOT_COMP.equals(bot.getType())) {
|
||||
// 复合
|
||||
convertTemplateToViews(new TemplateRoot(bot.getBotMsg()), robot);
|
||||
// convertTemplateToViews(new TemplateRoot(bot.getBotMsg()), robot);
|
||||
} else if (RobotResponseContent.RES_TYPE_BOT_TEXT.equals(bot.getType())
|
||||
|| RobotResponseContent.RES_TYPE_BOT_QUICK.equals(bot.getType())) {
|
||||
// 文本
|
||||
@@ -85,38 +84,6 @@ public class RobotContentLinearLayout extends LinearLayout {
|
||||
bindChildContentViews();
|
||||
}
|
||||
|
||||
private void convertTemplateToViews(final TemplateRoot template, final ClickableChildView robot) {
|
||||
List<com.netease.nim.uikit.business.robot.parser.elements.group.LinearLayout> robotLinearLayouts = template.getElements();
|
||||
if (robotLinearLayouts == null) {
|
||||
return;
|
||||
}
|
||||
for (com.netease.nim.uikit.business.robot.parser.elements.group.LinearLayout robotLinearLayout : robotLinearLayouts) {
|
||||
int size = robotLinearLayout.getElements().size();
|
||||
if (size <= 0) {
|
||||
continue;
|
||||
}
|
||||
for (int i = 0; i < size; i++) {
|
||||
RobotViewBase view;
|
||||
Element e = robotLinearLayout.getElements().get(i);
|
||||
if (e instanceof TextElement) {
|
||||
view = RobotViewFactory.createRobotTextView(getContext(), (TextElement) e, null);
|
||||
} else if (e instanceof ImageElement) {
|
||||
view = RobotViewFactory.createRobotImageView(getContext(), (ImageElement) e, null);
|
||||
} else if (e instanceof LinkElement) {
|
||||
view = RobotViewFactory.createRobotLinkView(getContext(), (LinkElement) e);
|
||||
if (linkViewStyle != null) {
|
||||
((RobotLinkView) view).setLinkViewStyle(linkViewStyle);
|
||||
}
|
||||
view.setId(GenerateViewID.generateViewId());
|
||||
robot.addClickableChildView(RobotLinkView.class, view.getId());
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
robotViews.add(view);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void bindChildContentViews() {
|
||||
removeAllViews();
|
||||
|
@@ -1,197 +1,14 @@
|
||||
package com.netease.nim.uikit.common.util.sys;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.net.Uri;
|
||||
import android.net.wifi.WifiInfo;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.Build;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.netease.nim.uikit.common.util.log.LogUtil;
|
||||
|
||||
public class NetworkUtil {
|
||||
|
||||
public static final String TAG = "NetworkUtil";
|
||||
|
||||
public static final byte CURRENT_NETWORK_TYPE_NONE = 0;
|
||||
|
||||
/*
|
||||
* 根据APN区分网络类型
|
||||
*/
|
||||
public static final byte CURRENT_NETWORK_TYPE_WIFI = 1;// wifi
|
||||
|
||||
public static final byte CURRENT_NETWORK_TYPE_CTNET = 2;// ctnet
|
||||
|
||||
public static final byte CURRENT_NETWORK_TYPE_CTWAP = 3;// ctwap
|
||||
|
||||
public static final byte CURRENT_NETWORK_TYPE_CMWAP = 4;// cmwap
|
||||
|
||||
public static final byte CURRENT_NETWORK_TYPE_UNIWAP = 5;// uniwap,3gwap
|
||||
|
||||
public static final byte CURRENT_NETWORK_TYPE_CMNET = 6;// cmnet
|
||||
|
||||
public static final byte CURRENT_NETWORK_TYPE_UNIET = 7;// uninet,3gnet
|
||||
|
||||
/**
|
||||
* 根据运营商区分网络类型
|
||||
*/
|
||||
public static final byte CURRENT_NETWORK_TYPE_CTC = 10;// ctwap,ctnet
|
||||
|
||||
public static final byte CURRENT_NETWORK_TYPE_CUC = 11;// uniwap,3gwap,uninet,3gnet
|
||||
|
||||
public static final byte CURRENT_NETWORK_TYPE_CM = 12;// cmwap,cmnet
|
||||
|
||||
/**
|
||||
* apn值
|
||||
*/
|
||||
private static final String CONNECT_TYPE_WIFI = "wifi";
|
||||
|
||||
private static final String CONNECT_TYPE_CTNET = "ctnet";
|
||||
|
||||
private static final String CONNECT_TYPE_CTWAP = "ctwap";
|
||||
|
||||
private static final String CONNECT_TYPE_CMNET = "cmnet";
|
||||
|
||||
private static final String CONNECT_TYPE_CMWAP = "cmwap";
|
||||
|
||||
private static final String CONNECT_TYPE_UNIWAP = "uniwap";
|
||||
|
||||
private static final String CONNECT_TYPE_UNINET = "uninet";
|
||||
|
||||
private static final String CONNECT_TYPE_UNI3GWAP = "3gwap";
|
||||
|
||||
private static final String CONNECT_TYPE_UNI3GNET = "3gnet";
|
||||
|
||||
private static final Uri PREFERRED_APN_URI = Uri.parse("content://telephony/carriers/preferapn");
|
||||
|
||||
public static byte curNetworkType = CURRENT_NETWORK_TYPE_NONE;
|
||||
|
||||
/*
|
||||
*
|
||||
* 获取网络类型
|
||||
*
|
||||
*/
|
||||
public static int getNetType(Context context) {
|
||||
NetworkInfo networkInfo = getActiveNetworkInfo(context);
|
||||
if (networkInfo == null) {
|
||||
return -1;
|
||||
} else
|
||||
return networkInfo.getType();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 判断当前网络类型。WIFI,NET,WAP
|
||||
*
|
||||
* @param context
|
||||
* @return
|
||||
*/
|
||||
public static byte getCurrentNetType(Context context) {
|
||||
NetworkInfo networkInfo = getActiveNetworkInfo(context);
|
||||
byte type = CURRENT_NETWORK_TYPE_NONE;
|
||||
if (networkInfo != null) {
|
||||
// String typeName = networkInfo.getTypeName();
|
||||
// XT800
|
||||
String typeName = networkInfo.getExtraInfo();
|
||||
if (TextUtils.isEmpty(typeName)) {
|
||||
typeName = networkInfo.getTypeName();
|
||||
}
|
||||
if (!TextUtils.isEmpty(typeName)) {
|
||||
String temp = typeName.toLowerCase();
|
||||
if (temp.indexOf(CONNECT_TYPE_WIFI) > -1) {// wifi
|
||||
type = CURRENT_NETWORK_TYPE_WIFI;
|
||||
} else if (temp.indexOf(CONNECT_TYPE_CTNET) > -1) {// ctnet
|
||||
type = CURRENT_NETWORK_TYPE_CTNET;
|
||||
} else if (temp.indexOf(CONNECT_TYPE_CTWAP) > -1) {// ctwap
|
||||
type = CURRENT_NETWORK_TYPE_CTWAP;
|
||||
} else if (temp.indexOf(CONNECT_TYPE_CMNET) > -1) {// cmnet
|
||||
type = CURRENT_NETWORK_TYPE_CMNET;
|
||||
} else if (temp.indexOf(CONNECT_TYPE_CMWAP) > -1) {// cmwap
|
||||
type = CURRENT_NETWORK_TYPE_CMWAP;
|
||||
} else if (temp.indexOf(CONNECT_TYPE_UNIWAP) > -1) {// uniwap
|
||||
type = CURRENT_NETWORK_TYPE_UNIWAP;
|
||||
} else if (temp.indexOf(CONNECT_TYPE_UNI3GWAP) > -1) {// 3gwap
|
||||
type = CURRENT_NETWORK_TYPE_UNIWAP;
|
||||
} else if (temp.indexOf(CONNECT_TYPE_UNINET) > -1) {// uninet
|
||||
type = CURRENT_NETWORK_TYPE_UNIET;
|
||||
} else if (temp.indexOf(CONNECT_TYPE_UNI3GNET) > -1) {// 3gnet
|
||||
type = CURRENT_NETWORK_TYPE_UNIET;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (type == CURRENT_NETWORK_TYPE_NONE) {
|
||||
String apnType = getApnType(context);
|
||||
if (apnType != null && apnType.equals(CONNECT_TYPE_CTNET)) {// ctnet
|
||||
type = CURRENT_NETWORK_TYPE_CTNET;
|
||||
} else if (apnType != null && apnType.equals(CONNECT_TYPE_CTWAP)) {// ctwap
|
||||
type = CURRENT_NETWORK_TYPE_CTWAP;
|
||||
} else if (apnType != null && apnType.equals(CONNECT_TYPE_CMWAP)) {// cmwap
|
||||
type = CURRENT_NETWORK_TYPE_CMWAP;
|
||||
} else if (apnType != null && apnType.equals(CONNECT_TYPE_CMNET)) {// cmnet
|
||||
type = CURRENT_NETWORK_TYPE_CMNET;
|
||||
} else if (apnType != null && apnType.equals(CONNECT_TYPE_UNIWAP)) {// uniwap
|
||||
type = CURRENT_NETWORK_TYPE_UNIWAP;
|
||||
} else if (apnType != null && apnType.equals(CONNECT_TYPE_UNI3GWAP)) {// 3gwap
|
||||
type = CURRENT_NETWORK_TYPE_UNIWAP;
|
||||
} else if (apnType != null && apnType.equals(CONNECT_TYPE_UNINET)) {// uninet
|
||||
type = CURRENT_NETWORK_TYPE_UNIET;
|
||||
} else if (apnType != null && apnType.equals(CONNECT_TYPE_UNI3GNET)) {// 3gnet
|
||||
type = CURRENT_NETWORK_TYPE_UNIET;
|
||||
}
|
||||
}
|
||||
curNetworkType = type;
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断APNTYPE
|
||||
*
|
||||
* @param context
|
||||
* @return
|
||||
*/
|
||||
/**
|
||||
* @deprecated 4.0
|
||||
* doc:
|
||||
* Since the DB may contain corp passwords, we should secure it. Using the same permission as writing to the DB as the read is potentially as damaging as a write
|
||||
*/
|
||||
public static String getApnType(Context context) {
|
||||
|
||||
String apntype = "nomatch";
|
||||
Cursor c = context.getContentResolver().query(PREFERRED_APN_URI, null, null, null, null);
|
||||
if (c != null) {
|
||||
if (c.moveToFirst()) {
|
||||
String user = c.getString(c.getColumnIndex("user"));
|
||||
if (user != null && user.startsWith(CONNECT_TYPE_CTNET)) {
|
||||
apntype = CONNECT_TYPE_CTNET;
|
||||
} else if (user != null && user.startsWith(CONNECT_TYPE_CTWAP)) {
|
||||
apntype = CONNECT_TYPE_CTWAP;
|
||||
} else if (user != null && user.startsWith(CONNECT_TYPE_CMWAP)) {
|
||||
apntype = CONNECT_TYPE_CMWAP;
|
||||
} else if (user != null && user.startsWith(CONNECT_TYPE_CMNET)) {
|
||||
apntype = CONNECT_TYPE_CMNET;
|
||||
} else if (user != null && user.startsWith(CONNECT_TYPE_UNIWAP)) {
|
||||
apntype = CONNECT_TYPE_UNIWAP;
|
||||
} else if (user != null && user.startsWith(CONNECT_TYPE_UNINET)) {
|
||||
apntype = CONNECT_TYPE_UNINET;
|
||||
} else if (user != null && user.startsWith(CONNECT_TYPE_UNI3GWAP)) {
|
||||
apntype = CONNECT_TYPE_UNI3GWAP;
|
||||
} else if (user != null && user.startsWith(CONNECT_TYPE_UNI3GNET)) {
|
||||
apntype = CONNECT_TYPE_UNI3GNET;
|
||||
}
|
||||
}
|
||||
c.close();
|
||||
c = null;
|
||||
}
|
||||
|
||||
return apntype;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否有网络可用
|
||||
*
|
||||
@@ -207,22 +24,6 @@ public class NetworkUtil {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 此判断不可靠
|
||||
*
|
||||
* @param context
|
||||
* @return
|
||||
*/
|
||||
public static boolean isNetworkConnected(Context context) {
|
||||
NetworkInfo networkInfo = getActiveNetworkInfo(context);
|
||||
if (networkInfo != null) {
|
||||
boolean a = networkInfo.isConnected();
|
||||
return a;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取可用的网络信息
|
||||
*
|
||||
@@ -238,50 +39,6 @@ public class NetworkUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isWifiOr3G(Context context) {
|
||||
if (isWifi(context)) {
|
||||
return true;
|
||||
} else {
|
||||
return is3G(context);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean is2G(Context context) {
|
||||
return !isWifiOr3G(context);
|
||||
}
|
||||
|
||||
public static boolean is3G(Context context) {
|
||||
int type = getNetworkClass(context);
|
||||
if (type == NETWORK_CLASS_3_G || type == NETWORK_CLASS_4_G) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 当前网络是否是wifi网络
|
||||
*
|
||||
* @param context
|
||||
* @return
|
||||
*/
|
||||
public static boolean isWifi(Context context) {
|
||||
try {
|
||||
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
NetworkInfo ni = cm.getActiveNetworkInfo();
|
||||
if (ni != null) {
|
||||
if (ni.getType() == ConnectivityManager.TYPE_WIFI) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean getNetworkConnectionStatus(Context context) {
|
||||
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
@@ -307,559 +64,4 @@ public class NetworkUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static String getNetworkProxyInfo(Context context) {
|
||||
String proxyHost = android.net.Proxy.getDefaultHost();
|
||||
int proxyPort = android.net.Proxy.getDefaultPort();
|
||||
String szport = String.valueOf(proxyPort);
|
||||
String proxyInfo = null;
|
||||
|
||||
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
if (manager == null) {
|
||||
return null;
|
||||
} else {
|
||||
NetworkInfo info = manager.getActiveNetworkInfo();
|
||||
if (info != null) {
|
||||
String typeName = info.getTypeName().toLowerCase();
|
||||
if (typeName != null && typeName.equals("wifi")) {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
if (proxyHost != null && (0 < proxyPort && proxyPort < 65535)) {
|
||||
proxyInfo = proxyHost + ":" + szport;
|
||||
return proxyInfo;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static String getNetworkProxyUrl(Context context) {
|
||||
if (isWifi(context)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String proxyHost = android.net.Proxy.getDefaultHost();
|
||||
LogUtil.e(TAG, "proxyHost:" + proxyHost);
|
||||
return proxyHost;
|
||||
}
|
||||
|
||||
public static String getNetworkProxyUrl() {
|
||||
/**
|
||||
* 当网络为wifi时,直接返回空代理: 当ctwap,cmwap,uniwap,3gwap开启时同时开启wifi网络
|
||||
* ,通过下面的getDefaultHost接口将得到对应wap网络代理ip ,这是错误的,所以在此判断当前网络是否为wifi
|
||||
*/
|
||||
if (curNetworkType == CURRENT_NETWORK_TYPE_WIFI) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String proxyHost = android.net.Proxy.getDefaultHost();
|
||||
LogUtil.e(TAG, "proxyHost:" + proxyHost);
|
||||
return proxyHost;
|
||||
}
|
||||
|
||||
public static int getNetworkProxyPort() {
|
||||
int proxyPort = android.net.Proxy.getDefaultPort();
|
||||
return proxyPort;
|
||||
}
|
||||
|
||||
public static boolean isCtwap(Context context) {
|
||||
if (getApnType(context).equals(CONNECT_TYPE_CTWAP)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isUniwap(Context context) {
|
||||
if (getApnType(context).equals(CONNECT_TYPE_UNIWAP)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isCmwap(Context context) {
|
||||
if (getApnType(context).equals(CONNECT_TYPE_CMWAP)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否是电信网络(ctwap,ctnet)
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static boolean isCtcNetwork(Context context) {
|
||||
byte type = getCurrentNetType(context);
|
||||
|
||||
return isCtcNetwork(type);
|
||||
}
|
||||
|
||||
public static boolean isCtcNetwork(String apnName) {
|
||||
if (apnName == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (apnName.equals(CONNECT_TYPE_CTWAP) || apnName.equals(CONNECT_TYPE_CTNET)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isCtcNetwork(byte type) {
|
||||
if (type == CURRENT_NETWORK_TYPE_CTWAP || type == CURRENT_NETWORK_TYPE_CTNET) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否是联通网络(uniwap,uninet,3gwap,3gnet)
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static boolean isCucNetwork(Context context) {
|
||||
byte type = getCurrentNetType(context);
|
||||
|
||||
return isCucNetwork(type);
|
||||
}
|
||||
|
||||
public static boolean isCucNetwork(String apnName) {
|
||||
if (apnName == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (apnName.equals(CONNECT_TYPE_UNIWAP) || apnName.equals(CONNECT_TYPE_UNINET)
|
||||
|| apnName.equals(CONNECT_TYPE_UNI3GWAP) || apnName.equals(CONNECT_TYPE_UNI3GNET)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isCucNetwork(byte type) {
|
||||
if (type == CURRENT_NETWORK_TYPE_UNIWAP || type == CURRENT_NETWORK_TYPE_UNIET) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否是移动网络(cmwap,cmnet)
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static boolean isCmbNetwork(Context context) {
|
||||
byte type = getCurrentNetType(context);
|
||||
|
||||
return isCmbNetwork(type);
|
||||
}
|
||||
|
||||
public static boolean isCmbNetwork(String apnName) {
|
||||
if (apnName == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (apnName.equals(CONNECT_TYPE_CMWAP) || apnName.equals(CONNECT_TYPE_CMNET)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isCmbNetwork(byte type) {
|
||||
if (type == CURRENT_NETWORK_TYPE_CMWAP || type == CURRENT_NETWORK_TYPE_CMNET) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取网络运营商类型(中国移动,中国联通,中国电信,wifi)
|
||||
*
|
||||
* @param context
|
||||
* @return
|
||||
*/
|
||||
public static byte getNetworkOperators(Context context) {
|
||||
if (isWifi(context)) {
|
||||
return CURRENT_NETWORK_TYPE_WIFI;
|
||||
} else if (isCtcNetwork(context)) {
|
||||
return CURRENT_NETWORK_TYPE_CTC;
|
||||
} else if (isCmbNetwork(context)) {
|
||||
return CURRENT_NETWORK_TYPE_CM;
|
||||
} else if (isCucNetwork(context)) {
|
||||
return CURRENT_NETWORK_TYPE_CUC;
|
||||
} else {
|
||||
return CURRENT_NETWORK_TYPE_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
public static byte getNetworkOperators(byte type) {
|
||||
if (type == CURRENT_NETWORK_TYPE_NONE) {
|
||||
return CURRENT_NETWORK_TYPE_NONE;
|
||||
} else if (type == CURRENT_NETWORK_TYPE_WIFI) {
|
||||
return CURRENT_NETWORK_TYPE_WIFI;
|
||||
} else if (type == CURRENT_NETWORK_TYPE_CTNET || type == CURRENT_NETWORK_TYPE_CTWAP) {
|
||||
return CURRENT_NETWORK_TYPE_CTC;
|
||||
} else if (type == CURRENT_NETWORK_TYPE_CMWAP || type == CURRENT_NETWORK_TYPE_CMNET) {
|
||||
return CURRENT_NETWORK_TYPE_CM;
|
||||
} else if (type == CURRENT_NETWORK_TYPE_UNIWAP || type == CURRENT_NETWORK_TYPE_UNIET) {
|
||||
return CURRENT_NETWORK_TYPE_CUC;
|
||||
} else {
|
||||
return CURRENT_NETWORK_TYPE_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否需要设置代理(网络请求,一般用于wap网络,但有些机型设置代理会导致系统异常)
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static boolean isNeedSetProxyForNetRequest() { // #00044 +
|
||||
if (Build.MODEL.equals("SCH-N719") || Build.MODEL.equals("SCH-I939D")) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get mac address of wifi if wifi is active
|
||||
*/
|
||||
|
||||
public static String getActiveMacAddress(Context context) {
|
||||
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
|
||||
|
||||
WifiInfo info = wifi.getConnectionInfo();
|
||||
|
||||
if (info != null) {
|
||||
return info.getMacAddress();
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public static String getNetworkInfo(Context context) {
|
||||
String info = "";
|
||||
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
if (connectivity != null) {
|
||||
NetworkInfo activeNetInfo = connectivity.getActiveNetworkInfo();
|
||||
if (activeNetInfo != null) {
|
||||
if (activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) {
|
||||
info = activeNetInfo.getTypeName();
|
||||
} else {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
sb.append(activeNetInfo.getTypeName());
|
||||
sb.append(" [");
|
||||
if (tm != null) {
|
||||
// Result may be unreliable on CDMA networks
|
||||
sb.append(tm.getNetworkOperatorName());
|
||||
sb.append("#");
|
||||
}
|
||||
sb.append(activeNetInfo.getSubtypeName());
|
||||
sb.append("]");
|
||||
info = sb.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
return info;
|
||||
}
|
||||
|
||||
public enum NetworkSpeedMode {
|
||||
LOW, NORMAL, HIGH, UNKNOWN
|
||||
}
|
||||
|
||||
/**
|
||||
* 网络类型
|
||||
*/
|
||||
public static final int NETWORK_CLASS_UNKNOWN = 0;
|
||||
|
||||
public static final int NETWORK_CLASS_2_G = 1;
|
||||
|
||||
public static final int NETWORK_CLASS_3_G = 2;
|
||||
|
||||
public static final int NETWORK_CLASS_4_G = 3;
|
||||
|
||||
public static final int NETWORK_CLASS_WIFI = 10;
|
||||
|
||||
/**
|
||||
* 仅判断Mobile网络的慢速.蓝牙等其他网络不做判断.
|
||||
*
|
||||
* @param context
|
||||
* @return
|
||||
*/
|
||||
public static NetworkSpeedMode getNetworkSpeedModeInMobile(Context context) {
|
||||
ConnectivityManager connectivityManager = (ConnectivityManager) context
|
||||
.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
if (connectivityManager != null) {
|
||||
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
|
||||
if (networkInfo != null) {
|
||||
if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
|
||||
switch (networkInfo.getSubtype()) {
|
||||
case TelephonyManager.NETWORK_TYPE_IDEN: // ~25 kbps
|
||||
return NetworkSpeedMode.LOW;
|
||||
case TelephonyManager.NETWORK_TYPE_CDMA: // ~ 14-64 kbps
|
||||
return NetworkSpeedMode.LOW;
|
||||
case TelephonyManager.NETWORK_TYPE_1xRTT: // ~ 50-100 kbps
|
||||
return NetworkSpeedMode.LOW;
|
||||
case TelephonyManager.NETWORK_TYPE_EDGE: // ~ 50-100 kbps
|
||||
return NetworkSpeedMode.LOW;
|
||||
case TelephonyManager.NETWORK_TYPE_GPRS: // ~ 100 kbps
|
||||
return NetworkSpeedMode.LOW;
|
||||
|
||||
case TelephonyManager.NETWORK_TYPE_EVDO_0: // ~ 400-1000
|
||||
// kbps
|
||||
return NetworkSpeedMode.NORMAL;
|
||||
case TelephonyManager.NETWORK_TYPE_EVDO_A: // ~ 600-1400
|
||||
// kbps
|
||||
return NetworkSpeedMode.NORMAL;
|
||||
case TelephonyManager.NETWORK_TYPE_HSPA: // ~ 700-1700 kbps
|
||||
return NetworkSpeedMode.NORMAL;
|
||||
case TelephonyManager.NETWORK_TYPE_UMTS: // ~ 400-7000 kbps
|
||||
return NetworkSpeedMode.NORMAL;
|
||||
case 14: // TelephonyManager.NETWORK_TYPE_EHRPD: // ~ 1-2
|
||||
// Mbps
|
||||
return NetworkSpeedMode.NORMAL;
|
||||
case 12: // TelephonyManager.NETWORK_TYPE_EVDO_B: // ~ 5
|
||||
// Mbps
|
||||
return NetworkSpeedMode.NORMAL;
|
||||
|
||||
case TelephonyManager.NETWORK_TYPE_HSDPA: // ~ 2-14 Mbps
|
||||
return NetworkSpeedMode.HIGH;
|
||||
case TelephonyManager.NETWORK_TYPE_HSUPA: // ~ 1-23 Mbps
|
||||
return NetworkSpeedMode.HIGH;
|
||||
case 15: // TelephonyManager.NETWORK_TYPE_HSPAP: // ~ 10-20
|
||||
// Mbps
|
||||
return NetworkSpeedMode.HIGH;
|
||||
case 13: // TelephonyManager.NETWORK_TYPE_LTE: // ~ 10+ Mbps
|
||||
return NetworkSpeedMode.HIGH;
|
||||
|
||||
case TelephonyManager.NETWORK_TYPE_UNKNOWN:
|
||||
return NetworkSpeedMode.NORMAL;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return NetworkSpeedMode.UNKNOWN;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取在Mobile网络下的网络类型. 2G,3G,4G
|
||||
*
|
||||
* @param context
|
||||
* @return
|
||||
*/
|
||||
public static int getNetworkClass(Context context) {
|
||||
ConnectivityManager connectivityManager = (ConnectivityManager) context
|
||||
.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
if (connectivityManager != null) {
|
||||
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
|
||||
if (networkInfo != null) {
|
||||
if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
|
||||
switch (networkInfo.getSubtype()) {
|
||||
case TelephonyManager.NETWORK_TYPE_GPRS:
|
||||
case TelephonyManager.NETWORK_TYPE_EDGE:
|
||||
case TelephonyManager.NETWORK_TYPE_CDMA:
|
||||
case TelephonyManager.NETWORK_TYPE_1xRTT:
|
||||
case TelephonyManager.NETWORK_TYPE_IDEN:
|
||||
return NETWORK_CLASS_2_G;
|
||||
case TelephonyManager.NETWORK_TYPE_UMTS:
|
||||
case TelephonyManager.NETWORK_TYPE_EVDO_0:
|
||||
case TelephonyManager.NETWORK_TYPE_EVDO_A:
|
||||
case TelephonyManager.NETWORK_TYPE_HSDPA:
|
||||
case TelephonyManager.NETWORK_TYPE_HSUPA:
|
||||
case TelephonyManager.NETWORK_TYPE_HSPA:
|
||||
case 12: // TelephonyManager.NETWORK_TYPE_EVDO_B:
|
||||
case 14: // TelephonyManager.NETWORK_TYPE_EHRPD:
|
||||
case 15: // TelephonyManager.NETWORK_TYPE_HSPAP:
|
||||
return NETWORK_CLASS_3_G;
|
||||
case 13: // TelephonyManager.NETWORK_TYPE_LTE:
|
||||
return NETWORK_CLASS_4_G;
|
||||
default:
|
||||
return NETWORK_CLASS_UNKNOWN;
|
||||
}
|
||||
} else if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
|
||||
return NETWORK_CLASS_WIFI;
|
||||
}
|
||||
}
|
||||
}
|
||||
return NETWORK_CLASS_UNKNOWN;
|
||||
}
|
||||
|
||||
public static String getNetworkTypeName(Context context) {
|
||||
String networkName = "UNKNOWN";
|
||||
ConnectivityManager connectivityManager = (ConnectivityManager) context
|
||||
.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
if (connectivityManager != null) {
|
||||
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
|
||||
if (networkInfo != null) {
|
||||
networkName = getNetworkTypeName(networkInfo.getType());
|
||||
if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
|
||||
networkName += "#" + getNetworkTypeNameInMobile(networkInfo.getSubtype());
|
||||
}
|
||||
}
|
||||
}
|
||||
return networkName;
|
||||
}
|
||||
|
||||
private static String getNetworkTypeNameInMobile(int type) {
|
||||
switch (type) {
|
||||
case TelephonyManager.NETWORK_TYPE_GPRS:
|
||||
return "GPRS";
|
||||
case TelephonyManager.NETWORK_TYPE_EDGE:
|
||||
return "EDGE";
|
||||
case TelephonyManager.NETWORK_TYPE_UMTS:
|
||||
return "UMTS";
|
||||
case TelephonyManager.NETWORK_TYPE_HSDPA:
|
||||
return "HSDPA";
|
||||
case TelephonyManager.NETWORK_TYPE_HSUPA:
|
||||
return "HSUPA";
|
||||
case TelephonyManager.NETWORK_TYPE_HSPA:
|
||||
return "HSPA";
|
||||
case TelephonyManager.NETWORK_TYPE_CDMA:
|
||||
return "CDMA";
|
||||
case TelephonyManager.NETWORK_TYPE_EVDO_0:
|
||||
return "CDMA - EvDo rev. 0";
|
||||
case TelephonyManager.NETWORK_TYPE_EVDO_A:
|
||||
return "CDMA - EvDo rev. A";
|
||||
case TelephonyManager.NETWORK_TYPE_EVDO_B:
|
||||
return "CDMA - EvDo rev. B";
|
||||
case TelephonyManager.NETWORK_TYPE_1xRTT:
|
||||
return "CDMA - 1xRTT";
|
||||
case TelephonyManager.NETWORK_TYPE_LTE:
|
||||
return "LTE";
|
||||
case TelephonyManager.NETWORK_TYPE_EHRPD:
|
||||
return "CDMA - eHRPD";
|
||||
case TelephonyManager.NETWORK_TYPE_IDEN:
|
||||
return "iDEN";
|
||||
case TelephonyManager.NETWORK_TYPE_HSPAP:
|
||||
return "HSPA+";
|
||||
default:
|
||||
return "UNKNOWN";
|
||||
}
|
||||
}
|
||||
|
||||
private static String getNetworkTypeName(int type) {
|
||||
switch (type) {
|
||||
case ConnectivityManager.TYPE_MOBILE:
|
||||
return "MOBILE";
|
||||
case ConnectivityManager.TYPE_WIFI:
|
||||
return "WIFI";
|
||||
case ConnectivityManager.TYPE_MOBILE_MMS:
|
||||
return "MOBILE_MMS";
|
||||
case ConnectivityManager.TYPE_MOBILE_SUPL:
|
||||
return "MOBILE_SUPL";
|
||||
case ConnectivityManager.TYPE_MOBILE_DUN:
|
||||
return "MOBILE_DUN";
|
||||
case ConnectivityManager.TYPE_MOBILE_HIPRI:
|
||||
return "MOBILE_HIPRI";
|
||||
case ConnectivityManager.TYPE_WIMAX:
|
||||
return "WIMAX";
|
||||
case ConnectivityManager.TYPE_BLUETOOTH:
|
||||
return "BLUETOOTH";
|
||||
case ConnectivityManager.TYPE_DUMMY:
|
||||
return "DUMMY";
|
||||
case ConnectivityManager.TYPE_ETHERNET:
|
||||
return "ETHERNET";
|
||||
case 10: // ConnectivityManager.TYPE_MOBILE_FOTA:
|
||||
return "MOBILE_FOTA";
|
||||
case 11: // ConnectivityManager.TYPE_MOBILE_IMS:
|
||||
return "MOBILE_IMS";
|
||||
case 12: // ConnectivityManager.TYPE_MOBILE_CBS:
|
||||
return "MOBILE_CBS";
|
||||
case 13: // ConnectivityManager.TYPE_WIFI_P2P:
|
||||
return "WIFI_P2P";
|
||||
default:
|
||||
return Integer.toString(type);
|
||||
}
|
||||
}
|
||||
|
||||
//中国电信
|
||||
public static final int ISP_CTCC = 0;
|
||||
//中国联通
|
||||
public static final int ISP_CUCC = 1;
|
||||
//中国移动
|
||||
public static final int ISP_CMCC = 2;
|
||||
//中国铁通
|
||||
public static final int ISP_CTT = 3;
|
||||
//其他
|
||||
public static final int ISP_OTHERS = -1;
|
||||
|
||||
public static String getSimOperator(Context context) {
|
||||
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
if (tm != null) {
|
||||
return tm.getSimOperator();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static String getNetworkOperator(Context context) {
|
||||
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
if (tm != null) {
|
||||
return tm.getNetworkOperator();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public interface LinkNetWorkType {
|
||||
public static final int UNKNOWN = 0;
|
||||
public static final int WIFI = 1;
|
||||
public static final int WWAN = 2;
|
||||
public static final int _2G = 3;
|
||||
public static final int _3G = 4;
|
||||
public static final int _4G = 5;
|
||||
}
|
||||
|
||||
public static int getNetworkTypeForLink(Context context) {
|
||||
try {
|
||||
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
NetworkInfo ni = cm.getActiveNetworkInfo();
|
||||
if (ni != null) {
|
||||
if (ni.getType() == ConnectivityManager.TYPE_WIFI) {
|
||||
return LinkNetWorkType.WIFI;
|
||||
} else {
|
||||
if (ni.getType() == ConnectivityManager.TYPE_MOBILE) {
|
||||
switch (ni.getSubtype()) {
|
||||
case TelephonyManager.NETWORK_TYPE_GPRS:
|
||||
case TelephonyManager.NETWORK_TYPE_EDGE:
|
||||
case TelephonyManager.NETWORK_TYPE_CDMA:
|
||||
case TelephonyManager.NETWORK_TYPE_1xRTT:
|
||||
case TelephonyManager.NETWORK_TYPE_IDEN:
|
||||
return LinkNetWorkType._2G;
|
||||
case TelephonyManager.NETWORK_TYPE_UMTS:
|
||||
case TelephonyManager.NETWORK_TYPE_EVDO_0:
|
||||
case TelephonyManager.NETWORK_TYPE_EVDO_A:
|
||||
case TelephonyManager.NETWORK_TYPE_HSDPA:
|
||||
case TelephonyManager.NETWORK_TYPE_HSUPA:
|
||||
case TelephonyManager.NETWORK_TYPE_HSPA:
|
||||
case 12: // TelephonyManager.NETWORK_TYPE_EVDO_B:
|
||||
case 14: // TelephonyManager.NETWORK_TYPE_EHRPD:
|
||||
case 15: // TelephonyManager.NETWORK_TYPE_HSPAP:
|
||||
return LinkNetWorkType._3G;
|
||||
case 13: // TelephonyManager.NETWORK_TYPE_LTE:
|
||||
return LinkNetWorkType._4G;
|
||||
default:
|
||||
return LinkNetWorkType._2G;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return LinkNetWorkType.UNKNOWN;
|
||||
}
|
||||
return LinkNetWorkType.UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user