Commit a5e8f6c8 authored by sheteng's avatar sheteng

分享和权限说明

parent 1342942d
...@@ -28,6 +28,7 @@ android { ...@@ -28,6 +28,7 @@ android {
manifestPlaceholders.put("XG_ACCESS_ID","1580009634") manifestPlaceholders.put("XG_ACCESS_ID","1580009634")
manifestPlaceholders.put("XG_ACCESS_KEY","AIJKAIYR3WPS") manifestPlaceholders.put("XG_ACCESS_KEY","AIJKAIYR3WPS")
manifestPlaceholders.put("qqappid","101994779")
} }
buildTypes { buildTypes {
...@@ -41,14 +42,13 @@ android { ...@@ -41,14 +42,13 @@ android {
isMinifyEnabled = false isMinifyEnabled = false
} }
} }
buildFeatures.viewBinding = true
} }
setupApp() setupApp()
android.defaultConfig.applicationId = "com.ccwangluo.accelerator" android.defaultConfig.applicationId = "com.ccwangluo.accelerator"
android.buildFeatures.viewBinding = true
android.buildTypes.named("release")
dependencies { dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar")))) implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
implementation("androidx.appcompat:appcompat:1.3.1") implementation("androidx.appcompat:appcompat:1.3.1")
...@@ -102,7 +102,7 @@ dependencies { ...@@ -102,7 +102,7 @@ dependencies {
implementation("com.umeng.umsdk:share-wx:7.1.7") //微信完整版) implementation("com.umeng.umsdk:share-wx:7.1.7") //微信完整版)
implementation("com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.9") 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,必选) // implementation("com.squareup.okhttp3:okhttp:3.14.9")//QQ官方sdk 3.53及之后版本需要集成okhttp3.x,必选)
//gps //gps
......
...@@ -176,3 +176,99 @@ ...@@ -176,3 +176,99 @@
-keep class com.tencent.tpns.baseapi.** {*;} -keep class com.tencent.tpns.baseapi.** {*;}
-keep class com.tencent.tpns.mqttchannel.** {*;} -keep class com.tencent.tpns.mqttchannel.** {*;}
-keep class com.tencent.tpns.dataacquisition.** {*;} -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 @@ ...@@ -23,12 +23,12 @@
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- 支持A-GPS辅助定位 --> <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.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!-- 用于 log 日志 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!-- 配置可查询包名, 配置测试游戏必须添加 添加 --> <!-- 配置可查询包名, 配置测试游戏必须添加 添加 -->
<queries> <queries>
<package android:name="com.tencent.mm" /> <package android:name="com.tencent.mm" />
<package android:name="com.tencent.mobileqq" /> <package android:name="com.tencent.mobileqq" />
<package android:name="com.qzone" />
<package android:name="com.baidu.browser.apps" /> <package android:name="com.baidu.browser.apps" />
<package android:name="com.ldsanguo.shark" /> <package android:name="com.ldsanguo.shark" />
<package android:name="com.ldsanguomj.shark" /> <package android:name="com.ldsanguomj.shark" />
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
<package android:name="com.google.android.gsf" /> <package android:name="com.google.android.gsf" />
<package android:name="com.google.android.gms" /> <package android:name="com.google.android.gms" />
<package android:name="com.android.vending" /> <package android:name="com.android.vending" />
<package android:name="com.tencent.mobileqq" />
<package android:name="com.tencent.mm" /> <package android:name="com.tencent.mm" />
<package android:name="com.goplaycn.googleinstall" /> <package android:name="com.goplaycn.googleinstall" />
<package android:name="io.kkzs" /> <package android:name="io.kkzs" />
...@@ -102,15 +101,15 @@ ...@@ -102,15 +101,15 @@
android:name=".wxapi.WXEntryActivity" android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize" android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true" android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- <provider --> android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- android:name="android.support.v4.content.FileProvider" --> <provider android:name="androidx.core.content.FileProvider"
<!-- android:authorities="com.ccwangluo.accelerator.fileprovider" --> android:authorities="com.ccwangluo.accelerator.fileprovider"
<!-- android:exported="false" --> android:exported="false"
<!-- android:grantUriPermissions="true"> --> android:grantUriPermissions="true">
<!-- <meta-data --> <meta-data
<!-- android:name="android.support.FILE_PROVIDER_PATHS" --> android:name="android.support.FILE_PROVIDER_PATHS"
<!-- android:resource="@xml/filepaths"/> --> android:resource="@xml/filepaths"/>
<!-- </provider> --> </provider>
<activity <activity
android:name="com.tencent.tauth.AuthActivity" android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask" android:launchMode="singleTask"
...@@ -120,24 +119,24 @@ ...@@ -120,24 +119,24 @@
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="101994779" />
<data android:scheme="1212121" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity <activity
android:name="com.tencent.connect.common.AssistActivity" android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden" android:configChanges="orientation|keyboardHidden"
android:screenOrientation="behind" android:screenOrientation="behind"
android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- <provider --> android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- android:authorities="${applicationId}.fileprovider" --> <!-- <provider-->
<!-- android:name="android.support.v4.content.FileProvider" --> <!-- android:authorities="com.ccwangluo.accelerator.fileprovider"-->
<!-- android:exported="false" --> <!-- android:name="androidx.core.content.FileProvider"-->
<!-- android:grantUriPermissions="true" --> <!-- android:exported="false"-->
<!-- > --> <!-- android:grantUriPermissions="true"-->
<!-- <meta-data --> <!-- >-->
<!-- android:name="android.support.FILE_PROVIDER_PATHS" --> <!-- <meta-data-->
<!-- android:resource="@xml/filepaths"/> --> <!-- android:name="android.support.FILE_PROVIDER_PATHS"-->
<!-- </provider> --> <!-- android:resource="@xml/filepaths"/>-->
<!-- </provider>-->
<activity <activity
android:name="com.chuanglan.shanyan_sdk.view.CmccLoginActivity" android:name="com.chuanglan.shanyan_sdk.view.CmccLoginActivity"
android:configChanges="keyboardHidden|orientation|screenSize" android:configChanges="keyboardHidden|orientation|screenSize"
......
package com.ccwangluo.accelerator package com.ccwangluo.accelerator
import android.app.Application import android.app.Application
import android.content.Context
import android.content.res.Configuration import android.content.res.Configuration
import android.os.Environment import android.os.Environment
import androidx.multidex.MultiDex import androidx.multidex.MultiDex
import com.ccwangluo.accelerator.ui.MainActivity import com.ccwangluo.accelerator.ui.MainActivity
import com.ccwangluo.accelerator.utils.PhoneUtils 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.github.shadowsocks.Core
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
import com.tencent.bugly.Bugly import com.tencent.bugly.Bugly
import com.tencent.bugly.BuglyStrategy import com.tencent.bugly.BuglyStrategy
import com.tencent.bugly.beta.Beta import com.tencent.bugly.beta.Beta
import com.tencent.android.tpush.XGPushConfig import com.tencent.android.tpush.XGPushConfig
import com.tencent.map.geolocation.TencentLocationManager
import com.tencent.mmkv.MMKV import com.tencent.mmkv.MMKV
import com.umeng.commonsdk.UMConfigure
import com.umeng.socialize.PlatformConfig
import com.xuexiang.xpage.PageConfig import com.xuexiang.xpage.PageConfig
import com.xuexiang.xpage.base.XPageActivity import com.xuexiang.xpage.base.XPageActivity
import com.xuexiang.xutil.XUtil import com.xuexiang.xutil.XUtil
...@@ -39,6 +37,16 @@ class App : Application(), androidx.work.Configuration.Provider by Core { ...@@ -39,6 +37,16 @@ class App : Application(), androidx.work.Configuration.Provider by Core {
MMKV.initialize(this) MMKV.initialize(this)
XGPushConfig.enableDebug(this, true); XGPushConfig.enableDebug(this, true);
XUtil.init(this) 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() { fun initBugly() {
......
...@@ -10,7 +10,7 @@ import com.ccwangluo.accelerator.ui.home.AccelertorViewModel ...@@ -10,7 +10,7 @@ import com.ccwangluo.accelerator.ui.home.AccelertorViewModel
import com.ccwangluo.accelerator.ui.home.MineFragment import com.ccwangluo.accelerator.ui.home.MineFragment
import com.ccwangluo.accelerator.ui.home.NewsFragment import com.ccwangluo.accelerator.ui.home.NewsFragment
import com.ccwangluo.accelerator.utils.LoginUtils 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.google.android.material.bottomnavigation.BottomNavigationView
import com.xuexiang.xpage.annotation.Page import com.xuexiang.xpage.annotation.Page
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
...@@ -101,8 +101,8 @@ class BottomNavigationFragment : XPageFragment(), ViewPager.OnPageChangeListener ...@@ -101,8 +101,8 @@ class BottomNavigationFragment : XPageFragment(), ViewPager.OnPageChangeListener
if (index != -1) { if (index != -1) {
binding.viewPager.setCurrentItem(index, true) binding.viewPager.setCurrentItem(index, true)
when(index){ when(index){
0 -> DataReoortUtils.report("st_speed_tab_clk") 0 -> DataRePortUtils.report("st_speed_tab_clk")
1 -> DataReoortUtils.report("st_msg_tab_clk") 1 -> DataRePortUtils.report("st_msg_tab_clk")
} }
return true return true
} }
......
...@@ -33,25 +33,18 @@ import android.hardware.SensorManager ...@@ -33,25 +33,18 @@ import android.hardware.SensorManager
import android.hardware.SensorEventListener import android.hardware.SensorEventListener
import android.os.Handler import android.os.Handler
import android.util.Log import android.util.Log
import com.ccwangluo.accelerator.utils.SysUtils import com.ccwangluo.accelerator.ui.dialog.PermissionDialog
import com.ccwangluo.accelerator.utils.dataReport.DataReoortUtils import com.ccwangluo.accelerator.utils.dataReport.DataRePortUtils
import com.xuexiang.xutil.net.NetworkUtils
import com.xuexiang.xutil.system.PermissionUtils
import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer
import java.security.Permission
import com.tencent.android.tpush.XGIOperateCallback import com.tencent.android.tpush.XGIOperateCallback
import com.tencent.android.tpush.XGPushManager import com.tencent.android.tpush.XGPushManager
class MainActivity() : XPageActivity(), TencentLocationListener { class MainActivity() : XPageActivity(), TencentLocationListener {
private val connect = registerForActivityResult(StartService()) { private val connect = registerForActivityResult(StartService()) {
if (it) { 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权限失败") ToastUtils.show("开启vpn权限失败")
} }
} }
...@@ -64,68 +57,76 @@ class MainActivity() : XPageActivity(), TencentLocationListener { ...@@ -64,68 +57,76 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
accelertorViewModel = accelertorViewModel =
ViewModelProvider(this).get(AccelertorViewModel::class.java) ViewModelProvider(this).get(AccelertorViewModel::class.java)
// app 启动 // app 启动
if (SettingSPUtils.lastAPPOpenReportTime == 0L || if (SettingSPUtils.lastAPPOpenReportTime == 0L ||
System.currentTimeMillis() - SettingSPUtils.lastAPPOpenReportTime > 30 * 60 * 1000 System.currentTimeMillis() - SettingSPUtils.lastAPPOpenReportTime > 30 * 60 * 1000
) { ) {
DataReoortUtils.report("start_app") DataRePortUtils.report("start_app")
} }
initPhoneUtils() initPhoneUtils()
//获取权限
Dexter.withContext(this)
.withPermissions(
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.CAMERA
)
.withListener(object : MultiplePermissionsListener {
override fun onPermissionsChecked(p0: MultiplePermissionsReport?) {
p0?.let {
it.grantedPermissionResponses.forEach {
if (it.permissionName.equals(Manifest.permission.ACCESS_FINE_LOCATION)) {
TencentLocationManager.getInstance(this@MainActivity)
.requestSingleFreshLocation(
null,
this@MainActivity,
Looper.getMainLooper()
)
}
}
}
}
override fun onPermissionRationaleShouldBeShown(
p0: MutableList<PermissionRequest>?,
p1: PermissionToken?
) {
// PermissionUtils.openAppSettings()
}
}).check()
PageOption.to(SplashFragment::class.java).open(this) PageOption.to(SplashFragment::class.java).open(this)
Tencent.setIsPermissionGranted(true) Tencent.setIsPermissionGranted(true)
//隐私协议 //隐私协议
if (!SettingSPUtils.isAgreePrivacy) { if (!SettingSPUtils.isAgreePrivacy) {
PrivacyDialog(this, HttpConfig.HTML_HOST_PRIVACY+"index.html") { PrivacyDialog(this, HttpConfig.HTML_HOST_PRIVACY + "index.html") {
if (it) { if (it) {
SettingSPUtils.isAgreePrivacy = true SettingSPUtils.isAgreePrivacy = true
DataReoortUtils.report("st_agrmt_ok") DataRePortUtils.report("st_agrmt_ok")
PermissionDialog(this) {
getPermission()
}.show<PermissionDialog>()
} else { } else {
finish() finish()
} }
}.show<PrivacyDialog>() }.show<PrivacyDialog>()
} else {
getPermission()
} }
AcceleratorUtils.initConnect(this, connect) AcceleratorUtils.initConnect(this, connect)
mSensorManager = getSystemService(SENSOR_SERVICE) as SensorManager mSensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
mSensorEventListener = JCVideoPlayer.JCAutoFullscreenListener() mSensorEventListener = JCVideoPlayer.JCAutoFullscreenListener()
DataReoortUtils.report("st_app_open") DataRePortUtils.report("st_app_open")
}
fun getPermission() {
//获取权限
Dexter.withContext(this)
.withPermissions(
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.CAMERA
)
.withListener(object : MultiplePermissionsListener {
override fun onPermissionsChecked(p0: MultiplePermissionsReport?) {
p0?.let {
it.grantedPermissionResponses.forEach {
if (it.permissionName.equals(Manifest.permission.ACCESS_FINE_LOCATION)) {
TencentLocationManager.getInstance(this@MainActivity)
.requestSingleFreshLocation(
null,
this@MainActivity,
Looper.getMainLooper()
)
}
}
}
}
override fun onPermissionRationaleShouldBeShown(
p0: MutableList<PermissionRequest>?,
p1: PermissionToken?
) {
// PermissionUtils.openAppSettings()
}
}).check()
} }
private fun initPhoneUtils() { private fun initPhoneUtils() {
...@@ -135,7 +136,7 @@ class MainActivity() : XPageActivity(), TencentLocationListener { ...@@ -135,7 +136,7 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
override fun onSuccess(data: Any, flag: Int) { override fun onSuccess(data: Any, flag: Int) {
//token在设备卸载重装的时候有可能会变 //token在设备卸载重装的时候有可能会变
Log.d("TPush", "注册成功,设备token为:$data") 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) { override fun onFail(data: Any, errCode: Int, msg: String) {
...@@ -155,13 +156,15 @@ class MainActivity() : XPageActivity(), TencentLocationListener { ...@@ -155,13 +156,15 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
super.onResume() super.onResume()
val mSensor = mSensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); val mSensor = mSensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager?.registerListener( mSensorManager?.registerListener(
mSensorEventListener, mSensorEventListener,
mSensor, mSensor,
SensorManager.SENSOR_DELAY_NORMAL SensorManager.SENSOR_DELAY_NORMAL
) )
Handler().postDelayed({ Handler().postDelayed({
AcceleratorUtils.checkVpn() AcceleratorUtils.checkVpn()
}, 1000) }, 1000)
//QQ官方sdk授权
Tencent.setIsPermissionGranted(true);
} }
override fun onPause() { override fun onPause() {
...@@ -186,9 +189,9 @@ class MainActivity() : XPageActivity(), TencentLocationListener { ...@@ -186,9 +189,9 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
} }
override fun onActivityResult( override fun onActivityResult(
requestCode: Int, requestCode: Int,
resultCode: Int, resultCode: Int,
data: Intent? data: Intent?
) { ) {
super.onActivityResult(requestCode, resultCode, data) super.onActivityResult(requestCode, resultCode, data)
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data) UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data)
......
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 ...@@ -3,8 +3,6 @@ package com.ccwangluo.accelerator.ui.home
import android.content.Intent import android.content.Intent
import android.graphics.drawable.AnimationDrawable import android.graphics.drawable.AnimationDrawable
import android.os.Bundle import android.os.Bundle
import android.support.v4.media.session.PlaybackStateCompat
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
...@@ -19,20 +17,20 @@ import com.ccwangluo.accelerator.ui.dialog.MemberDialog ...@@ -19,20 +17,20 @@ import com.ccwangluo.accelerator.ui.dialog.MemberDialog
import com.ccwangluo.accelerator.ui.web.CommonWebViewFragment import com.ccwangluo.accelerator.ui.web.CommonWebViewFragment
import com.ccwangluo.accelerator.utils.AcceleratorUtils import com.ccwangluo.accelerator.utils.AcceleratorUtils
import com.ccwangluo.accelerator.utils.LoginUtils import com.ccwangluo.accelerator.utils.LoginUtils
import com.ccwangluo.accelerator.utils.ShareUtils
import com.ccwangluo.accelerator.utils.SysUtils 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.ccwangluo.cc_quickly.utils.SettingSPUtils
import com.github.shadowsocks.http.HttpConfig
import com.github.shadowsocks.bg.BaseService import com.github.shadowsocks.bg.BaseService
import com.github.shadowsocks.http.HttpConfig
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
import com.tencent.bugly.beta.Beta
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xpage.core.PageOption import com.xuexiang.xpage.core.PageOption
import com.xuexiang.xpage.utils.TitleBar import com.xuexiang.xpage.utils.TitleBar
import com.xuexiang.xui.utils.ViewUtils
import com.xuexiang.xui.widget.progress.CircleProgressView import com.xuexiang.xui.widget.progress.CircleProgressView
import com.xuexiang.xutil.app.AppUtils import com.xuexiang.xutil.app.AppUtils
class AccelertorFragment : XPageFragment() { class AccelertorFragment : XPageFragment() {
private lateinit var binding: FragmentQuickBinding private lateinit var binding: FragmentQuickBinding
private lateinit var accelertorViewModel: AccelertorViewModel private lateinit var accelertorViewModel: AccelertorViewModel
...@@ -151,17 +149,16 @@ class AccelertorFragment : XPageFragment() { ...@@ -151,17 +149,16 @@ class AccelertorFragment : XPageFragment() {
override fun initListeners() { override fun initListeners() {
binding.iconNotice.setOnClickListener { binding.iconNotice.setOnClickListener {
DataReoortUtils.report("st_speed_sysmsg_clk") DataRePortUtils.report("st_speed_sysmsg_clk")
openToWebview(HttpConfig.UI_MESSAGE_URL) openToWebview(HttpConfig.UI_MESSAGE_URL)
} }
binding.accShare.setOnClickListener { binding.accShare.setOnClickListener {
DataReoortUtils.report("st_share_clk") DataRePortUtils.report("st_share_clk")
// TODO: 2022/3/14 share activity?.let { it1 -> ShareUtils().share(it1) }
} }
binding.gamePage.setOnClickListener { binding.gamePage.setOnClickListener {
DataReoortUtils.report("st_game_sysmsg_clk") DataRePortUtils.report("st_game_sysmsg_clk")
openWebviewForResult(HttpConfig.UI_GAME_URL + "?gameId=${AcceleratorUtils.game?.id}") openWebviewForResult(HttpConfig.UI_GAME_URL + "?gameId=${AcceleratorUtils.game?.id}")
} }
...@@ -178,16 +175,16 @@ class AccelertorFragment : XPageFragment() { ...@@ -178,16 +175,16 @@ class AccelertorFragment : XPageFragment() {
} }
binding.preventAccLost.setOnClickListener { binding.preventAccLost.setOnClickListener {
DataReoortUtils.report("st_speed_lostcon_clk") DataRePortUtils.report("st_speed_lostcon_clk")
openToWebview(HttpConfig.UI_SPEED_URL + "?id=1") openToWebview(HttpConfig.UI_SPEED_URL + "?id=1")
} }
binding.preventAccInvalid.setOnClickListener { binding.preventAccInvalid.setOnClickListener {
DataReoortUtils.report("st_speed_disabl_clk") DataRePortUtils.report("st_speed_disabl_clk")
openToWebview(HttpConfig.UI_SPEED_URL + "?id=2") openToWebview(HttpConfig.UI_SPEED_URL + "?id=2")
} }
binding.btnExpend.setOnClickListener { binding.btnExpend.setOnClickListener {
DataReoortUtils.report("st_speed_msg_clk") DataRePortUtils.report("st_speed_msg_clk")
if (binding.expandableLayout1.isExpanded) { if (binding.expandableLayout1.isExpanded) {
binding.expandableLayout1.toggle() binding.expandableLayout1.toggle()
binding.expandableLayout2.expand() binding.expandableLayout2.expand()
...@@ -205,17 +202,17 @@ class AccelertorFragment : XPageFragment() { ...@@ -205,17 +202,17 @@ class AccelertorFragment : XPageFragment() {
CommonDialog(it).setTitle("加速停止确认") CommonDialog(it).setTitle("加速停止确认")
.setContent("停止加速可能会导致游戏断线,是否确认停止?") .setContent("停止加速可能会导致游戏断线,是否确认停止?")
.setBtnLeft("取消", { .setBtnLeft("取消", {
DataReoortUtils.report("st_speed_stop_pop_cancel_clk") DataRePortUtils.report("st_speed_stop_pop_cancel_clk")
}).setBtnRight("停止加速", { }).setBtnRight("停止加速", {
DataReoortUtils.report("st_speed_stop_pop_ok_clk") DataRePortUtils.report("st_speed_stop_pop_ok_clk")
AcceleratorUtils.stopAccelerator() AcceleratorUtils.stopAccelerator()
}).show<CommonDialog>() }).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 return@setOnClickListener
} else { } else {
DataReoortUtils.report("st_speed_start_clk") DataRePortUtils.report("st_speed_start_clk")
} }
} }
if (!LoginUtils.hasToken()) { if (!LoginUtils.hasToken()) {
...@@ -224,7 +221,7 @@ class AccelertorFragment : XPageFragment() { ...@@ -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 return@setOnClickListener
} }
...@@ -234,7 +231,7 @@ class AccelertorFragment : XPageFragment() { ...@@ -234,7 +231,7 @@ class AccelertorFragment : XPageFragment() {
binding.quickTopToastTx.postDelayed({ binding.quickTopToastTx.postDelayed({
binding.quickTopToast.visibility = View.GONE binding.quickTopToast.visibility = View.GONE
}, 2000) }, 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 return@setOnClickListener
} }
AcceleratorUtils.getGameList(this) { AcceleratorUtils.getGameList(this) {
...@@ -247,7 +244,7 @@ class AccelertorFragment : XPageFragment() { ...@@ -247,7 +244,7 @@ class AccelertorFragment : XPageFragment() {
binding.quickTopToastTx.postDelayed({ binding.quickTopToastTx.postDelayed({
binding.quickTopToast.visibility = View.GONE binding.quickTopToast.visibility = View.GONE
}, 2000) }, 2000)
DataReoortUtils.report( DataRePortUtils.report(
"st_speed_result", "st_speed_result",
mapOf("result" to 0, "cause" to "1") mapOf("result" to 0, "cause" to "1")
) )
...@@ -260,7 +257,7 @@ class AccelertorFragment : XPageFragment() { ...@@ -260,7 +257,7 @@ class AccelertorFragment : XPageFragment() {
binding.btnQuick.isEnabled = false binding.btnQuick.isEnabled = false
startAnim() startAnim()
} else { } else {
DataReoortUtils.report( DataRePortUtils.report(
"st_speed_result", "st_speed_result",
mapOf("result" to 0, "cause" to 3) mapOf("result" to 0, "cause" to 3)
) )
...@@ -268,7 +265,7 @@ class AccelertorFragment : XPageFragment() { ...@@ -268,7 +265,7 @@ class AccelertorFragment : XPageFragment() {
} }
} }
} else { } 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("获取游戏配置异常") ToastUtils.show("获取游戏配置异常")
} }
} }
...@@ -279,7 +276,7 @@ class AccelertorFragment : XPageFragment() { ...@@ -279,7 +276,7 @@ class AccelertorFragment : XPageFragment() {
binding.gameStart.setOnClickListener { binding.gameStart.setOnClickListener {
if (!binding.expandableLayout1.isExpanded) { if (!binding.expandableLayout1.isExpanded) {
AcceleratorUtils.game?.let { AcceleratorUtils.game?.let {
DataReoortUtils.report("st_speed_game_start_clk") DataRePortUtils.report("st_speed_game_start_clk")
try { try {
AppUtils.launchApp(it.packageName) AppUtils.launchApp(it.packageName)
} catch (e: Exception) { } catch (e: Exception) {
...@@ -353,13 +350,13 @@ class AccelertorFragment : XPageFragment() { ...@@ -353,13 +350,13 @@ class AccelertorFragment : XPageFragment() {
CommonDialog(it).setTitle("防止加速掉线") CommonDialog(it).setTitle("防止加速掉线")
.setContent("为了防止加速进程被手机系统中断,影响游戏加速,请确保完成相关设置") .setContent("为了防止加速进程被手机系统中断,影响游戏加速,请确保完成相关设置")
.setBtnLeft("取消", { .setBtnLeft("取消", {
DataReoortUtils.report("st_speed_course_pop_cancel_clk") DataRePortUtils.report("st_speed_course_pop_cancel_clk")
}).setBtnRight("去设置", { }).setBtnRight("去设置", {
openToWebview(HttpConfig.UI_SPEED_URL + "?id=1") 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>() }).show<CommonDialog>()
SettingSPUtils.isFirstAccSuccess = false SettingSPUtils.isFirstAccSuccess = false
DataReoortUtils.report("st_speed_course_pop_show") DataRePortUtils.report("st_speed_course_pop_show")
} }
} }
...@@ -428,7 +425,7 @@ class AccelertorFragment : XPageFragment() { ...@@ -428,7 +425,7 @@ class AccelertorFragment : XPageFragment() {
fun startAccSuccess() { fun startAccSuccess() {
if (binding.gameStart.visibility == View.GONE) { 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.gamePicIn1.startAnimation(getDefaultAnim())
binding.accStateTx.visibility = View.VISIBLE binding.accStateTx.visibility = View.VISIBLE
binding.btnQuick.setBackgroundResource(R.mipmap.quick_stop) binding.btnQuick.setBackgroundResource(R.mipmap.quick_stop)
......
...@@ -6,7 +6,6 @@ import android.view.View ...@@ -6,7 +6,6 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import android.widget.Toast
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
...@@ -15,29 +14,19 @@ import com.bumptech.glide.Glide ...@@ -15,29 +14,19 @@ import com.bumptech.glide.Glide
import com.ccwangluo.accelerator.R import com.ccwangluo.accelerator.R
import com.ccwangluo.accelerator.adapter.KotlinDataAdapter import com.ccwangluo.accelerator.adapter.KotlinDataAdapter
import com.ccwangluo.accelerator.databinding.FragmentNewsBinding import com.ccwangluo.accelerator.databinding.FragmentNewsBinding
import com.ccwangluo.accelerator.model.News
import com.ccwangluo.accelerator.model.Plugin import com.ccwangluo.accelerator.model.Plugin
import com.ccwangluo.accelerator.ui.MainActivity
import com.ccwangluo.accelerator.ui.news.NewsCollectionAdapter import com.ccwangluo.accelerator.ui.news.NewsCollectionAdapter
import com.ccwangluo.accelerator.ui.web.CommonWebViewFragment import com.ccwangluo.accelerator.ui.web.CommonWebViewFragment
import com.ccwangluo.accelerator.utils.AcceleratorUtils import com.ccwangluo.accelerator.utils.AcceleratorUtils
import com.ccwangluo.accelerator.utils.LoginUtils
import com.ccwangluo.accelerator.utils.SysUtils 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.XToastUtils
import com.github.shadowsocks.http.HttpConfig
import com.google.android.material.appbar.AppBarLayout import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
import com.just.agentweb.download.DownloadTask
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xpage.utils.TitleBar 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() { class NewsFragment : XPageFragment() {
private var _binding: FragmentNewsBinding? = null private var _binding: FragmentNewsBinding? = null
...@@ -88,45 +77,45 @@ class NewsFragment : XPageFragment() { ...@@ -88,45 +77,45 @@ class NewsFragment : XPageFragment() {
val layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false) val layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
binding.gameNewsList?.setLayoutManager(layoutManager) binding.gameNewsList?.setLayoutManager(layoutManager)
binding.gameNewsList.adapter = KotlinDataAdapter.Builder<Plugin>() binding.gameNewsList.adapter = KotlinDataAdapter.Builder<Plugin>()
.setData(dataList) .setData(dataList)
.setLayoutId(R.layout.item_news_game) .setLayoutId(R.layout.item_news_game)
.addBindView { itemView, itemData -> .addBindView { itemView, itemData ->
context?.let { context?.let {
Glide.with(it).load(itemData.icon) Glide.with(it).load(itemData.icon)
.into(itemView.findViewById<ImageView>(R.id.plugin_img)) .into(itemView.findViewById<ImageView>(R.id.plugin_img))
}
itemView.findViewById<TextView>(R.id.plugin_name).setText(itemData.name)
itemView.setOnClickListener {
if (!itemData.isOpen) {
ToastUtils.show("暂不支持${itemData.name}")
return@setOnClickListener
} }
itemView.findViewById<TextView>(R.id.plugin_name).setText(itemData.name)
itemView.setOnClickListener {
if (!itemData.isOpen) {
ToastUtils.show("暂不支持${itemData.name}")
return@setOnClickListener
}
if (itemData.type == 1) { if (itemData.type == 1) {
itemData.url?.let { 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) } context?.let { it1 -> SysUtils.joinQQGroup(it1) }
}
} }
}
if (itemData.type == 2) { if (itemData.type == 2) {
itemData.url?.let { itemData.url?.let {
DataReoortUtils.report("st_google_clk", mapOf("scene" to 3)) DataRePortUtils.report("st_google_clk", mapOf("scene" to 3))
openToWebview(it) openToWebview(it)
}
} }
}
if (itemData.type == 3) { if (itemData.type == 3) {
itemData.url?.let { itemData.url?.let {
context?.let { it1 -> context?.let { it1 ->
SysUtils.downloadFile(it1, it) SysUtils.downloadFile(it1, it)
ToastUtils.show("开始下载") ToastUtils.show("开始下载")
}
} }
} }
} }
}
}.create() }.create()
newsViewModel.pluginList.observe(this, { newsViewModel.pluginList.observe(this, {
dataList.clear() dataList.clear()
dataList.addAll(it) dataList.addAll(it)
...@@ -141,9 +130,8 @@ class NewsFragment : XPageFragment() { ...@@ -141,9 +130,8 @@ class NewsFragment : XPageFragment() {
binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) { override fun onTabSelected(tab: TabLayout.Tab?) {
tab?.let { 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?) { override fun onTabUnselected(tab: TabLayout.Tab?) {
......
...@@ -5,12 +5,12 @@ import androidx.lifecycle.ViewModel ...@@ -5,12 +5,12 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.ccwangluo.accelerator.model.LoginRes import com.ccwangluo.accelerator.model.LoginRes
import com.ccwangluo.accelerator.utils.LoginUtils 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.ccwangluo.accelerator.utils.http.HttpGo
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class LoginViewModel : ViewModel() { class LoginViewModel : ViewModel() {
...@@ -23,11 +23,12 @@ class LoginViewModel : ViewModel() { ...@@ -23,11 +23,12 @@ class LoginViewModel : ViewModel() {
val map = mutableMapOf<String, String>() val map = mutableMapOf<String, String>()
map.put("phone", phone) map.put("phone", phone)
map.put("verifyCode", authCdoe) map.put("verifyCode", authCdoe)
SysUtils.getDeviceUUID()?.let { map.put("did", it) }
viewModelScope.launch(Dispatchers.IO) { viewModelScope.launch(Dispatchers.IO) {
val res = HttpGo.postSync<LoginRes>("/api/user/verifyCode/login", map) val res = HttpGo.postSync<LoginRes>("/api/user/verifyCode/login", map)
res?.let { res?.let {
if (it.code == 200) { 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.token = it.data?.token
LoginUtils.uid = it.data?.phone LoginUtils.uid = it.data?.phone
loginState.postValue(true) loginState.postValue(true)
...@@ -36,7 +37,7 @@ class LoginViewModel : ViewModel() { ...@@ -36,7 +37,7 @@ class LoginViewModel : ViewModel() {
it.error?.let { it1 -> it.error?.let { it1 ->
map.put("cause", it1) map.put("cause", it1)
} }
DataReoortUtils.report( DataRePortUtils.report(
"st_login_vercode_result", map "st_login_vercode_result", map
) )
ToastUtils.show(it.error) ToastUtils.show(it.error)
......
...@@ -8,15 +8,12 @@ import androidx.lifecycle.ViewModelProvider ...@@ -8,15 +8,12 @@ import androidx.lifecycle.ViewModelProvider
import com.ccwangluo.accelerator.databinding.FragmentLoginPhoneBinding import com.ccwangluo.accelerator.databinding.FragmentLoginPhoneBinding
import com.ccwangluo.accelerator.ui.web.BlankActivity import com.ccwangluo.accelerator.ui.web.BlankActivity
import com.ccwangluo.accelerator.ui.web.CommonWebViewFragment import com.ccwangluo.accelerator.ui.web.CommonWebViewFragment
import com.ccwangluo.accelerator.utils.AcceleratorUtils
import com.ccwangluo.accelerator.utils.LoginUtils 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.github.shadowsocks.http.HttpConfig
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
import com.xuexiang.xpage.annotation.Page import com.xuexiang.xpage.annotation.Page
import com.xuexiang.xpage.base.XPageActivity 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 com.xuexiang.xutil.common.StringUtils
import java.util.regex.Pattern import java.util.regex.Pattern
...@@ -33,7 +30,7 @@ class PhoneLoginActivity : XPageActivity() { ...@@ -33,7 +30,7 @@ class PhoneLoginActivity : XPageActivity() {
setContentView(binding.root) setContentView(binding.root)
initViews() initViews()
initListeners() initListeners()
DataReoortUtils.report("st_login_vercode_show") DataRePortUtils.report("st_login_vercode_show")
} }
fun initViews() { fun initViews() {
...@@ -54,12 +51,12 @@ class PhoneLoginActivity : XPageActivity() { ...@@ -54,12 +51,12 @@ class PhoneLoginActivity : XPageActivity() {
} }
binding.phoneEt.setOnFocusChangeListener { v, hasFocus -> binding.phoneEt.setOnFocusChangeListener { v, hasFocus ->
if (hasFocus) { if (hasFocus) {
DataReoortUtils.report("st_login_ph_input") DataRePortUtils.report("st_login_ph_input")
} }
} }
binding.authCodeEt.setOnFocusChangeListener { v, hasFocus -> binding.authCodeEt.setOnFocusChangeListener { v, hasFocus ->
if (hasFocus) { if (hasFocus) {
DataReoortUtils.report("st_login_vercode_write") DataRePortUtils.report("st_login_vercode_write")
} }
} }
...@@ -89,7 +86,7 @@ class PhoneLoginActivity : XPageActivity() { ...@@ -89,7 +86,7 @@ class PhoneLoginActivity : XPageActivity() {
loginViewModel.loginState.observe(this, { loginViewModel.loginState.observe(this, {
if (it) { if (it) {
LoginUtils.stopTimer() LoginUtils.stopTimer()
DataReoortUtils.report("role_entry", mutableMapOf("login" to "login_vercode")) DataRePortUtils.report("role_entry", mutableMapOf("login" to "login_vercode"))
finish() finish()
} }
}) })
...@@ -128,7 +125,7 @@ class PhoneLoginActivity : XPageActivity() { ...@@ -128,7 +125,7 @@ class PhoneLoginActivity : XPageActivity() {
} }
binding.authCodeBtn.setOnClickListener { binding.authCodeBtn.setOnClickListener {
DataReoortUtils.report("st_login_vercode_request_clk") DataRePortUtils.report("st_login_vercode_request_clk")
val phone = binding.phoneEt.text.toString() val phone = binding.phoneEt.text.toString()
if (StringUtils.isEmpty(phone) || !isPhone(phone)) { if (StringUtils.isEmpty(phone) || !isPhone(phone)) {
ToastUtils.show("输入正确的手机号") ToastUtils.show("输入正确的手机号")
...@@ -143,7 +140,7 @@ class PhoneLoginActivity : XPageActivity() { ...@@ -143,7 +140,7 @@ class PhoneLoginActivity : XPageActivity() {
} }
binding.login.setOnClickListener { binding.login.setOnClickListener {
DataReoortUtils.report("st_login_vercode_btn_clk") DataRePortUtils.report("st_login_vercode_btn_clk")
//检查验证码,手机号格式 //检查验证码,手机号格式
val phone = binding.phoneEt.text.toString() val phone = binding.phoneEt.text.toString()
val authCdoe = binding.authCodeEt.text.toString() val authCdoe = binding.authCodeEt.text.toString()
......
...@@ -7,35 +7,19 @@ import com.github.shadowsocks.http.HttpConfig ...@@ -7,35 +7,19 @@ import com.github.shadowsocks.http.HttpConfig
import com.ccwangluo.cc_quickly.utils.SettingSPUtils import com.ccwangluo.cc_quickly.utils.SettingSPUtils
import com.ccwangluo.cc_quickly.utils.XToastUtils import com.ccwangluo.cc_quickly.utils.XToastUtils
import com.just.agentweb.core.AgentWeb 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.xpage.base.XPageFragment
import com.xuexiang.xutil.app.AppUtils import com.xuexiang.xutil.app.AppUtils
import com.xuexiang.xutil.system.PermissionUtils import com.xuexiang.xutil.system.PermissionUtils
import android.content.Intent import android.content.Intent
import android.media.audiofx.BassBoost
import android.net.Uri import android.net.Uri
import android.os.Handler import android.os.Handler
import android.provider.Settings 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.AcceleratorUtils
import com.ccwangluo.accelerator.utils.ShareUtils
import com.ccwangluo.accelerator.utils.SysUtils 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.bg.BaseService
import com.github.shadowsocks.plugin.PluginContract
import com.tencent.bugly.beta.Beta 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.*
/** /**
...@@ -69,7 +53,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -69,7 +53,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
LoginUtils.login(it1) { LoginUtils.login(it1) {
LoginUtils.token?.let { LoginUtils.token?.let {
agentWeb.getJsAccessEntrace() agentWeb.getJsAccessEntrace()
.quickCallJs("userToken", it) .quickCallJs("userToken", it)
} }
} }
} }
...@@ -96,8 +80,8 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -96,8 +80,8 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
params.putString(CommonWebViewFragment.WEBVIEW_URL_KEY, url) params.putString(CommonWebViewFragment.WEBVIEW_URL_KEY, url)
} else { } else {
params.putString( params.putString(
CommonWebViewFragment.WEBVIEW_URL_KEY, CommonWebViewFragment.WEBVIEW_URL_KEY,
HttpConfig.HTML_HOST_PRIVACY + url HttpConfig.HTML_HOST_PRIVACY + url
) )
} }
...@@ -123,7 +107,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -123,7 +107,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
LoginUtils.login(it1) { LoginUtils.login(it1) {
LoginUtils.token?.let { LoginUtils.token?.let {
agentWeb.getJsAccessEntrace() agentWeb.getJsAccessEntrace()
.quickCallJs(callback, it) .quickCallJs(callback, it)
} }
} }
} }
...@@ -135,7 +119,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -135,7 +119,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
@JavascriptInterface @JavascriptInterface
fun getToken(callback: String) { fun getToken(callback: String) {
agentWeb.getJsAccessEntrace() agentWeb.getJsAccessEntrace()
.quickCallJs(callback, LoginUtils.token) .quickCallJs(callback, LoginUtils.token)
} }
/** /**
...@@ -147,16 +131,16 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -147,16 +131,16 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
//是否有更新:1有 0没有 //是否有更新:1有 0没有
//最新安装包的版本名称 //最新安装包的版本名称
agentWeb.jsAccessEntrace agentWeb.jsAccessEntrace
.quickCallJs(callback, "1", AppUtils.getAppVersionName(), it.versionName) .quickCallJs(callback, "1", AppUtils.getAppVersionName(), it.versionName)
} ?: let { } ?: let {
agentWeb.jsAccessEntrace agentWeb.jsAccessEntrace
.quickCallJs( .quickCallJs(
callback, callback,
"0", "0",
AppUtils.getAppVersionName(), AppUtils.getAppVersionName(),
AppUtils.getAppVersionName() AppUtils.getAppVersionName()
) )
} }
} }
...@@ -167,10 +151,10 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -167,10 +151,10 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
fun getAccelerateState(callback: String) { fun getAccelerateState(callback: String) {
if (BaseService.State.Connected == AcceleratorUtils.state) { if (BaseService.State.Connected == AcceleratorUtils.state) {
agentWeb.jsAccessEntrace agentWeb.jsAccessEntrace
.quickCallJs(callback, "1") .quickCallJs(callback, "1")
} else { } else {
agentWeb.jsAccessEntrace agentWeb.jsAccessEntrace
.quickCallJs(callback, "0") .quickCallJs(callback, "0")
} }
} }
...@@ -210,7 +194,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -210,7 +194,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
@JavascriptInterface @JavascriptInterface
fun getSmartAccStatus(callback: String) { fun getSmartAccStatus(callback: String) {
agentWeb.getJsAccessEntrace() agentWeb.getJsAccessEntrace()
.quickCallJs(callback, SettingSPUtils.isSmartAccOpen.toString()) .quickCallJs(callback, SettingSPUtils.isSmartAccOpen.toString())
} }
/** /**
...@@ -230,7 +214,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -230,7 +214,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
xPageFragment.context?.let { xPageFragment.context?.let {
val hasPermission: Boolean = PermissionUtils.isGranted(key) val hasPermission: Boolean = PermissionUtils.isGranted(key)
agentWeb.getJsAccessEntrace() agentWeb.getJsAccessEntrace()
.quickCallJs(callback, key, hasPermission.toString()) .quickCallJs(callback, key, hasPermission.toString())
} }
} }
...@@ -247,20 +231,20 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -247,20 +231,20 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
permissionsGranted?.forEach { permissionsGranted?.forEach {
if (it.equals(key)) { if (it.equals(key)) {
agentWeb.getJsAccessEntrace() agentWeb.getJsAccessEntrace()
.quickCallJs(callback, key, "true") .quickCallJs(callback, key, "true")
} }
} }
} }
override fun onDenied( override fun onDenied(
permissionsDeniedForever: MutableList<String>?, permissionsDeniedForever: MutableList<String>?,
permissionsDenied: MutableList<String>? permissionsDenied: MutableList<String>?
) { ) {
permissionsDenied?.forEach { permissionsDenied?.forEach {
if (it.equals(key)) { if (it.equals(key)) {
agentWeb.getJsAccessEntrace() agentWeb.getJsAccessEntrace()
.quickCallJs(callback, key, "false") .quickCallJs(callback, key, "false")
} }
} }
permissionsDeniedForever?.forEach { permissionsDeniedForever?.forEach {
...@@ -283,7 +267,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -283,7 +267,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
xPageFragment.context?.let { xPageFragment.context?.let {
val packageInstall = SysUtils.isPackageInstall(it, packageName) val packageInstall = SysUtils.isPackageInstall(it, packageName)
agentWeb.getJsAccessEntrace() agentWeb.getJsAccessEntrace()
.quickCallJs(callback, packageName, packageInstall.toString()) .quickCallJs(callback, packageName, packageInstall.toString())
} }
} }
...@@ -309,11 +293,11 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -309,11 +293,11 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
@JavascriptInterface @JavascriptInterface
fun getVersion(callback: String) { fun getVersion(callback: String) {
agentWeb.getJsAccessEntrace() agentWeb.getJsAccessEntrace()
.quickCallJs( .quickCallJs(
callback, callback,
AppUtils.getAppVersionName(), AppUtils.getAppVersionName(),
AppUtils.getAppVersionCode().toString() AppUtils.getAppVersionCode().toString()
) )
} }
/**************** /****************
...@@ -332,12 +316,12 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -332,12 +316,12 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
@JavascriptInterface @JavascriptInterface
fun getSystemVersion(callback: String) { fun getSystemVersion(callback: String) {
agentWeb.getJsAccessEntrace() agentWeb.getJsAccessEntrace()
.quickCallJs( .quickCallJs(
callback, callback,
android.os.Build.VERSION.RELEASE, android.os.Build.VERSION.RELEASE,
SysUtils.getDpi(xPageFragment).toString(), SysUtils.getDpi(xPageFragment).toString(),
android.os.Build.VERSION.SDK_INT.toString() android.os.Build.VERSION.SDK_INT.toString()
) )
} }
/** /**
...@@ -346,7 +330,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -346,7 +330,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
@JavascriptInterface @JavascriptInterface
fun getDpi(callback: String) { fun getDpi(callback: String) {
agentWeb.getJsAccessEntrace() agentWeb.getJsAccessEntrace()
.quickCallJs(callback, SysUtils.getDpi(xPageFragment).toString()) .quickCallJs(callback, SysUtils.getDpi(xPageFragment).toString())
} }
@JavascriptInterface @JavascriptInterface
...@@ -357,7 +341,15 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -357,7 +341,15 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
@JavascriptInterface @JavascriptInterface
fun dataReport(event: String, data: String) { 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 ...@@ -3,19 +3,16 @@ package com.ccwangluo.accelerator.utils
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.os.RemoteException import android.os.RemoteException
import android.util.Log
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.ccwangluo.accelerator.model.* import com.ccwangluo.accelerator.model.*
import com.ccwangluo.accelerator.ui.dialog.CommonDialog 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.accelerator.utils.http.HttpGo
import com.ccwangluo.cc_quickly.utils.SettingSPUtils
import com.github.shadowsocks.Core import com.github.shadowsocks.Core
import com.github.shadowsocks.acl.Acl import com.github.shadowsocks.acl.Acl
import com.github.shadowsocks.aidl.IShadowsocksService import com.github.shadowsocks.aidl.IShadowsocksService
import com.github.shadowsocks.aidl.IShadowsocksServiceCallback
import com.github.shadowsocks.aidl.ShadowsocksConnection import com.github.shadowsocks.aidl.ShadowsocksConnection
import com.github.shadowsocks.bg.AuthManager import com.github.shadowsocks.bg.AuthManager
...@@ -23,18 +20,11 @@ import com.github.shadowsocks.bg.AuthManager.ACC_TIME ...@@ -23,18 +20,11 @@ import com.github.shadowsocks.bg.AuthManager.ACC_TIME
import com.github.shadowsocks.bg.BaseService import com.github.shadowsocks.bg.BaseService
import com.github.shadowsocks.database.Profile import com.github.shadowsocks.database.Profile
import com.github.shadowsocks.database.ProfileManager import com.github.shadowsocks.database.ProfileManager
import com.github.shadowsocks.http.LineConfig
import com.github.shadowsocks.preference.DataStore import com.github.shadowsocks.preference.DataStore
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
import com.tencent.mmkv.MMKV
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xutil.common.StringUtils import com.xuexiang.xutil.common.StringUtils
import com.xuexiang.xutil.net.NetworkUtils
import com.xuexiang.xutil.system.PermissionUtils
import kotlinx.coroutines.* import kotlinx.coroutines.*
import timber.log.Timber
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit
/** /**
...@@ -216,7 +206,7 @@ object AcceleratorUtils { ...@@ -216,7 +206,7 @@ object AcceleratorUtils {
AcceleratorUtils.state = state AcceleratorUtils.state = state
stateListener(state, getAccTime(), null) stateListener(state, getAccTime(), null)
if (state == BaseService.State.Stopped && !msg.isNullOrBlank()) { 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已到期"))){ if("vip到期".equals(msg)||(msg!=null&&msg.startsWith("vip已到期"))){
vipExpireListener() vipExpireListener()
}else{ }else{
......
...@@ -3,12 +3,11 @@ package com.ccwangluo.accelerator.utils ...@@ -3,12 +3,11 @@ package com.ccwangluo.accelerator.utils
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.Intent.FLAG_ACTIVITY_NEW_TASK import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
import android.util.Log
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.ccwangluo.accelerator.model.LoginRes import com.ccwangluo.accelerator.model.LoginRes
import com.ccwangluo.accelerator.model.UserProfile import com.ccwangluo.accelerator.model.UserProfile
import com.ccwangluo.accelerator.ui.login.PhoneLoginActivity 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.ccwangluo.accelerator.utils.http.HttpGo
import com.chuanglan.shanyan_sdk.OneKeyLoginManager import com.chuanglan.shanyan_sdk.OneKeyLoginManager
import com.github.shadowsocks.Core import com.github.shadowsocks.Core
...@@ -16,8 +15,6 @@ import com.github.shadowsocks.bg.AuthManager ...@@ -16,8 +15,6 @@ import com.github.shadowsocks.bg.AuthManager
import com.hjq.toast.ToastUtils import com.hjq.toast.ToastUtils
import com.tencent.mmkv.MMKV import com.tencent.mmkv.MMKV
import com.xuexiang.xpage.base.XPageFragment 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.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
...@@ -112,6 +109,7 @@ object LoginUtils { ...@@ -112,6 +109,7 @@ object LoginUtils {
if (b) { if (b) {
val map = mutableMapOf<String, String>() val map = mutableMapOf<String, String>()
map.put("token", s) map.put("token", s)
SysUtils.getDeviceUUID()?.let { map.put("did", it) }
GlobalScope.launch(Dispatchers.IO) { GlobalScope.launch(Dispatchers.IO) {
val res = HttpGo.postSync<LoginRes>("/api/user/flash/login", map) val res = HttpGo.postSync<LoginRes>("/api/user/flash/login", map)
res?.let { res?.let {
...@@ -121,7 +119,7 @@ object LoginUtils { ...@@ -121,7 +119,7 @@ object LoginUtils {
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
ToastUtils.show("登录成功") ToastUtils.show("登录成功")
OneKeyLoginManager.getInstance().finishAuthActivity() OneKeyLoginManager.getInstance().finishAuthActivity()
DataReoortUtils.report("role_entry", mutableMapOf("login" to "login_all")) DataRePortUtils.report("role_entry", mutableMapOf("login" to "login_all"))
callBack(true) callBack(true)
} }
} else { } else {
......
...@@ -11,13 +11,11 @@ import android.widget.RelativeLayout ...@@ -11,13 +11,11 @@ import android.widget.RelativeLayout
import android.widget.TextView import android.widget.TextView
import com.ccwangluo.accelerator.R import com.ccwangluo.accelerator.R
import com.ccwangluo.accelerator.ui.login.PhoneLoginActivity 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.OneKeyLoginManager
import com.chuanglan.shanyan_sdk.tool.ShanYanUIConfig import com.chuanglan.shanyan_sdk.tool.ShanYanUIConfig
import com.github.shadowsocks.http.HttpConfig import com.github.shadowsocks.http.HttpConfig
import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xpage.core.PageOption
import org.json.JSONObject import org.json.JSONObject
...@@ -57,7 +55,7 @@ object PhoneUtils { ...@@ -57,7 +55,7 @@ object PhoneUtils {
if (code != 1000) { if (code != 1000) {
callback(false, "") callback(false, "")
} else { } else {
DataReoortUtils.report("st_login_one_show") DataRePortUtils.report("st_login_one_show")
} }
Log.i(TAG, "openLoginAuth: $result") Log.i(TAG, "openLoginAuth: $result")
} }
...@@ -65,10 +63,10 @@ object PhoneUtils { ...@@ -65,10 +63,10 @@ object PhoneUtils {
if (code == 1000) { if (code == 1000) {
val json = JSONObject(result) 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")) callback(true, json.getString("token"))
} else { } else {
DataReoortUtils.report( DataRePortUtils.report(
"st_login_one_result", "st_login_one_result",
mapOf("result" to 0, "cause" to result) mapOf("result" to 0, "cause" to result)
) )
...@@ -149,7 +147,7 @@ object PhoneUtils { ...@@ -149,7 +147,7 @@ object PhoneUtils {
val intent = Intent(context, PhoneLoginActivity::class.java) val intent = Intent(context, PhoneLoginActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent) context.startActivity(intent)
DataReoortUtils.report("st_login_other_clk") DataRePortUtils.report("st_login_other_clk")
} }
.setPrivacyState(false) .setPrivacyState(false)
.setCheckedImgPath(mCheckedImg) .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 ...@@ -9,7 +9,7 @@ import java.time.LocalDateTime
data class BaseData( data class BaseData(
var channel: Int = 0, 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 did: String? = SysUtils.getDeviceUUID(),
var ds: String = LocalDateTime.now().toString(), var ds: String = LocalDateTime.now().toString(),
var event: String = "", var event: String = "",
......
package com.ccwangluo.accelerator.utils.dataReport package com.ccwangluo.accelerator.utils.dataReport
import com.ccwangluo.accelerator.utils.LoginUtils
import com.ccwangluo.accelerator.utils.SysUtils import com.ccwangluo.accelerator.utils.SysUtils
import com.ccwangluo.accelerator.utils.http.HttpGo import com.ccwangluo.accelerator.utils.http.HttpGo
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.JsonParser 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 list = mutableSetOf<BaseData>()
val gson = Gson() 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()) 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 { ...@@ -5,7 +5,7 @@ object HttpConfig {
//app后端 //app后端
//val baseUrl = "http://10.16.1.98:9002" //val baseUrl = "http://10.16.1.98:9002"
val baseUrl = "https://test-cc-tt-api.orangenet.org.cn" //测试 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 { ...@@ -13,7 +13,7 @@ object HttpConfig {
*/ */
val UI_MAIN_URL = "https://test-cc-tt-front.orangenet.org.cn/#" //测试 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 = "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 { ...@@ -40,4 +40,6 @@ object HttpConfig {
val UI_SPEED_URL = "/speed" val UI_SPEED_URL = "/speed"
val MEMBER_CENTER = "/memberCenter" 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 { ...@@ -9,6 +9,7 @@ repositories {
} }
maven { url = uri("https://jitpack.io") } maven { url = uri("https://jitpack.io") }
maven { url = uri("https://repo1.maven.org/maven2/") } maven { url = uri("https://repo1.maven.org/maven2/") }
maven { url = uri("https://dl.bintray.com/thelasterstar/maven/") }
google() google()
jcenter() jcenter()
mavenCentral() 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