集成vasdolly
This commit is contained in:
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
|
|||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 29
|
compileSdkVersion 30
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
@@ -19,7 +19,7 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
buildToolsVersion = '28.0.3'
|
buildToolsVersion = '30.0.3'
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
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'
|
apply plugin: 'com.android.application'
|
||||||
|
|
||||||
// android res guard 资源混淆脚本
|
|
||||||
apply from: 'and_res_guard.gradle'
|
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
apply plugin: 'kotlin-android-extensions'
|
||||||
apply plugin: 'com.huawei.agconnect'
|
apply plugin: 'com.huawei.agconnect'
|
||||||
|
apply plugin: 'com.tencent.vasdolly'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 29
|
compileSdkVersion 30
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "com.mango.yinyou"
|
applicationId "com.mango.yinyou"
|
||||||
@@ -44,11 +43,6 @@ android {
|
|||||||
disable 'ExtraTranslation'
|
disable 'ExtraTranslation'
|
||||||
}
|
}
|
||||||
|
|
||||||
dexOptions {
|
|
||||||
javaMaxHeapSize "1g"
|
|
||||||
jumboMode = true
|
|
||||||
}
|
|
||||||
|
|
||||||
dataBinding {
|
dataBinding {
|
||||||
enabled = true
|
enabled = true
|
||||||
}
|
}
|
||||||
@@ -145,18 +139,6 @@ android {
|
|||||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
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 {
|
debug {
|
||||||
buildConfigField "String", "BASE_URL", "\"http://api.uat.lecheng163.com/\""
|
buildConfigField "String", "BASE_URL", "\"http://api.uat.lecheng163.com/\""
|
||||||
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
|
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
|
||||||
@@ -179,17 +161,11 @@ android {
|
|||||||
jvmTarget = "1.8"
|
jvmTarget = "1.8"
|
||||||
}
|
}
|
||||||
|
|
||||||
productFlavors {
|
buildToolsVersion = '30.0.3'
|
||||||
accompany {
|
|
||||||
dimension 'default'
|
|
||||||
manifestPlaceholders = [CHANNEL_VALUE: channel]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
buildToolsVersion = '28.0.3'
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def Lombok = "1.16.20"
|
def Lombok = "1.18.10"
|
||||||
def useFlutterAar = Boolean.parseBoolean(with_flutter_aar)
|
def useFlutterAar = Boolean.parseBoolean(with_flutter_aar)
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
@@ -217,8 +193,8 @@ dependencies {
|
|||||||
api "com.github.yyued:SVGAPlayer-Android:2.6.1"
|
api "com.github.yyued:SVGAPlayer-Android:2.6.1"
|
||||||
implementation "com.orhanobut:logger:2.2.0"
|
implementation "com.orhanobut:logger:2.2.0"
|
||||||
api "com.ms-square:expandableTextView:0.1.4"
|
api "com.ms-square:expandableTextView:0.1.4"
|
||||||
api "com.jakewharton:butterknife:10.1.0"
|
api "com.jakewharton:butterknife:10.2.3"
|
||||||
annotationProcessor "com.jakewharton:butterknife-compiler:10.1.0"
|
annotationProcessor "com.jakewharton:butterknife-compiler:10.2.3"
|
||||||
implementation "com.llew.huawei:verifier:1.0.3"
|
implementation "com.llew.huawei:verifier:1.0.3"
|
||||||
annotationProcessor 'androidx.annotation:annotation:1.1.0'
|
annotationProcessor 'androidx.annotation:annotation:1.1.0'
|
||||||
|
|
||||||
@@ -289,6 +265,8 @@ dependencies {
|
|||||||
implementation project(path: ':flutter')
|
implementation project(path: ':flutter')
|
||||||
implementation project(path: ':flutter_boost')
|
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"
|
String storageUrl = System.env.FLUTTER_STORAGE_BASE_URL ?: "https://storage.googleapis.com"
|
||||||
@@ -307,3 +285,16 @@ repositories {
|
|||||||
url "$storageUrl/download.flutter.io"
|
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"
|
android:usesCleartextTraffic="true"
|
||||||
tools:replace="android:name,android:allowBackup">
|
tools:replace="android:name,android:allowBackup">
|
||||||
|
|
||||||
<meta-data
|
|
||||||
android:name="CHANNEL"
|
|
||||||
android:value="${CHANNEL_VALUE}" />
|
|
||||||
|
|
||||||
<!-- 刘海屏适配 begin -->
|
<!-- 刘海屏适配 begin -->
|
||||||
<!-- 小米 -->
|
<!-- 小米 -->
|
||||||
<meta-data
|
<meta-data
|
||||||
|
@@ -65,6 +65,7 @@ import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
|
|||||||
import com.tencent.bugly.Bugly;
|
import com.tencent.bugly.Bugly;
|
||||||
import com.tencent.bugly.beta.Beta;
|
import com.tencent.bugly.beta.Beta;
|
||||||
import com.tencent.bugly.crashreport.CrashReport;
|
import com.tencent.bugly.crashreport.CrashReport;
|
||||||
|
import com.tencent.vasdolly.helper.ChannelReaderUtil;
|
||||||
import com.umeng.analytics.MobclickAgent;
|
import com.umeng.analytics.MobclickAgent;
|
||||||
import com.umeng.commonsdk.UMConfigure;
|
import com.umeng.commonsdk.UMConfigure;
|
||||||
import com.yizhuan.erban.BuildConfig;
|
import com.yizhuan.erban.BuildConfig;
|
||||||
@@ -219,12 +220,7 @@ public class XChatApplication extends Application {
|
|||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
|
|
||||||
String channel = "";
|
String channel = "";
|
||||||
try {
|
channel = ChannelReaderUtil.getChannel(instance);
|
||||||
ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
|
|
||||||
channel = appInfo.metaData.getString("CHANNEL");
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
if (TextUtils.isEmpty(channel)) {
|
if (TextUtils.isEmpty(channel)) {
|
||||||
channel = "official";
|
channel = "official";
|
||||||
}
|
}
|
||||||
|
@@ -25,7 +25,7 @@ class GiveGoldSuccessActivity : BaseActivity() {
|
|||||||
setContentView(R.layout.activity_give_gold_success)
|
setContentView(R.layout.activity_give_gold_success)
|
||||||
initTitleBar("转赠到寻梦帐号")
|
initTitleBar("转赠到寻梦帐号")
|
||||||
tvNickname.text = "转赠给:${intent.getStringExtra("nickname")}"
|
tvNickname.text = "转赠给:${intent.getStringExtra("nickname")}"
|
||||||
tvGold.text = "${intent.getStringExtra("gold").toInt()}钻石"
|
tvGold.text = "${intent.getStringExtra("gold")?.toInt()}钻石"
|
||||||
tvSure.setOnClickListener { finish() }
|
tvSure.setOnClickListener { finish() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -10,6 +10,8 @@ import android.webkit.JavascriptInterface;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.orhanobut.logger.Logger;
|
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_constants.XChatConstants;
|
||||||
import com.yizhuan.xchat_android_core.auth.AuthModel;
|
import com.yizhuan.xchat_android_core.auth.AuthModel;
|
||||||
import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil;
|
import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil;
|
||||||
@@ -89,13 +91,8 @@ public class SimpleJSInterface {
|
|||||||
*/
|
*/
|
||||||
@JavascriptInterface
|
@JavascriptInterface
|
||||||
public String getChannel() {
|
public String getChannel() {
|
||||||
String channel = "";
|
String channel;
|
||||||
try {
|
channel = ChannelReaderUtil.getChannel(XChatApplication.instance());
|
||||||
ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
|
|
||||||
channel = appInfo.metaData.getString("CHANNEL");
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
if (TextUtils.isEmpty(channel)) {
|
if (TextUtils.isEmpty(channel)) {
|
||||||
channel = "official";
|
channel = "official";
|
||||||
}
|
}
|
||||||
|
16
build.gradle
16
build.gradle
@@ -13,19 +13,19 @@ buildscript {
|
|||||||
maven { url 'https://jitpack.io' }
|
maven { url 'https://jitpack.io' }
|
||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven {url 'http://developer.huawei.com/repo/'}
|
maven {url 'https://developer.huawei.com/repo/'}
|
||||||
maven { url "http://mvn.mob.com/android" }
|
maven { url "https://mvn.mob.com/android" }
|
||||||
maven { url 'https://repo1.maven.org/maven2/' }
|
maven { url 'https://repo1.maven.org/maven2/' }
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.6.2'
|
classpath 'com.android.tools.build:gradle:4.2.2'
|
||||||
//realm 数据库插件
|
//realm 数据库插件
|
||||||
classpath "io.realm:realm-gradle-plugin:5.3.0"
|
classpath "io.realm:realm-gradle-plugin:5.3.0"
|
||||||
// android 资源混淆插件
|
// android 资源混淆插件
|
||||||
classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.16'
|
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
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()
|
mavenCentral()
|
||||||
maven { url 'https://maven.aliyun.com/repository/public' }
|
maven { url 'https://maven.aliyun.com/repository/public' }
|
||||||
maven { url 'https://jitpack.io' }
|
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 'https://repo1.maven.org/maven2/' }
|
||||||
maven { url 'http://developer.huawei.com/repo/' }
|
maven { url 'https://developer.huawei.com/repo/' }
|
||||||
maven(){
|
maven(){
|
||||||
url 'http://sdk-repository.wujiehh.com:8081/repository/WJHD/'
|
url 'https://sdk-repository.wujiehh.com/repository/WJHD/'
|
||||||
credentials {
|
credentials {
|
||||||
username = 'wjhd'
|
username = 'wjhd'
|
||||||
password = 'WV9#i%C3e@p$jtPyU*ds^VUp317koE1Y'
|
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'
|
apply plugin: 'kotlin-android-extensions'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 29
|
compileSdkVersion 30
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 29
|
targetSdkVersion 29
|
||||||
@@ -50,12 +50,12 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
buildToolsVersion = '28.0.3'
|
buildToolsVersion = '30.0.3'
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def loggerVersion = "2.2.0"
|
def loggerVersion = "2.2.0"
|
||||||
def Lombok = "1.16.20"
|
def Lombok = "1.18.10"
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api fileTree(dir: 'libs', include: ['*.jar'])
|
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
|
# 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
|
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||||
# org.gradle.parallel=true
|
# org.gradle.parallel=true
|
||||||
android.enableD8=true
|
|
||||||
android.injected.testOnly=false
|
android.injected.testOnly=false
|
||||||
android.useAndroidX=true
|
android.useAndroidX=true
|
||||||
android.enableJetifier=true
|
android.enableJetifier=true
|
||||||
@@ -23,3 +22,5 @@ with_flutter_aar=true
|
|||||||
with_jenkins=false
|
with_jenkins=false
|
||||||
|
|
||||||
channel=official
|
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
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
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'
|
apply plugin: 'kotlin-android'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 29
|
compileSdkVersion 30
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 29
|
targetSdkVersion 29
|
||||||
@@ -31,7 +31,7 @@ android {
|
|||||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
buildToolsVersion = '28.0.3'
|
buildToolsVersion = '30.0.3'
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
@@ -3,8 +3,8 @@ apply plugin: 'kotlin-android'
|
|||||||
apply plugin: 'kotlin-android-extensions'
|
apply plugin: 'kotlin-android-extensions'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 29
|
compileSdkVersion 30
|
||||||
buildToolsVersion '28.0.3'
|
buildToolsVersion '30.0.3'
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 21
|
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.ImageElement;
|
||||||
import com.netease.nim.uikit.business.robot.parser.elements.element.TextElement;
|
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.LinkElement;
|
||||||
import com.netease.nim.uikit.business.robot.parser.elements.group.TemplateRoot;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -66,7 +65,7 @@ public class RobotContentLinearLayout extends LinearLayout {
|
|||||||
for (RobotBotContent bot : botContents) {
|
for (RobotBotContent bot : botContents) {
|
||||||
if (RobotResponseContent.RES_TYPE_BOT_COMP.equals(bot.getType())) {
|
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())
|
} else if (RobotResponseContent.RES_TYPE_BOT_TEXT.equals(bot.getType())
|
||||||
|| RobotResponseContent.RES_TYPE_BOT_QUICK.equals(bot.getType())) {
|
|| RobotResponseContent.RES_TYPE_BOT_QUICK.equals(bot.getType())) {
|
||||||
// 文本
|
// 文本
|
||||||
@@ -85,38 +84,6 @@ public class RobotContentLinearLayout extends LinearLayout {
|
|||||||
bindChildContentViews();
|
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() {
|
private void bindChildContentViews() {
|
||||||
removeAllViews();
|
removeAllViews();
|
||||||
|
@@ -1,197 +1,14 @@
|
|||||||
package com.netease.nim.uikit.common.util.sys;
|
package com.netease.nim.uikit.common.util.sys;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.database.Cursor;
|
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.NetworkInfo;
|
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.telephony.TelephonyManager;
|
||||||
import android.text.TextUtils;
|
|
||||||
|
|
||||||
import com.netease.nim.uikit.common.util.log.LogUtil;
|
|
||||||
|
|
||||||
public class NetworkUtil {
|
public class NetworkUtil {
|
||||||
|
|
||||||
public static final String TAG = "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) {
|
public static boolean getNetworkConnectionStatus(Context context) {
|
||||||
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
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