Commit a5e8f6c8 authored by sheteng's avatar sheteng

分享和权限说明

parent 1342942d
......@@ -28,6 +28,7 @@ android {
manifestPlaceholders.put("XG_ACCESS_ID","1580009634")
manifestPlaceholders.put("XG_ACCESS_KEY","AIJKAIYR3WPS")
manifestPlaceholders.put("qqappid","101994779")
}
buildTypes {
......@@ -41,14 +42,13 @@ android {
isMinifyEnabled = false
}
}
buildFeatures.viewBinding = true
}
setupApp()
android.defaultConfig.applicationId = "com.ccwangluo.accelerator"
android.buildFeatures.viewBinding = true
android.buildTypes.named("release")
dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
implementation("androidx.appcompat:appcompat:1.3.1")
......@@ -102,7 +102,7 @@ dependencies {
implementation("com.umeng.umsdk:share-wx:7.1.7") //微信完整版)
implementation("com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.9")
//
// implementation("com.umeng.umsdk:share-qq:7.1.7")//QQ完整版)
implementation("com.umeng.umsdk:share-qq:7.1.7")//QQ完整版)
// implementation("com.squareup.okhttp3:okhttp:3.14.9")//QQ官方sdk 3.53及之后版本需要集成okhttp3.x,必选)
//gps
......
......@@ -176,3 +176,99 @@
-keep class com.tencent.tpns.baseapi.** {*;}
-keep class com.tencent.tpns.mqttchannel.** {*;}
-keep class com.tencent.tpns.dataacquisition.** {*;}
-dontshrink
-dontoptimize
-dontwarn com.google.android.maps.**
-dontwarn com.squareup.okhttp.**
-dontwarn android.webkit.WebView
-dontwarn com.umeng.**
-dontwarn com.tencent.weibo.sdk.**
-dontwarn com.facebook.**
-keep public class javax.**
-keep public class android.webkit.**
-dontwarn android.support.v4.**
-keep enum com.facebook.**
-keepattributes Exceptions,InnerClasses,Signature
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keepattributes EnclosingMethod
-keep public interface com.facebook.**
-keep public interface com.tencent.**
-keep public interface com.umeng.socialize.**
-keep public interface com.umeng.socialize.sensor.**
-keep public interface com.umeng.scrshot.**
-keep public class com.umeng.socialize.* {*;}
-keep class com.umeng.commonsdk.statistics.common.MLog {*;}
-keep class com.umeng.commonsdk.UMConfigure {*;}
-keep class com.umeng.** {*;}
-keep class com.umeng.**
-keep class com.facebook.**
-keep class com.facebook.** { *; }
-keep class com.umeng.scrshot.**
-keep public class com.tencent.** {*;}
-keep class com.umeng.socialize.sensor.**
-keep class com.umeng.socialize.handler.**
-keep class com.umeng.socialize.handler.*
-keep class com.umeng.weixin.handler.**
-keep class com.umeng.weixin.handler.*
-keep class com.umeng.qq.handler.**
-keep class com.umeng.qq.handler.*
-keep class UMMoreHandler{*;}
-keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;}
-keep class com.tencent.mm.sdk.modelmsg.** implements com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;}
-keep class im.yixin.sdk.api.YXMessage {*;}
-keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}
-keep class com.tencent.mm.sdk.** {
*;
}
-keep class com.tencent.mm.opensdk.** {
*;
}
-keep class com.tencent.wxop.** {
*;
}
-keep class com.tencent.mm.sdk.** {
*;
}
-dontwarn twitter4j.**
-keep class twitter4j.** { *; }
-keep class com.tencent.** {*;}
-dontwarn com.tencent.**
-keep class com.kakao.** {*;}
-dontwarn com.kakao.**
-keep public class com.umeng.com.umeng.soexample.R$*{
public static final int *;
}
-keep public class com.linkedin.android.mobilesdk.R$*{
public static final int *;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class com.tencent.open.TDialog$*
-keep class com.tencent.open.TDialog$* {*;}
-keep class com.tencent.open.PKDialog
-keep class com.tencent.open.PKDialog {*;}
-keep class com.tencent.open.PKDialog$*
-keep class com.tencent.open.PKDialog$* {*;}
-keep class com.umeng.socialize.impl.ImageImpl {*;}
-keep class com.sina.** {*;}
-dontwarn com.sina.**
-keep class com.alipay.share.sdk.** {
*;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
-keep class com.linkedin.** { *; }
-keep class com.android.dingtalk.share.ddsharemodule.** { *; }
-keepattributes Signature
......@@ -23,12 +23,12 @@
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- 支持A-GPS辅助定位 -->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!-- 用于 log 日志 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!-- 配置可查询包名, 配置测试游戏必须添加 添加 -->
<queries>
<package android:name="com.tencent.mm" />
<package android:name="com.tencent.mobileqq" />
<package android:name="com.qzone" />
<package android:name="com.baidu.browser.apps" />
<package android:name="com.ldsanguo.shark" />
<package android:name="com.ldsanguomj.shark" />
......@@ -36,7 +36,6 @@
<package android:name="com.google.android.gsf" />
<package android:name="com.google.android.gms" />
<package android:name="com.android.vending" />
<package android:name="com.tencent.mobileqq" />
<package android:name="com.tencent.mm" />
<package android:name="com.goplaycn.googleinstall" />
<package android:name="io.kkzs" />
......@@ -102,15 +101,15 @@
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- <provider -->
<!-- android:name="android.support.v4.content.FileProvider" -->
<!-- android:authorities="com.ccwangluo.accelerator.fileprovider" -->
<!-- android:exported="false" -->
<!-- android:grantUriPermissions="true"> -->
<!-- <meta-data -->
<!-- android:name="android.support.FILE_PROVIDER_PATHS" -->
<!-- android:resource="@xml/filepaths"/> -->
<!-- </provider> -->
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<provider android:name="androidx.core.content.FileProvider"
android:authorities="com.ccwangluo.accelerator.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths"/>
</provider>
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
......@@ -120,24 +119,24 @@
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="1212121" />
<data android:scheme="101994779" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="behind"
android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- <provider -->
<!-- android:authorities="${applicationId}.fileprovider" -->
<!-- android:name="android.support.v4.content.FileProvider" -->
<!-- android:exported="false" -->
<!-- android:grantUriPermissions="true" -->
<!-- > -->
<!-- <meta-data -->
<!-- android:name="android.support.FILE_PROVIDER_PATHS" -->
<!-- android:resource="@xml/filepaths"/> -->
<!-- </provider> -->
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- <provider-->
<!-- android:authorities="com.ccwangluo.accelerator.fileprovider"-->
<!-- android:name="androidx.core.content.FileProvider"-->
<!-- android:exported="false"-->
<!-- android:grantUriPermissions="true"-->
<!-- >-->
<!-- <meta-data-->
<!-- android:name="android.support.FILE_PROVIDER_PATHS"-->
<!-- android:resource="@xml/filepaths"/>-->
<!-- </provider>-->
<activity
android:name="com.chuanglan.shanyan_sdk.view.CmccLoginActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
......
package com.ccwangluo.accelerator
import android.app.Application
import android.content.Context
import android.content.res.Configuration
import android.os.Environment
import androidx.multidex.MultiDex
import com.ccwangluo.accelerator.ui.MainActivity
import com.ccwangluo.accelerator.utils.PhoneUtils
import com.ccwangluo.accelerator.utils.dataReport.DataReoortUtils
import com.ccwangluo.cc_quickly.utils.SettingSPUtils
import com.github.shadowsocks.Core
import com.hjq.toast.ToastUtils
import com.tencent.bugly.Bugly
import com.tencent.bugly.BuglyStrategy
import com.tencent.bugly.beta.Beta
import com.tencent.android.tpush.XGPushConfig
import com.tencent.map.geolocation.TencentLocationManager
import com.tencent.mmkv.MMKV
import com.umeng.commonsdk.UMConfigure
import com.umeng.socialize.PlatformConfig
import com.xuexiang.xpage.PageConfig
import com.xuexiang.xpage.base.XPageActivity
import com.xuexiang.xutil.XUtil
......@@ -39,6 +37,16 @@ class App : Application(), androidx.work.Configuration.Provider by Core {
MMKV.initialize(this)
XGPushConfig.enableDebug(this, true);
XUtil.init(this)
UMConfigure.init(this,"61f0aa7fe014255fcb06a0bd"
,"umeng",UMConfigure.DEVICE_TYPE_PHONE,"")
// 微信设置
PlatformConfig.setWeixin("wx9271931475fae8ce","8f8686adb87efa476af92f2ccd196dad");
PlatformConfig.setWXFileProvider("com.ccwangluo.accelerator.fileprovider");
// QQ设置
PlatformConfig.setQQZone("101994779","7c34e16cadc3040bb3e8fa900c8a9c0f");
PlatformConfig.setQQFileProvider("com.tencent.sample2.fileprovider");
}
fun initBugly() {
......
......@@ -10,7 +10,7 @@ import com.ccwangluo.accelerator.ui.home.AccelertorViewModel
import com.ccwangluo.accelerator.ui.home.MineFragment
import com.ccwangluo.accelerator.ui.home.NewsFragment
import com.ccwangluo.accelerator.utils.LoginUtils
import com.ccwangluo.accelerator.utils.dataReport.DataReoortUtils
import com.ccwangluo.accelerator.utils.dataReport.DataRePortUtils
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.xuexiang.xpage.annotation.Page
import com.xuexiang.xpage.base.XPageFragment
......@@ -101,8 +101,8 @@ class BottomNavigationFragment : XPageFragment(), ViewPager.OnPageChangeListener
if (index != -1) {
binding.viewPager.setCurrentItem(index, true)
when(index){
0 -> DataReoortUtils.report("st_speed_tab_clk")
1 -> DataReoortUtils.report("st_msg_tab_clk")
0 -> DataRePortUtils.report("st_speed_tab_clk")
1 -> DataRePortUtils.report("st_msg_tab_clk")
}
return true
}
......
......@@ -33,25 +33,18 @@ import android.hardware.SensorManager
import android.hardware.SensorEventListener
import android.os.Handler
import android.util.Log
import com.ccwangluo.accelerator.utils.SysUtils
import com.ccwangluo.accelerator.utils.dataReport.DataReoortUtils
import com.xuexiang.xutil.net.NetworkUtils
import com.xuexiang.xutil.system.PermissionUtils
import com.ccwangluo.accelerator.ui.dialog.PermissionDialog
import com.ccwangluo.accelerator.utils.dataReport.DataRePortUtils
import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer
import java.security.Permission
import com.tencent.android.tpush.XGIOperateCallback
import com.tencent.android.tpush.XGPushManager
class MainActivity() : XPageActivity(), TencentLocationListener {
private val connect = registerForActivityResult(StartService()) {
if (it) {
DataReoortUtils.report("st_speed_result", mapOf("result" to 0,"cause" to 2))
DataRePortUtils.report("st_speed_result", mapOf("result" to 0, "cause" to 2))
ToastUtils.show("开启vpn权限失败")
}
}
......@@ -69,9 +62,38 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
if (SettingSPUtils.lastAPPOpenReportTime == 0L ||
System.currentTimeMillis() - SettingSPUtils.lastAPPOpenReportTime > 30 * 60 * 1000
) {
DataReoortUtils.report("start_app")
DataRePortUtils.report("start_app")
}
initPhoneUtils()
PageOption.to(SplashFragment::class.java).open(this)
Tencent.setIsPermissionGranted(true)
//隐私协议
if (!SettingSPUtils.isAgreePrivacy) {
PrivacyDialog(this, HttpConfig.HTML_HOST_PRIVACY + "index.html") {
if (it) {
SettingSPUtils.isAgreePrivacy = true
DataRePortUtils.report("st_agrmt_ok")
PermissionDialog(this) {
getPermission()
}.show<PermissionDialog>()
} else {
finish()
}
}.show<PrivacyDialog>()
} else {
getPermission()
}
AcceleratorUtils.initConnect(this, connect)
mSensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
mSensorEventListener = JCVideoPlayer.JCAutoFullscreenListener()
DataRePortUtils.report("st_app_open")
}
fun getPermission() {
//获取权限
Dexter.withContext(this)
.withPermissions(
......@@ -105,27 +127,6 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
}
}).check()
PageOption.to(SplashFragment::class.java).open(this)
Tencent.setIsPermissionGranted(true)
//隐私协议
if (!SettingSPUtils.isAgreePrivacy) {
PrivacyDialog(this, HttpConfig.HTML_HOST_PRIVACY+"index.html") {
if (it) {
SettingSPUtils.isAgreePrivacy = true
DataReoortUtils.report("st_agrmt_ok")
} else {
finish()
}
}.show<PrivacyDialog>()
}
AcceleratorUtils.initConnect(this, connect)
mSensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
mSensorEventListener = JCVideoPlayer.JCAutoFullscreenListener()
DataReoortUtils.report("st_app_open")
}
private fun initPhoneUtils() {
......@@ -135,7 +136,7 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
override fun onSuccess(data: Any, flag: Int) {
//token在设备卸载重装的时候有可能会变
Log.d("TPush", "注册成功,设备token为:$data")
DataReoortUtils.report("st_app_start_push")
DataRePortUtils.report("st_app_start_push")
}
override fun onFail(data: Any, errCode: Int, msg: String) {
......@@ -162,6 +163,8 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
Handler().postDelayed({
AcceleratorUtils.checkVpn()
}, 1000)
//QQ官方sdk授权
Tencent.setIsPermissionGranted(true);
}
override fun onPause() {
......
package com.ccwangluo.accelerator.ui.dialog
import android.content.Context
import android.view.View
import com.ccwangluo.accelerator.R
import com.xuexiang.xui.widget.dialog.materialdialog.CustomMaterialDialog
import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog
class PermissionDialog(var context: Context, var callBack: (Boolean) -> Unit) : CustomMaterialDialog(context) {
override fun getDialogBuilder(context: Context?): MaterialDialog.Builder {
return MaterialDialog.Builder(context!!)
.customView(R.layout.dialog_premission, false);
}
override fun initViews(context: Context?) {
findViewById<View>(R.id.premission_know).setOnClickListener {
this.dismiss<PermissionDialog>()
callBack(true)
}
}
init {
mDialog.setCancelable(false)
}
}
\ No newline at end of file
......@@ -3,8 +3,6 @@ package com.ccwangluo.accelerator.ui.home
import android.content.Intent
import android.graphics.drawable.AnimationDrawable
import android.os.Bundle
import android.support.v4.media.session.PlaybackStateCompat
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
......@@ -19,20 +17,20 @@ import com.ccwangluo.accelerator.ui.dialog.MemberDialog
import com.ccwangluo.accelerator.ui.web.CommonWebViewFragment
import com.ccwangluo.accelerator.utils.AcceleratorUtils
import com.ccwangluo.accelerator.utils.LoginUtils
import com.ccwangluo.accelerator.utils.ShareUtils
import com.ccwangluo.accelerator.utils.SysUtils
import com.ccwangluo.accelerator.utils.dataReport.DataReoortUtils
import com.ccwangluo.accelerator.utils.dataReport.DataRePortUtils
import com.ccwangluo.cc_quickly.utils.SettingSPUtils
import com.github.shadowsocks.http.HttpConfig
import com.github.shadowsocks.bg.BaseService
import com.github.shadowsocks.http.HttpConfig
import com.hjq.toast.ToastUtils
import com.tencent.bugly.beta.Beta
import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xpage.core.PageOption
import com.xuexiang.xpage.utils.TitleBar
import com.xuexiang.xui.utils.ViewUtils
import com.xuexiang.xui.widget.progress.CircleProgressView
import com.xuexiang.xutil.app.AppUtils
class AccelertorFragment : XPageFragment() {
private lateinit var binding: FragmentQuickBinding
private lateinit var accelertorViewModel: AccelertorViewModel
......@@ -151,17 +149,16 @@ class AccelertorFragment : XPageFragment() {
override fun initListeners() {
binding.iconNotice.setOnClickListener {
DataReoortUtils.report("st_speed_sysmsg_clk")
DataRePortUtils.report("st_speed_sysmsg_clk")
openToWebview(HttpConfig.UI_MESSAGE_URL)
}
binding.accShare.setOnClickListener {
DataReoortUtils.report("st_share_clk")
// TODO: 2022/3/14 share
DataRePortUtils.report("st_share_clk")
activity?.let { it1 -> ShareUtils().share(it1) }
}
binding.gamePage.setOnClickListener {
DataReoortUtils.report("st_game_sysmsg_clk")
DataRePortUtils.report("st_game_sysmsg_clk")
openWebviewForResult(HttpConfig.UI_GAME_URL + "?gameId=${AcceleratorUtils.game?.id}")
}
......@@ -178,16 +175,16 @@ class AccelertorFragment : XPageFragment() {
}
binding.preventAccLost.setOnClickListener {
DataReoortUtils.report("st_speed_lostcon_clk")
DataRePortUtils.report("st_speed_lostcon_clk")
openToWebview(HttpConfig.UI_SPEED_URL + "?id=1")
}
binding.preventAccInvalid.setOnClickListener {
DataReoortUtils.report("st_speed_disabl_clk")
DataRePortUtils.report("st_speed_disabl_clk")
openToWebview(HttpConfig.UI_SPEED_URL + "?id=2")
}
binding.btnExpend.setOnClickListener {
DataReoortUtils.report("st_speed_msg_clk")
DataRePortUtils.report("st_speed_msg_clk")
if (binding.expandableLayout1.isExpanded) {
binding.expandableLayout1.toggle()
binding.expandableLayout2.expand()
......@@ -205,17 +202,17 @@ class AccelertorFragment : XPageFragment() {
CommonDialog(it).setTitle("加速停止确认")
.setContent("停止加速可能会导致游戏断线,是否确认停止?")
.setBtnLeft("取消", {
DataReoortUtils.report("st_speed_stop_pop_cancel_clk")
DataRePortUtils.report("st_speed_stop_pop_cancel_clk")
}).setBtnRight("停止加速", {
DataReoortUtils.report("st_speed_stop_pop_ok_clk")
DataRePortUtils.report("st_speed_stop_pop_ok_clk")
AcceleratorUtils.stopAccelerator()
}).show<CommonDialog>()
DataReoortUtils.report("st_speed_stop_pop_show")
DataRePortUtils.report("st_speed_stop_pop_show")
}
DataReoortUtils.report("st_speed_stop_clk")
DataRePortUtils.report("st_speed_stop_clk")
return@setOnClickListener
} else {
DataReoortUtils.report("st_speed_start_clk")
DataRePortUtils.report("st_speed_start_clk")
}
}
if (!LoginUtils.hasToken()) {
......@@ -224,7 +221,7 @@ class AccelertorFragment : XPageFragment() {
})
}
DataReoortUtils.report("st_speed_result", mapOf("result" to 0, "cause" to "3"))
DataRePortUtils.report("st_speed_result", mapOf("result" to 0, "cause" to "3"))
return@setOnClickListener
}
......@@ -234,7 +231,7 @@ class AccelertorFragment : XPageFragment() {
binding.quickTopToastTx.postDelayed({
binding.quickTopToast.visibility = View.GONE
}, 2000)
DataReoortUtils.report("st_speed_result", mapOf("result" to 0, "cause" to "3"))
DataRePortUtils.report("st_speed_result", mapOf("result" to 0, "cause" to "3"))
return@setOnClickListener
}
AcceleratorUtils.getGameList(this) {
......@@ -247,7 +244,7 @@ class AccelertorFragment : XPageFragment() {
binding.quickTopToastTx.postDelayed({
binding.quickTopToast.visibility = View.GONE
}, 2000)
DataReoortUtils.report(
DataRePortUtils.report(
"st_speed_result",
mapOf("result" to 0, "cause" to "1")
)
......@@ -260,7 +257,7 @@ class AccelertorFragment : XPageFragment() {
binding.btnQuick.isEnabled = false
startAnim()
} else {
DataReoortUtils.report(
DataRePortUtils.report(
"st_speed_result",
mapOf("result" to 0, "cause" to 3)
)
......@@ -268,7 +265,7 @@ class AccelertorFragment : XPageFragment() {
}
}
} else {
DataReoortUtils.report("st_speed_result", mapOf("result" to 0, "cause" to "3"))
DataRePortUtils.report("st_speed_result", mapOf("result" to 0, "cause" to "3"))
ToastUtils.show("获取游戏配置异常")
}
}
......@@ -279,7 +276,7 @@ class AccelertorFragment : XPageFragment() {
binding.gameStart.setOnClickListener {
if (!binding.expandableLayout1.isExpanded) {
AcceleratorUtils.game?.let {
DataReoortUtils.report("st_speed_game_start_clk")
DataRePortUtils.report("st_speed_game_start_clk")
try {
AppUtils.launchApp(it.packageName)
} catch (e: Exception) {
......@@ -353,13 +350,13 @@ class AccelertorFragment : XPageFragment() {
CommonDialog(it).setTitle("防止加速掉线")
.setContent("为了防止加速进程被手机系统中断,影响游戏加速,请确保完成相关设置")
.setBtnLeft("取消", {
DataReoortUtils.report("st_speed_course_pop_cancel_clk")
DataRePortUtils.report("st_speed_course_pop_cancel_clk")
}).setBtnRight("去设置", {
openToWebview(HttpConfig.UI_SPEED_URL + "?id=1")
DataReoortUtils.report("st_speed_course_pop_set_clk")
DataRePortUtils.report("st_speed_course_pop_set_clk")
}).show<CommonDialog>()
SettingSPUtils.isFirstAccSuccess = false
DataReoortUtils.report("st_speed_course_pop_show")
DataRePortUtils.report("st_speed_course_pop_show")
}
}
......@@ -428,7 +425,7 @@ class AccelertorFragment : XPageFragment() {
fun startAccSuccess() {
if (binding.gameStart.visibility == View.GONE) {
DataReoortUtils.report("st_speed_result", mapOf("result" to 1))
DataRePortUtils.report("st_speed_result", mapOf("result" to 1))
binding.gamePicIn1.startAnimation(getDefaultAnim())
binding.accStateTx.visibility = View.VISIBLE
binding.btnQuick.setBackgroundResource(R.mipmap.quick_stop)
......
......@@ -6,7 +6,6 @@ import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
......@@ -15,29 +14,19 @@ import com.bumptech.glide.Glide
import com.ccwangluo.accelerator.R
import com.ccwangluo.accelerator.adapter.KotlinDataAdapter
import com.ccwangluo.accelerator.databinding.FragmentNewsBinding
import com.ccwangluo.accelerator.model.News
import com.ccwangluo.accelerator.model.Plugin
import com.ccwangluo.accelerator.ui.MainActivity
import com.ccwangluo.accelerator.ui.news.NewsCollectionAdapter
import com.ccwangluo.accelerator.ui.web.CommonWebViewFragment
import com.ccwangluo.accelerator.utils.AcceleratorUtils
import com.ccwangluo.accelerator.utils.LoginUtils
import com.ccwangluo.accelerator.utils.SysUtils
import com.ccwangluo.accelerator.utils.dataReport.DataReoortUtils
import com.ccwangluo.cc_quickly.utils.XToastUtils
import com.github.shadowsocks.http.HttpConfig
import com.ccwangluo.accelerator.utils.dataReport.DataRePortUtils
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
import com.hjq.toast.ToastUtils
import com.just.agentweb.download.DownloadTask
import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xpage.utils.TitleBar
import com.xuexiang.xui.widget.tabbar.TabSegment
import com.xuexiang.xui.widget.toast.XToast
import com.xuexiang.xutil.XUtil
import com.xuexiang.xutil.app.AppUtils
class NewsFragment : XPageFragment() {
private var _binding: FragmentNewsBinding? = null
......@@ -104,14 +93,14 @@ class NewsFragment : XPageFragment() {
if (itemData.type == 1) {
itemData.url?.let {
DataReoortUtils.report("st_qq_clk", mapOf("scene" to 3))
DataRePortUtils.report("st_qq_clk", mapOf("scene" to 3))
context?.let { it1 -> SysUtils.joinQQGroup(it1) }
}
}
if (itemData.type == 2) {
itemData.url?.let {
DataReoortUtils.report("st_google_clk", mapOf("scene" to 3))
DataRePortUtils.report("st_google_clk", mapOf("scene" to 3))
openToWebview(it)
}
}
......@@ -141,9 +130,8 @@ class NewsFragment : XPageFragment() {
binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
tab?.let {
DataReoortUtils.report("st_msg_channel_clk", mapOf("headline" to it.position.toString()))
DataRePortUtils.report("st_msg_channel_clk", mapOf("headlin" to it.position))
}
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
......
......@@ -5,12 +5,12 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.ccwangluo.accelerator.model.LoginRes
import com.ccwangluo.accelerator.utils.LoginUtils
import com.ccwangluo.accelerator.utils.dataReport.DataReoortUtils
import com.ccwangluo.accelerator.utils.SysUtils
import com.ccwangluo.accelerator.utils.dataReport.DataRePortUtils
import com.ccwangluo.accelerator.utils.http.HttpGo
import com.hjq.toast.ToastUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class LoginViewModel : ViewModel() {
......@@ -23,11 +23,12 @@ class LoginViewModel : ViewModel() {
val map = mutableMapOf<String, String>()
map.put("phone", phone)
map.put("verifyCode", authCdoe)
SysUtils.getDeviceUUID()?.let { map.put("did", it) }
viewModelScope.launch(Dispatchers.IO) {
val res = HttpGo.postSync<LoginRes>("/api/user/verifyCode/login", map)
res?.let {
if (it.code == 200) {
DataReoortUtils.report("st_login_vercode_result", mapOf("result" to 1))
DataRePortUtils.report("st_login_vercode_result", mapOf("result" to 1))
LoginUtils.token = it.data?.token
LoginUtils.uid = it.data?.phone
loginState.postValue(true)
......@@ -36,7 +37,7 @@ class LoginViewModel : ViewModel() {
it.error?.let { it1 ->
map.put("cause", it1)
}
DataReoortUtils.report(
DataRePortUtils.report(
"st_login_vercode_result", map
)
ToastUtils.show(it.error)
......
......@@ -8,15 +8,12 @@ import androidx.lifecycle.ViewModelProvider
import com.ccwangluo.accelerator.databinding.FragmentLoginPhoneBinding
import com.ccwangluo.accelerator.ui.web.BlankActivity
import com.ccwangluo.accelerator.ui.web.CommonWebViewFragment
import com.ccwangluo.accelerator.utils.AcceleratorUtils
import com.ccwangluo.accelerator.utils.LoginUtils
import com.ccwangluo.accelerator.utils.dataReport.DataReoortUtils
import com.ccwangluo.accelerator.utils.dataReport.DataRePortUtils
import com.github.shadowsocks.http.HttpConfig
import com.hjq.toast.ToastUtils
import com.xuexiang.xpage.annotation.Page
import com.xuexiang.xpage.base.XPageActivity
import com.xuexiang.xpage.core.PageOption
import com.xuexiang.xpage.enums.CoreAnim
import com.xuexiang.xutil.common.StringUtils
import java.util.regex.Pattern
......@@ -33,7 +30,7 @@ class PhoneLoginActivity : XPageActivity() {
setContentView(binding.root)
initViews()
initListeners()
DataReoortUtils.report("st_login_vercode_show")
DataRePortUtils.report("st_login_vercode_show")
}
fun initViews() {
......@@ -54,12 +51,12 @@ class PhoneLoginActivity : XPageActivity() {
}
binding.phoneEt.setOnFocusChangeListener { v, hasFocus ->
if (hasFocus) {
DataReoortUtils.report("st_login_ph_input")
DataRePortUtils.report("st_login_ph_input")
}
}
binding.authCodeEt.setOnFocusChangeListener { v, hasFocus ->
if (hasFocus) {
DataReoortUtils.report("st_login_vercode_write")
DataRePortUtils.report("st_login_vercode_write")
}
}
......@@ -89,7 +86,7 @@ class PhoneLoginActivity : XPageActivity() {
loginViewModel.loginState.observe(this, {
if (it) {
LoginUtils.stopTimer()
DataReoortUtils.report("role_entry", mutableMapOf("login" to "login_vercode"))
DataRePortUtils.report("role_entry", mutableMapOf("login" to "login_vercode"))
finish()
}
})
......@@ -128,7 +125,7 @@ class PhoneLoginActivity : XPageActivity() {
}
binding.authCodeBtn.setOnClickListener {
DataReoortUtils.report("st_login_vercode_request_clk")
DataRePortUtils.report("st_login_vercode_request_clk")
val phone = binding.phoneEt.text.toString()
if (StringUtils.isEmpty(phone) || !isPhone(phone)) {
ToastUtils.show("输入正确的手机号")
......@@ -143,7 +140,7 @@ class PhoneLoginActivity : XPageActivity() {
}
binding.login.setOnClickListener {
DataReoortUtils.report("st_login_vercode_btn_clk")
DataRePortUtils.report("st_login_vercode_btn_clk")
//检查验证码,手机号格式
val phone = binding.phoneEt.text.toString()
val authCdoe = binding.authCodeEt.text.toString()
......
......@@ -7,35 +7,19 @@ import com.github.shadowsocks.http.HttpConfig
import com.ccwangluo.cc_quickly.utils.SettingSPUtils
import com.ccwangluo.cc_quickly.utils.XToastUtils
import com.just.agentweb.core.AgentWeb
import com.karumi.dexter.Dexter
import com.karumi.dexter.MultiplePermissionsReport
import com.karumi.dexter.PermissionToken
import com.karumi.dexter.listener.PermissionRequest
import com.karumi.dexter.listener.multi.MultiplePermissionsListener
import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xutil.app.AppUtils
import com.xuexiang.xutil.system.PermissionUtils
import android.content.Intent
import android.media.audiofx.BassBoost
import android.net.Uri
import android.os.Handler
import android.provider.Settings
import com.hjq.toast.ToastUtils
import java.lang.Exception
import android.util.DisplayMetrics
import android.util.Log
import com.ccwangluo.accelerator.utils.AcceleratorUtils
import com.ccwangluo.accelerator.utils.ShareUtils
import com.ccwangluo.accelerator.utils.SysUtils
import com.ccwangluo.accelerator.utils.dataReport.DataReoortUtils
import com.ccwangluo.accelerator.utils.dataReport.DataRePortUtils
import com.github.shadowsocks.bg.BaseService
import com.github.shadowsocks.plugin.PluginContract
import com.tencent.bugly.beta.Beta
import com.tencent.bugly.beta.UpgradeInfo
import com.xuexiang.xutil.net.NetworkUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.json.JSONObject
import java.util.*
/**
......@@ -357,7 +341,15 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
@JavascriptInterface
fun dataReport(event: String, data: String) {
DataReoortUtils.report(event, data)
DataRePortUtils.report(event, data)
}
@JavascriptInterface
fun share() {
xPageFragment.activity?.let {
ShareUtils().share(it)
}
}
}
\ No newline at end of file
......@@ -3,19 +3,16 @@ package com.ccwangluo.accelerator.utils
import android.annotation.SuppressLint
import android.content.Context
import android.os.RemoteException
import android.util.Log
import androidx.activity.result.ActivityResultLauncher
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import com.ccwangluo.accelerator.model.*
import com.ccwangluo.accelerator.ui.dialog.CommonDialog
import com.ccwangluo.accelerator.utils.dataReport.DataReoortUtils
import com.ccwangluo.accelerator.utils.dataReport.DataRePortUtils
import com.ccwangluo.accelerator.utils.http.HttpGo
import com.ccwangluo.cc_quickly.utils.SettingSPUtils
import com.github.shadowsocks.Core
import com.github.shadowsocks.acl.Acl
import com.github.shadowsocks.aidl.IShadowsocksService
import com.github.shadowsocks.aidl.IShadowsocksServiceCallback
import com.github.shadowsocks.aidl.ShadowsocksConnection
import com.github.shadowsocks.bg.AuthManager
......@@ -23,18 +20,11 @@ import com.github.shadowsocks.bg.AuthManager.ACC_TIME
import com.github.shadowsocks.bg.BaseService
import com.github.shadowsocks.database.Profile
import com.github.shadowsocks.database.ProfileManager
import com.github.shadowsocks.http.LineConfig
import com.github.shadowsocks.preference.DataStore
import com.hjq.toast.ToastUtils
import com.tencent.mmkv.MMKV
import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xutil.common.StringUtils
import com.xuexiang.xutil.net.NetworkUtils
import com.xuexiang.xutil.system.PermissionUtils
import kotlinx.coroutines.*
import timber.log.Timber
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit
/**
......@@ -216,7 +206,7 @@ object AcceleratorUtils {
AcceleratorUtils.state = state
stateListener(state, getAccTime(), null)
if (state == BaseService.State.Stopped && !msg.isNullOrBlank()) {
DataReoortUtils.report("st_speed_result", mapOf("result" to 0, "cause" to 3.toString()))
DataRePortUtils.report("st_speed_result", mapOf("result" to 0, "cause" to 3.toString()))
if("vip到期".equals(msg)||(msg!=null&&msg.startsWith("vip已到期"))){
vipExpireListener()
}else{
......
......@@ -3,12 +3,11 @@ package com.ccwangluo.accelerator.utils
import android.content.Context
import android.content.Intent
import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
import android.util.Log
import androidx.lifecycle.lifecycleScope
import com.ccwangluo.accelerator.model.LoginRes
import com.ccwangluo.accelerator.model.UserProfile
import com.ccwangluo.accelerator.ui.login.PhoneLoginActivity
import com.ccwangluo.accelerator.utils.dataReport.DataReoortUtils
import com.ccwangluo.accelerator.utils.dataReport.DataRePortUtils
import com.ccwangluo.accelerator.utils.http.HttpGo
import com.chuanglan.shanyan_sdk.OneKeyLoginManager
import com.github.shadowsocks.Core
......@@ -16,8 +15,6 @@ import com.github.shadowsocks.bg.AuthManager
import com.hjq.toast.ToastUtils
import com.tencent.mmkv.MMKV
import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xpage.core.PageOption
import com.xuexiang.xutil.app.AppUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
......@@ -112,6 +109,7 @@ object LoginUtils {
if (b) {
val map = mutableMapOf<String, String>()
map.put("token", s)
SysUtils.getDeviceUUID()?.let { map.put("did", it) }
GlobalScope.launch(Dispatchers.IO) {
val res = HttpGo.postSync<LoginRes>("/api/user/flash/login", map)
res?.let {
......@@ -121,7 +119,7 @@ object LoginUtils {
withContext(Dispatchers.Main) {
ToastUtils.show("登录成功")
OneKeyLoginManager.getInstance().finishAuthActivity()
DataReoortUtils.report("role_entry", mutableMapOf("login" to "login_all"))
DataRePortUtils.report("role_entry", mutableMapOf("login" to "login_all"))
callBack(true)
}
} else {
......
......@@ -11,13 +11,11 @@ import android.widget.RelativeLayout
import android.widget.TextView
import com.ccwangluo.accelerator.R
import com.ccwangluo.accelerator.ui.login.PhoneLoginActivity
import com.ccwangluo.accelerator.utils.dataReport.DataReoortUtils
import com.ccwangluo.accelerator.utils.dataReport.DataRePortUtils
import com.chuanglan.shanyan_sdk.OneKeyLoginManager
import com.chuanglan.shanyan_sdk.tool.ShanYanUIConfig
import com.github.shadowsocks.http.HttpConfig
import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xpage.core.PageOption
import org.json.JSONObject
......@@ -57,7 +55,7 @@ object PhoneUtils {
if (code != 1000) {
callback(false, "")
} else {
DataReoortUtils.report("st_login_one_show")
DataRePortUtils.report("st_login_one_show")
}
Log.i(TAG, "openLoginAuth: $result")
}
......@@ -65,10 +63,10 @@ object PhoneUtils {
if (code == 1000) {
val json = JSONObject(result)
DataReoortUtils.report("st_login_one_result", mapOf("result" to 1))
DataRePortUtils.report("st_login_one_result", mapOf("result" to 1))
callback(true, json.getString("token"))
} else {
DataReoortUtils.report(
DataRePortUtils.report(
"st_login_one_result",
mapOf("result" to 0, "cause" to result)
)
......@@ -149,7 +147,7 @@ object PhoneUtils {
val intent = Intent(context, PhoneLoginActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
DataReoortUtils.report("st_login_other_clk")
DataRePortUtils.report("st_login_other_clk")
}
.setPrivacyState(false)
.setCheckedImgPath(mCheckedImg)
......
package com.ccwangluo.accelerator.utils
import android.R.attr.thumb
import android.app.Activity
import android.content.Context
import android.view.View
import android.view.ViewGroup
import com.ccwangluo.accelerator.R
import com.ccwangluo.accelerator.utils.dataReport.DataRePortUtils
import com.github.shadowsocks.http.HttpConfig
import com.umeng.socialize.ShareAction
import com.umeng.socialize.bean.SHARE_MEDIA
import com.umeng.socialize.media.UMWeb
import com.xuexiang.xui.widget.dialog.bottomsheet.BottomSheet
class ShareUtils {
var mdialog: BottomSheet? = null
fun share(activity: Activity) {
mdialog = BottomSheet(activity)
val contentView: View = buildViews(activity)
mdialog?.setContentView(contentView,
ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT))
mdialog?.show()
}
fun buildViews(activity: Activity): View {
val inflate = View.inflate(activity, R.layout.bottom_sheet_share, null)
inflate.findViewById<View>(R.id.share_wechat).setOnClickListener {
DataRePortUtils.report("st_share_wechat_clk")
shareWeb(activity, SHARE_MEDIA.WEIXIN)
}
inflate.findViewById<View>(R.id.share_pyq).setOnClickListener {
DataRePortUtils.report("st_share_wetfriends_clk")
shareWeb(activity, SHARE_MEDIA.WEIXIN_CIRCLE)
}
inflate.findViewById<View>(R.id.share_qq).setOnClickListener {
DataRePortUtils.report("st_share_qq_clk")
shareWeb(activity, SHARE_MEDIA.QQ)
}
inflate.findViewById<View>(R.id.share_qqzore).setOnClickListener {
DataRePortUtils.report("st_share_qqspace_clk")
shareWeb(activity, SHARE_MEDIA.QZONE)
}
inflate.findViewById<View>(R.id.share_close).setOnClickListener {
mdialog?.dismiss()
}
return inflate
}
fun shareWeb(activity: Activity, type: SHARE_MEDIA) {
mdialog?.dismiss()
val web: UMWeb = UMWeb(HttpConfig.SHARE_URL)
web.title = "TT手游加速器-韩服专线 畅玩你的快乐" //标题
// web.setThumb(thumb) //缩略图
web.description = "韩服专线一键加速,告别手机网络卡顿、延迟、加速慢等问题,韩服游戏加速就用专业的TT加速器!" //描述
ShareAction(activity)
.setPlatform(type)
.withMedia(web)
.share()
}
}
\ No newline at end of file
......@@ -9,7 +9,7 @@ import java.time.LocalDateTime
data class BaseData(
var channel: Int = 0,
var client_ip: String = NetworkUtils.getIPAddress(true),
var client_ip: String = "127.0.0.1",
var did: String? = SysUtils.getDeviceUUID(),
var ds: String = LocalDateTime.now().toString(),
var event: String = "",
......
package com.ccwangluo.accelerator.utils.dataReport
import com.ccwangluo.accelerator.utils.LoginUtils
import com.ccwangluo.accelerator.utils.SysUtils
import com.ccwangluo.accelerator.utils.http.HttpGo
import com.google.gson.Gson
import com.google.gson.JsonParser
import com.xuexiang.xutil.net.NetworkUtils
import org.json.JSONObject
import java.time.LocalDateTime
/**
* 日志上报
*/
object DataReoortUtils {
object DataRePortUtils {
val list = mutableSetOf<BaseData>()
val gson = Gson()
fun report(eventName: String, param: Map<String, out Any>) {
fun report(eventName: String, param: Map<String, Any>) {
report(eventName, gson.toJson(param).toString())
}
......
<?xml version="1.0" encoding="utf-8"?>
<com.xuexiang.xui.widget.layout.XUILinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical"
app:xui_borderColor="@color/white"
app:xui_outerNormalColor="@color/white"
app:xui_hideRadiusSide="bottom"
app:xui_radius="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="123dp"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/share_wechat"
android:layout_width="0dp"
android:orientation="vertical"
android:gravity="center"
android:layout_weight="1"
android:layout_height="match_parent">
<ImageView
android:layout_width="44dp"
android:layout_height="43.85dp"
android:background="@mipmap/ic_wechat"
/>
<TextView
android:layout_marginTop="8.15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="微信"
android:textColor="#FF000000"
android:textSize="13sp"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/share_pyq"
android:layout_width="0dp"
android:orientation="vertical"
android:gravity="center"
android:layout_weight="1"
android:layout_height="match_parent">
<ImageView
android:layout_width="44dp"
android:layout_height="43.85dp"
android:background="@mipmap/ic_pyq"
/>
<TextView
android:layout_marginTop="8.15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="朋友圈"
android:textColor="#FF000000"
android:textSize="13sp"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/share_qq"
android:layout_width="0dp"
android:orientation="vertical"
android:gravity="center"
android:layout_weight="1"
android:layout_height="match_parent">
<ImageView
android:layout_width="44dp"
android:layout_height="43.85dp"
android:background="@mipmap/ic_qq"
/>
<TextView
android:layout_marginTop="8.15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="QQ"
android:textColor="#FF000000"
android:textSize="13sp"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/share_qqzore"
android:layout_width="0dp"
android:orientation="vertical"
android:gravity="center"
android:layout_weight="1"
android:layout_height="match_parent">
<ImageView
android:layout_width="44dp"
android:layout_height="43.85dp"
android:background="@mipmap/ic_qqkj"
/>
<TextView
android:layout_marginTop="8.15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="QQ空间"
android:textColor="#FF000000"
android:textSize="13sp"
/>
</LinearLayout>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="#FFE3E3E3"
/>
<FrameLayout
android:id="@+id/share_close"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:layout_gravity="center"
android:layout_width="32dp"
android:layout_height="22.5dp"
android:text="关闭"
android:textColor="#FF2A2A2A"
android:textSize="16sp"
/>
</FrameLayout>
</com.xuexiang.xui.widget.layout.XUILinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="302dp"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical"
android:paddingLeft="20dp"
android:paddingRight="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="22dp"
android:text="权限说明"
android:textColor="#FF000000"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="21.5dp"
android:text="1.设备信息"
android:textColor="#FF4A4A4A"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="7dp"
android:text="用于生成您的账号信息,把您完成安全信息确认和数据统计"
android:textColor="#FF9A9A9A"
android:textSize="12sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="2.存储空间权限"
android:textColor="#FF4A4A4A"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="7dp"
android:text="用于下载、安装游戏,上传个人头像、参与UGC内容的发布、评论等需要"
android:textColor="#FF9A9A9A"
android:textSize="12sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="3.定位权限"
android:textColor="#FF4A4A4A"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="7dp"
android:text="用于获取最优的服务器加速线路,使其达到最佳的加速效果"
android:textColor="#FF9A9A9A"
android:textSize="12sp" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="20dp"
android:background="#FFF0F0F0" />
<TextView
android:id="@+id/premission_know"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="15dp"
android:layout_marginBottom="20dp"
android:text="我知道了"
android:textColor="#FF3CA4FD"
android:textSize="15sp" />
</LinearLayout>
\ No newline at end of file
......@@ -5,7 +5,7 @@ object HttpConfig {
//app后端
//val baseUrl = "http://10.16.1.98:9002"
val baseUrl = "https://test-cc-tt-api.orangenet.org.cn" //测试
// val baseUrl = "https://cc-tt-front.srccwl.com" //生产
// val baseUrl = "https://cc-tt-front.srccwl.com" //生产
/**
......@@ -13,7 +13,7 @@ object HttpConfig {
*/
val UI_MAIN_URL = "https://test-cc-tt-front.orangenet.org.cn/#" //测试
// val UI_MAIN_URL = "http://10.3.64.200:8080/#"
//val UI_MAIN_URL = "https://cc-tt-front.srccwl.com/#" //生产
// val UI_MAIN_URL = "https://cc-tt-front.srccwl.com/#" //生产
//隐私协议地址
......@@ -40,4 +40,6 @@ object HttpConfig {
val UI_SPEED_URL = "/speed"
val MEMBER_CENTER = "/memberCenter"
//分享落地页
val SHARE_URL = "http://ttspeed.saiqinkj.com/index_pc.html"
}
\ No newline at end of file
......@@ -9,6 +9,7 @@ repositories {
}
maven { url = uri("https://jitpack.io") }
maven { url = uri("https://repo1.maven.org/maven2/") }
maven { url = uri("https://dl.bintray.com/thelasterstar/maven/") }
google()
jcenter()
mavenCentral()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment