From 7f4ae28afa6faf85a4a6ac093b691dea14851990 Mon Sep 17 00:00:00 2001 From: level <1364007522@qq.com> Date: Mon, 1 Sep 2025 19:02:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E6=9C=9F:2025.9.1=20=E5=88=86?= =?UTF-8?q?=E6=94=AF:yijianlian=20=E9=9C=80=E6=B1=82:=201.ui=E4=B8=AD?= =?UTF-8?q?=E5=8E=BB=E9=99=A4AI=E5=AD=97=E6=A0=B7=202.=E5=86=97=E4=BD=99?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/TZKeFu.html | 56 ---- app/src/main/assets/YMKeFu.html | 90 ----- app/src/main/assets/YMKeFu_en.html | 60 ---- app/src/main/assets/YMKeFu_hk.html | 60 ---- app/src/main/assets/agreement.html | 132 -------- app/src/main/assets/agreement_bzy.html | 132 -------- app/src/main/assets/agreement_en.html | 132 -------- app/src/main/assets/agreement_hk.html | 132 -------- app/src/main/assets/agreement_taizi_hk.html | 126 ------- app/src/main/assets/kefu.html | 56 ---- app/src/main/assets/privacy.html | 125 ------- app/src/main/assets/privacy_bzy.html | 125 ------- app/src/main/assets/privacy_en.html | 131 -------- app/src/main/assets/privacy_hk.html | 130 -------- .../clash/act/AgreementAndPrivacyActivity.kt | 22 +- .../com/yingmao/clash/act/LoginActivity.kt | 166 +--------- .../clash/act/LossPreventionActivity.kt | 8 +- .../clash/act/MemberRechargeActivity.kt | 1 - .../com/yingmao/clash/act/NewMainActivity.kt | 15 - .../com/yingmao/clash/act/SplashActivity.kt | 236 +------------ .../com/yingmao/clash/base/PublicViewMode.kt | 209 +----------- .../main/java/com/yingmao/clash/conf/Conf.kt | 10 +- .../com/yingmao/clash/net/http/HttpApi.kt | 98 ------ .../clash/webview/BZYWebViewActivity.kt | 312 ------------------ .../yingmao/clash/webview/BZYWebViewKeFu.kt | 307 ----------------- .../yingmao/clash/webview/BZYWebViewNormal.kt | 199 ----------- .../yingmao/clash/webview/BZYWebViewOther.kt | 120 ------- .../clash/webview/BZYWebViewOtherBiLai.kt | 142 -------- .../com/yingmao/clash/webview/BZYWebViewVM.kt | 23 -- app/src/main/res/drawable/ai_chat.xml | 3 - app/src/main/res/layout/new_main_activity.xml | 1 + app/src/main/res/values-en/strings.xml | 8 +- app/src/main/res/values-zh-rHK/strings.xml | 7 +- app/src/main/res/values-zh-rTW/strings.xml | 7 +- app/src/main/res/values/strings.xml | 11 +- build.gradle.kts | 39 +-- 36 files changed, 56 insertions(+), 3375 deletions(-) delete mode 100644 app/src/main/assets/TZKeFu.html delete mode 100644 app/src/main/assets/YMKeFu.html delete mode 100644 app/src/main/assets/YMKeFu_en.html delete mode 100644 app/src/main/assets/YMKeFu_hk.html delete mode 100644 app/src/main/assets/agreement.html delete mode 100644 app/src/main/assets/agreement_bzy.html delete mode 100644 app/src/main/assets/agreement_en.html delete mode 100644 app/src/main/assets/agreement_hk.html delete mode 100644 app/src/main/assets/agreement_taizi_hk.html delete mode 100644 app/src/main/assets/kefu.html delete mode 100644 app/src/main/assets/privacy.html delete mode 100644 app/src/main/assets/privacy_bzy.html delete mode 100644 app/src/main/assets/privacy_en.html delete mode 100644 app/src/main/assets/privacy_hk.html delete mode 100644 app/src/main/java/com/yingmao/clash/webview/BZYWebViewActivity.kt delete mode 100644 app/src/main/java/com/yingmao/clash/webview/BZYWebViewKeFu.kt delete mode 100644 app/src/main/java/com/yingmao/clash/webview/BZYWebViewNormal.kt delete mode 100644 app/src/main/java/com/yingmao/clash/webview/BZYWebViewOther.kt delete mode 100644 app/src/main/java/com/yingmao/clash/webview/BZYWebViewOtherBiLai.kt delete mode 100644 app/src/main/java/com/yingmao/clash/webview/BZYWebViewVM.kt diff --git a/app/src/main/assets/TZKeFu.html b/app/src/main/assets/TZKeFu.html deleted file mode 100644 index 95c2570..0000000 --- a/app/src/main/assets/TZKeFu.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - 连接中... - - - -

正在连接客服,右下角出现按钮后即可聊天...

-
- - - - - - - diff --git a/app/src/main/assets/YMKeFu.html b/app/src/main/assets/YMKeFu.html deleted file mode 100644 index 311d6eb..0000000 --- a/app/src/main/assets/YMKeFu.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - 连接中... - - - -

正在连接客服,右下角出现按钮后即可聊天...

-

如果未出现按钮,请等待一分钟或者重新进入.

-
- - - - - diff --git a/app/src/main/assets/YMKeFu_en.html b/app/src/main/assets/YMKeFu_en.html deleted file mode 100644 index 47f1f8c..0000000 --- a/app/src/main/assets/YMKeFu_en.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - Connecting... - - - -

Connecting to customer service, click the button in the bottom right corner to chat...

-

If no button appears, please wait for one minute or re-enter.

-
- - - - - - - - diff --git a/app/src/main/assets/YMKeFu_hk.html b/app/src/main/assets/YMKeFu_hk.html deleted file mode 100644 index 0db2a19..0000000 --- a/app/src/main/assets/YMKeFu_hk.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - 連接中... - - - -

正在連接客服,右下角出現按鈕後即可聊天 ...

-

如果未出現按鈕,請等待一分鐘或者重新進入.

-
- - - - - - - - diff --git a/app/src/main/assets/agreement.html b/app/src/main/assets/agreement.html deleted file mode 100644 index d338885..0000000 --- a/app/src/main/assets/agreement.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - -

服务条款

-
-

为维护双方利益,根据相关法律、法规的规定,双方在平等、自愿、公平、诚信的基础上,加速器科技(以下简称“加速器”)旗下产品加速器客户端(以下简称“加速器”)就用户购买跨境互联网虚拟专用网络服务(以下简称“服务”)的相关事宜达成如下协议,请您务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款、法律适用和争议解决条款,您应重点阅读。如您对协议有任何疑问,可向我方平台客服咨询,协议如下:

- -

a) Our goal is to provide quality service to all customers. Please read these terms of service carefully before you access the site or the service.
-

-

b) These Terms of Service (“the Terms”) govern your use of the 一键连加速器 and the associated website domains (the “Site”) and related service (the “Services”), which are owned and operated by the 一键连加速器 Team (“一键连加速器,” “our”, “we” or “us”). The Terms constitute a legally binding agreement (the “Agreement”) between you and the 一键连 加速器 Team.

-

- 一键连加速器 Service -

-

a) You understand that we are providing you with a virtual private network (or "加速器") service, which includes, but is not limited to, the use of servers, transport, routers, IP addresses and other equipment and protocols to transmit information over our network (the "System"). You agree to abide by the Terms with respect to your use of the Service.

-

- Usage Policy -

-

a) BY USING 一键连 加速器 SERVICE (the "Service") YOU AGREE:

-

a) NOT to use the system for sending spam, port scanning, scanning for open proxies or open relays, sending opt-in email, unsolicited email or any type or version of email sent in large quantities even if the email is ultimately sent off of another server.

-

b) NOT to launch any pop-ups from our service.

-

c) NOT to attack in any way shape or form any other computer or network while on our service.

-

d) NOT to use the service for things that could hurt our network or other people.

-

b) It is the user responsibility to know and comprehend any and all relevant laws related to any jurisdiction or venue that concerns you and your actions. 一键连 加速器 is not liable in any way or form for actions done by its users including a criminal liability and a civil liability for harm executed or not executed beyond any money paid to 一键连 加速器 for its services by a concrete individual.

-

c) Violations of this Usage Policy or the Terms may result in termination of your account, without any refund of amounts previously paid for the Service. Additionally, you may be held responsible for any and all damages incurred to 一键连 加速器, including any amounts charged by any outside entity due to said violation(s), including attorney’s fees and costs without limitation.

-

d) 一键连 加速器 enables you to download software, software updates or patches, or other utilities and tools onto your mobile phones or Internet-enabled device. 一键连 加速器 ("the Software") grants to you a nonexclusive, limited license to use the Software solely for the purpose stated by 一键连 加速器 at the time the Software is made available to you and in accordance with these Terms. Modifying, distributing to unauthorized parties, reverse engineering, or otherwise using the Software in any way not expressly authorized by 一键连 加速器, is strictly prohibited.

-

- Disclaimers -

-

a) We strive to prevent interruptions to the Site and the Service. However, these are provided on an “as is” and “as available” basis, and we do not warrant, either expressly or by implication, the accuracy of any materials or information provided through the Site or Service, or their suitability for any particular purpose.

-

b) Actual service coverage, speeds, locations and quality may vary. The Service will attempt to be available at all times except for limited periods for maintenance and repair. However the Service may be subject to unavailability for a variety of factors beyond our control including emergencies, third party service failures, transmission, equipment or network problems or limitations, interference, signal strength, and may be interrupted, refused, limited or curtailed.

-

c) We do not make any warranty that the Service will meet your requirements, or that it will be uninterrupted, timely, secure, or error free, or that defects, if any, will be corrected. You acknowledge that you access the Site and the Service at your own discretion and risk.

-

d) We are not responsible for data, messages or pages lost, not delivered, delayed or misdirected because of interruptions or performance issues with the Service or communications services or networks (e.g., T-1 lines or the Internet). We may impose usage or Service limits, suspend Service, or block certain kinds of usage in our sole discretion to protect users or the Service. Network speed is an estimate and is no indication of the speed at which your or the Service sends or receives data. Actual network speed will vary based on configuration, compression, network congestion and other factors. The accuracy and timeliness of data received is not guaranteed; delays or omissions may occur.

-

e) We do not log any user activity (sites visited, DNS lookups, emails etc.) We only log access attempts to our servers for the purposes of troubleshooting and improving the Services. We do not get involved in any form of censorship. We do not give your personal info to any third parties.

- -

- 第一条 服务范围 -

-

1.1 加速器向申请主体(以下简称“用户”)提供服务,用户按照本协议约定的条款接受服务。

- -

- 第二条 账户注册及用户资料 -

-

2.1 用户下载加速器客户端后,首次使用手机号和验证码登录即为注册;

-

2.2 用户在使用加速器提供的服务时,应使用真实、准确的手机号进行注册或登录,不得冒用他人手机号,若因冒用他人手机号而产生了纠纷或损失,由客户自行承担;

-

2.3 加速器对用户资料依法保密,但为建立与用户沟通渠道,改善服务工作,加速器可以使用本协议涉及的用户资料;

-

2.4 用户应妥善保管手机号和验证码,因用户原因造成的用户验证码遗失或被他人获取造成的责任、损失,加速器不予承担。

- -

- 第三条 业务使用 -

-

3.1 用户确认开始使用/注册程序使用我方平台服务前,应当具备中华人民共和国法律规定的与您行为相适应的民事行为能力。若用户不具备前述与用户行为相适应的民事行为能力,则应获得监护人的知情同意,用户及用户的监护人应依照法律规定承担因此而导致的相应的责任。如果用户是未成年人,请在用户的监护人同意和指导下访问和/或使用我方服务;

-

3.2 用户使用服务时,应遵守中华人民共和国的法律、法规、规章等相关规定;

-

3.3 加速器提供的服务仅限成功注册并缴费的用户使用,若因用户将服务提供给第三方使用等而产生的责任及损失,由用户自行承担;

-

3.4 官网公布的方式,为下载、注册、登录、使用我方服务的唯一合法途径,您通过其他任何方式获取的我方服务均为非法取得,我方概不承认其效力,一经发现,我方有权立即做出删除、取消、暂停、封号等处理,任何因此导致的一切不利后果均由用户自行承担。我方保留向相关责任主体追究法律责任的权利。

- -

- 第四条 费用标准和费用交纳 -

-

4.1 服务的计费周期为:用户首次登录时系统默认赠送 24 小时免费体验,如需续期,则按官网及客户端展示的租期费用执行,具体租期分为 1 个月、6 个月和 1 年,支付方式可选择微信、支付宝等;

-

4.2 如有政策调整,自调整时间起按新标准执行。

-

4.3 租期服务期限以用户自行选择并支付相应费用的期限为准,租期服务到期后,加速器将停止继续向用户提供相关服务;

- -

- 第五条 服务质量与用户服务 -

-

5.1 加速器会在官网等公布相关事宜的服务项目、服务时限、服务范围、使用规则、交费规定等内容。

-

5.2 加速器负责向用户提供加速器客户端的下载、安装、注册、登录、使用等方面的咨询服务;

-

5.3 因加速器原因造成通信障碍,且不能修复的,加速器免收故障期间的服务费,按天计算(另有约定的除外)。加速器不赔偿因故障造成的其他损失。故障时间的计算,以加速器接到用户申告或加速器查出障碍的时间起至恢复使用为止。

- -

- 第六条 协议中止和解除 -

-

6.1 本协议有效期与用户购买的服务时长一致。

-

6.2 用户有下列情形之一的,加速器可以终止服务并不承担责任,已收取的费用不做退回:

-

(1)用户违反本协议约定,我方依据违约条款终止本协议的;

-

(2)用户转借账号、盗用他人账号、发布违禁内容和信息、骗取他人财物、采取不正当手段谋利等行为,我方依据我方平台规则对您的账号予以查封的;

-

(3)除上述情形外,因用户多次违反我方平台规则相关规定且情节严重,我方依据我方平台规则对您的账户予以查封的;

-

(4)用户在我方平台有侵犯他人合法权益或其他严重违法违约行为的;

-

(5)其它根据相关法律法规我方应当终止服务的情况。

- -

- 第七条 不可抗力及免责 -

-

7.1 由于不可抗力,如战争、电力故障,罢工,暴乱、自然灾害等,鉴于互联网的特殊性,不可抗力还包括黑客攻击、运营商网络通讯中断及其他非因加速器过错产生的系统故障等导致本协议不能履行的,加速器均无需承担违约责任。

-

7.2 如政府、司法行政机关等相关管理部门提出要求,暂停或终止提供相应服务,加速器不承担任何责任。

- -

- 第八条 争议解决 -

-

8.1 所有因本协议引起的或与本协议有关的争议,本着互让互利的原则,通过协商解决。协商不成的,双方也可请求有管辖权的人民法院对所争议的事项做出裁决。

- -

- 第九条 用户服务协议变更 -

-

9.1 加速器更新用户服务协议、隐私权政策及相关平台规则(统称“服务协议”),届时协议更新会通过官网提示、短信推送或客户端公告等方式通知和提醒用户注意。 服务协议变更后,若用户继续使用加速器服务,即表示用户同意接受加速器更新后的服务协议。若用户不同意变更后的服务协议,请用户停止使用加速器服务。

- -

- 第十条 附则 -

-

10.1 本协议自订立、生效、解释、修订、补充、终止、执行与争议解决均适用中华人民共和国法律;如法律无相关规定的,参照商业惯例及/或行业惯例;

-

10.2 加速器保留因技术进步或国家政策变动等原因对服务做出调整的权利,但调整时应提前告知用户并提供相应解决方案;

-

10.3 加速器可以采用电话、互联网等渠道进行业务公告或业务通知;

-

10.4 用户下载并注册加速器客户端时即表示已默认同意本服务协议,此服务协议自用户注册之日起生效;

-

10.5 本协议任一条款被视为废止、无效或不可执行,该条应视为可分的且并不影响本协议其余条款的有效性及可执行性。


- - - - - - - - - diff --git a/app/src/main/assets/agreement_bzy.html b/app/src/main/assets/agreement_bzy.html deleted file mode 100644 index a830c1c..0000000 --- a/app/src/main/assets/agreement_bzy.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - -

服务条款

-
-

为维护双方利益,根据相关法律、法规的规定,双方在平等、自愿、公平、诚信的基础上,加速器科技(以下简称“加速器”)旗下产品加速器客户端(以下简称“加速器”)就用户购买跨境互联网虚拟专用网络服务(以下简称“服务”)的相关事宜达成如下协议,请您务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款、法律适用和争议解决条款,您应重点阅读。如您对协议有任何疑问,可向我方平台客服咨询,协议如下:

- -

a) Our goal is to provide quality service to all customers. Please read these terms of service carefully before you access the site or the service.
-

-

b) These Terms of Service (“the Terms”) govern your use of the 八爪鱼加速器 and the associated website domains (the “Site”) and related service (the “Services”), which are owned and operated by the 八爪鱼加速器 Team (“八爪鱼加速器,” “our”, “we” or “us”). The Terms constitute a legally binding agreement (the “Agreement”) between you and the 八爪鱼 加速器 Team.

-

- 八爪鱼加速器 Service -

-

a) You understand that we are providing you with a virtual private network (or "加速器") service, which includes, but is not limited to, the use of servers, transport, routers, IP addresses and other equipment and protocols to transmit information over our network (the "System"). You agree to abide by the Terms with respect to your use of the Service.

-

- Usage Policy -

-

a) BY USING 八爪鱼 加速器 SERVICE (the "Service") YOU AGREE:

-

a) NOT to use the system for sending spam, port scanning, scanning for open proxies or open relays, sending opt-in email, unsolicited email or any type or version of email sent in large quantities even if the email is ultimately sent off of another server.

-

b) NOT to launch any pop-ups from our service.

-

c) NOT to attack in any way shape or form any other computer or network while on our service.

-

d) NOT to use the service for things that could hurt our network or other people.

-

b) It is the user responsibility to know and comprehend any and all relevant laws related to any jurisdiction or venue that concerns you and your actions. 八爪鱼 加速器 is not liable in any way or form for actions done by its users including a criminal liability and a civil liability for harm executed or not executed beyond any money paid to 八爪鱼 加速器 for its services by a concrete individual.

-

c) Violations of this Usage Policy or the Terms may result in termination of your account, without any refund of amounts previously paid for the Service. Additionally, you may be held responsible for any and all damages incurred to 八爪鱼 加速器, including any amounts charged by any outside entity due to said violation(s), including attorney’s fees and costs without limitation.

-

d) 八爪鱼 加速器 enables you to download software, software updates or patches, or other utilities and tools onto your mobile phones or Internet-enabled device. 八爪鱼 加速器 ("the Software") grants to you a nonexclusive, limited license to use the Software solely for the purpose stated by 八爪鱼 加速器 at the time the Software is made available to you and in accordance with these Terms. Modifying, distributing to unauthorized parties, reverse engineering, or otherwise using the Software in any way not expressly authorized by 八爪鱼 加速器, is strictly prohibited.

-

- Disclaimers -

-

a) We strive to prevent interruptions to the Site and the Service. However, these are provided on an “as is” and “as available” basis, and we do not warrant, either expressly or by implication, the accuracy of any materials or information provided through the Site or Service, or their suitability for any particular purpose.

-

b) Actual service coverage, speeds, locations and quality may vary. The Service will attempt to be available at all times except for limited periods for maintenance and repair. However the Service may be subject to unavailability for a variety of factors beyond our control including emergencies, third party service failures, transmission, equipment or network problems or limitations, interference, signal strength, and may be interrupted, refused, limited or curtailed.

-

c) We do not make any warranty that the Service will meet your requirements, or that it will be uninterrupted, timely, secure, or error free, or that defects, if any, will be corrected. You acknowledge that you access the Site and the Service at your own discretion and risk.

-

d) We are not responsible for data, messages or pages lost, not delivered, delayed or misdirected because of interruptions or performance issues with the Service or communications services or networks (e.g., T-1 lines or the Internet). We may impose usage or Service limits, suspend Service, or block certain kinds of usage in our sole discretion to protect users or the Service. Network speed is an estimate and is no indication of the speed at which your or the Service sends or receives data. Actual network speed will vary based on configuration, compression, network congestion and other factors. The accuracy and timeliness of data received is not guaranteed; delays or omissions may occur.

-

e) We do not log any user activity (sites visited, DNS lookups, emails etc.) We only log access attempts to our servers for the purposes of troubleshooting and improving the Services. We do not get involved in any form of censorship. We do not give your personal info to any third parties.

- -

- 第一条 服务范围 -

-

1.1 加速器向申请主体(以下简称“用户”)提供服务,用户按照本协议约定的条款接受服务。

- -

- 第二条 账户注册及用户资料 -

-

2.1 用户下载加速器客户端后,首次使用手机号和验证码登录即为注册;

-

2.2 用户在使用加速器提供的服务时,应使用真实、准确的手机号进行注册或登录,不得冒用他人手机号,若因冒用他人手机号而产生了纠纷或损失,由客户自行承担;

-

2.3 加速器对用户资料依法保密,但为建立与用户沟通渠道,改善服务工作,加速器可以使用本协议涉及的用户资料;

-

2.4 用户应妥善保管手机号和验证码,因用户原因造成的用户验证码遗失或被他人获取造成的责任、损失,加速器不予承担。

- -

- 第三条 业务使用 -

-

3.1 用户确认开始使用/注册程序使用我方平台服务前,应当具备中华人民共和国法律规定的与您行为相适应的民事行为能力。若用户不具备前述与用户行为相适应的民事行为能力,则应获得监护人的知情同意,用户及用户的监护人应依照法律规定承担因此而导致的相应的责任。如果用户是未成年人,请在用户的监护人同意和指导下访问和/或使用我方服务;

-

3.2 用户使用服务时,应遵守中华人民共和国的法律、法规、规章等相关规定;

-

3.3 加速器提供的服务仅限成功注册并缴费的用户使用,若因用户将服务提供给第三方使用等而产生的责任及损失,由用户自行承担;

-

3.4 官网公布的方式,为下载、注册、登录、使用我方服务的唯一合法途径,您通过其他任何方式获取的我方服务均为非法取得,我方概不承认其效力,一经发现,我方有权立即做出删除、取消、暂停、封号等处理,任何因此导致的一切不利后果均由用户自行承担。我方保留向相关责任主体追究法律责任的权利。

- -

- 第四条 费用标准和费用交纳 -

-

4.1 服务的计费周期为:用户首次登录时系统默认赠送 24 小时免费体验,如需续期,则按官网及客户端展示的租期费用执行,具体租期分为 1 个月、6 个月和 1 年,支付方式可选择微信、支付宝等;

-

4.2 如有政策调整,自调整时间起按新标准执行。

-

4.3 租期服务期限以用户自行选择并支付相应费用的期限为准,租期服务到期后,加速器将停止继续向用户提供相关服务;

- -

- 第五条 服务质量与用户服务 -

-

5.1 加速器会在官网等公布相关事宜的服务项目、服务时限、服务范围、使用规则、交费规定等内容。

-

5.2 加速器负责向用户提供加速器客户端的下载、安装、注册、登录、使用等方面的咨询服务;

-

5.3 因加速器原因造成通信障碍,且不能修复的,加速器免收故障期间的服务费,按天计算(另有约定的除外)。加速器不赔偿因故障造成的其他损失。故障时间的计算,以加速器接到用户申告或加速器查出障碍的时间起至恢复使用为止。

- -

- 第六条 协议中止和解除 -

-

6.1 本协议有效期与用户购买的服务时长一致。

-

6.2 用户有下列情形之一的,加速器可以终止服务并不承担责任,已收取的费用不做退回:

-

(1)用户违反本协议约定,我方依据违约条款终止本协议的;

-

(2)用户转借账号、盗用他人账号、发布违禁内容和信息、骗取他人财物、采取不正当手段谋利等行为,我方依据我方平台规则对您的账号予以查封的;

-

(3)除上述情形外,因用户多次违反我方平台规则相关规定且情节严重,我方依据我方平台规则对您的账户予以查封的;

-

(4)用户在我方平台有侵犯他人合法权益或其他严重违法违约行为的;

-

(5)其它根据相关法律法规我方应当终止服务的情况。

- -

- 第七条 不可抗力及免责 -

-

7.1 由于不可抗力,如战争、电力故障,罢工,暴乱、自然灾害等,鉴于互联网的特殊性,不可抗力还包括黑客攻击、运营商网络通讯中断及其他非因加速器过错产生的系统故障等导致本协议不能履行的,加速器均无需承担违约责任。

-

7.2 如政府、司法行政机关等相关管理部门提出要求,暂停或终止提供相应服务,加速器不承担任何责任。

- -

- 第八条 争议解决 -

-

8.1 所有因本协议引起的或与本协议有关的争议,本着互让互利的原则,通过协商解决。协商不成的,双方也可请求有管辖权的人民法院对所争议的事项做出裁决。

- -

- 第九条 用户服务协议变更 -

-

9.1 加速器更新用户服务协议、隐私权政策及相关平台规则(统称“服务协议”),届时协议更新会通过官网提示、短信推送或客户端公告等方式通知和提醒用户注意。 服务协议变更后,若用户继续使用加速器服务,即表示用户同意接受加速器更新后的服务协议。若用户不同意变更后的服务协议,请用户停止使用加速器服务。

- -

- 第十条 附则 -

-

10.1 本协议自订立、生效、解释、修订、补充、终止、执行与争议解决均适用中华人民共和国法律;如法律无相关规定的,参照商业惯例及/或行业惯例;

-

10.2 加速器保留因技术进步或国家政策变动等原因对服务做出调整的权利,但调整时应提前告知用户并提供相应解决方案;

-

10.3 加速器可以采用电话、互联网等渠道进行业务公告或业务通知;

-

10.4 用户下载并注册加速器客户端时即表示已默认同意本服务协议,此服务协议自用户注册之日起生效;

-

10.5 本协议任一条款被视为废止、无效或不可执行,该条应视为可分的且并不影响本协议其余条款的有效性及可执行性。


- - - - - - - - - diff --git a/app/src/main/assets/agreement_en.html b/app/src/main/assets/agreement_en.html deleted file mode 100644 index 3d742f7..0000000 --- a/app/src/main/assets/agreement_en.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - -

Service Terms

-
-

In order to safeguard the interests of both parties, according to the provisions of relevant laws and regulations, on the basis of equality, voluntariness, fairness and integrity, the 加速器 client (hereinafter referred to as "加速器"), a product of 加速器 Technology (hereinafter referred to as "加速器"), has reached the following agreement on matters related to users' purchase of cross-border Internet virtual private network services (hereinafter referred to as "services"). You must carefully read and fully understand the contents of each clause, especially the clauses on exemption or limitation of liability, application of law and dispute resolution, which you should focus on. If you have any questions about the agreement, you can consult our platform customer service. The agreement is as follows:

- -

a) Our goal is to provide quality service to all customers. Please read these terms of service carefully before you access the site or the service.
-

-

b) These Terms of Service (“the Terms”) govern your use of the 加速器 and the associated website domains (the “Site”) and related service (the “Services”), which are owned and operated by the 加速器 Team (“加速器,” “our”, “we” or “us”). The Terms constitute a legally binding agreement (the “Agreement”) between you and the 加速器 Team.

-

- 加速器 Service -

-

a) You understand that we are providing you with a virtual private network (or "加速器") service, which includes, but is not limited to, the use of servers, transport, routers, IP addresses and other equipment and protocols to transmit information over our network (the "System"). You agree to abide by the Terms with respect to your use of the Service.

-

- Usage Policy -

-

a) BY USING 加速器 SERVICE (the "Service") YOU AGREE:

-

a) NOT to use the system for sending spam, port scanning, scanning for open proxies or open relays, sending opt-in email, unsolicited email or any type or version of email sent in large quantities even if the email is ultimately sent off of another server.

-

b) NOT to launch any pop-ups from our service.

-

c) NOT to attack in any way shape or form any other computer or network while on our service.

-

d) NOT to use the service for things that could hurt our network or other people.

-

b) It is the user responsibility to know and comprehend any and all relevant laws related to any jurisdiction or venue that concerns you and your actions. 加速器 is not liable in any way or form for actions done by its users including a criminal liability and a civil liability for harm executed or not executed beyond any money paid to 加速器 for its services by a concrete individual.

-

c) Violations of this Usage Policy or the Terms may result in termination of your account, without any refund of amounts previously paid for the Service. Additionally, you may be held responsible for any and all damages incurred to 加速器, including any amounts charged by any outside entity due to said violation(s), including attorney’s fees and costs without limitation.

-

d) 加速器 enables you to download software, software updates or patches, or other utilities and tools onto your mobile phones or Internet-enabled device. 加速器 ("the Software") grants to you a nonexclusive, limited license to use the Software solely for the purpose stated by 加速器 at the time the Software is made available to you and in accordance with these Terms. Modifying, distributing to unauthorized parties, reverse engineering, or otherwise using the Software in any way not expressly authorized by 加速器, is strictly prohibited.

-

- Disclaimers -

-

a) We strive to prevent interruptions to the Site and the Service. However, these are provided on an “as is” and “as available” basis, and we do not warrant, either expressly or by implication, the accuracy of any materials or information provided through the Site or Service, or their suitability for any particular purpose.

-

b) Actual service coverage, speeds, locations and quality may vary. The Service will attempt to be available at all times except for limited periods for maintenance and repair. However the Service may be subject to unavailability for a variety of factors beyond our control including emergencies, third party service failures, transmission, equipment or network problems or limitations, interference, signal strength, and may be interrupted, refused, limited or curtailed.

-

c) We do not make any warranty that the Service will meet your requirements, or that it will be uninterrupted, timely, secure, or error free, or that defects, if any, will be corrected. You acknowledge that you access the Site and the Service at your own discretion and risk.

-

d) We are not responsible for data, messages or pages lost, not delivered, delayed or misdirected because of interruptions or performance issues with the Service or communications services or networks (e.g., T-1 lines or the Internet). We may impose usage or Service limits, suspend Service, or block certain kinds of usage in our sole discretion to protect users or the Service. Network speed is an estimate and is no indication of the speed at which your or the Service sends or receives data. Actual network speed will vary based on configuration, compression, network congestion and other factors. The accuracy and timeliness of data received is not guaranteed; delays or omissions may occur.

-

e) We do not log any user activity (sites visited, DNS lookups, emails etc.) We only log access attempts to our servers for the purposes of troubleshooting and improving the Services. We do not get involved in any form of censorship. We do not give your personal info to any third parties.

- -

- Article 1 Service Scope -

-

1.1 加速器 provides services to the applicant (hereinafter referred to as the "user"), and the user accepts the services in accordance with the terms agreed upon in this agreement.

- -

- Article 2 Account Registration and User Information -

-

2.1 After downloading the 加速器 client, the user logs in for the first time using their phone number and verification code, which is considered registration;

-

2.2 When using the services provided by 加速器, users should register or log in using a real and accurate mobile phone number, and are not allowed to use someone else's mobile phone number. If disputes or losses arise due to the use of someone else's mobile phone number, the customer shall bear the responsibility on their own;

-

2.3 加速器 shall keep user information confidential in accordance with the law, but in order to establish communication channels with users and improve service work, 加速器 may use the user information involved in this agreement;

-

2.4 Users should properly keep their phone numbers and verification codes. 加速器 will not be held responsible for any loss or damage caused by the loss or acquisition of the user's verification code due to user reasons.

- -

- Article 3 Business Use -

-

3.1 Before the user confirms the start of using/registering the program to use our platform services, they should have the civil capacity required by the laws of the People's Republic of China that is appropriate for their behavior. If the user does not have the civil capacity corresponding to the user's behavior as mentioned above, the informed consent of the guardian should be obtained, and the user and the user's guardian should bear the corresponding responsibilities in accordance with the law. If the user is a minor, please access and/or use our services with the consent and guidance of the user's guardian;

-

3.2 Users shall comply with the relevant laws, regulations, rules and other provisions of the People's Republic of China when using the service;

-

3.3 The services provided by 加速器 are only available to users who have successfully registered and paid for them. If any liability or loss occurs due to the user providing the services to a third party, the user shall bear it on their own;

-

3.4 The method of publication on the official website is the only legal way to download, register, log in, and use our services. Any other means by which you obtain our services are illegal and we do not recognize their validity. Once discovered, we have the right to immediately take measures such as deletion, cancellation, suspension, account suspension, etc. Any adverse consequences resulting from this shall be borne by the user. We reserve the right to pursue legal responsibility against the relevant responsible parties.

- -

- Article 4 Fee Standards and Payment -

-

4.1 The billing cycle of the service is: when the user logs in for the first time, the system will give a 24-hour free experience by default. If it needs to be renewed, it will be executed according to the rental fees displayed on the official website and the client. The specific rental period is divided into one month, six months and one year. The payment method can be WeChat, Alipay, etc;

-

4.2 If there are policy adjustments, the new standards shall be implemented from the time of adjustment.

-

4.3 The rental service period shall be determined by the user's own choice and payment of the corresponding fees. After the expiration of the rental service period, the 加速器 will cease to provide relevant services to the user;

- -

- Article 5 Service Quality and User Service -

-

5.1 加速器 will publish relevant information such as service items, service time limits, service scope, usage rules, payment regulations, etc. on its official website.

-

5.2 加速器 is responsible for providing users with consulting services on downloading, installing, registering, logging in, and using 加速器 clients;

-

5.3 If communication barriers are caused by 加速器 reasons and cannot be repaired, 加速器 will waive the service fee during the fault period, calculated on a daily basis (unless otherwise agreed). 加速器 does not compensate for any other losses caused by malfunctions. The calculation of failure time is from the time when the 加速器 receives a user report or detects an obstacle until it is restored to use.

- -

- Article 6 Suspension and Termination of the Agreement -

-

6.1 The validity period of this agreement shall be consistent with the duration of the services purchased by the user.

-

6.2 If a user falls under any of the following circumstances, 加速器 may terminate the service without assuming any responsibility, and the fees already collected will not be refunded:

-

(1) If the user violates the provisions of this agreement, we will terminate this agreement in accordance with the breach clause;

-

(2) If a user borrows an account, steals another person's account, posts prohibited content and information, deceives others' property, or uses improper means for profit, we will seal your account in accordance with our platform rules;

-

(3) In addition to the above situations, if the user repeatedly violates the relevant regulations of our platform rules and the circumstances are serious, we will seal your account in accordance with our platform rules;

-

(4) Users who infringe upon the legitimate rights and interests of others or engage in other serious illegal or breach of contract behaviors on our platform;

-

(5) Other situations where we should terminate the service according to relevant laws and regulations.

- -

- Article 7 Force Majeure and Exemption from Liability -

-

7.1 If this agreement cannot be performed due to force majeure, such as war, power failure, strike, riot, natural disaster, etc., and in view of the particularity of the Internet, force majeure also includes hacker attacks, network communication interruption of operators, and other system failures not caused by 加速器 fault, 加速器 shall not be liable for breach of contract.

-

7.2 If the government, judicial administrative agencies or other relevant management departments request to suspend or terminate the provision of corresponding services, 加速器 shall not be held responsible.

- -

- Article 8 Dispute Resolution -

-

8.1 All disputes arising from or related to this agreement shall be resolved through negotiation based on the principle of mutual concession and benefit. If the negotiation fails, both parties may also request the people's court with jurisdiction to make a ruling on the disputed matter.

- -

- Article 9 Change of User Service Agreement -

-

9.1 加速器 updates the User Service Agreement, Privacy Policy, and related platform rules (collectively referred to as the "Service Agreement"). At that time, the agreement updates will be notified and reminded to users through official website prompts, SMS push notifications, or client announcements. After the service agreement is changed, if the user continues to use the 加速器 service, it means that the user agrees to accept the updated service agreement of the 加速器. If the user does not agree to the revised service agreement, please stop using the 加速器 service.

- -

- Article 10 Supplementary Provisions -

-

10.1 This agreement shall be governed by the laws of the People's Republic of China in terms of its formation, effectiveness, interpretation, revision, supplementation, termination, execution, and dispute resolution; If there are no relevant legal provisions, refer to commercial and/or industry practices;

-

10.2 加速器 reserves the right to make adjustments to the service due to technological advancements or changes in national policies, but users should be informed in advance and corresponding solutions should be provided;

-

10.3 加速器 can use telephone, Internet and other channels to make business announcements or business notifications;

-

10.4 When the user downloads and registers the 加速器 client, it means that they have agreed to this service agreement by default. This service agreement shall come into effect from the date of user registration;

-

10.5 If any provision of this Agreement is deemed null and void or unenforceable, such provision shall be deemed separable and shall not affect the validity and enforceability of the remaining provisions of this Agreement.


- - - - - - - - - diff --git a/app/src/main/assets/agreement_hk.html b/app/src/main/assets/agreement_hk.html deleted file mode 100644 index b3243fc..0000000 --- a/app/src/main/assets/agreement_hk.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - -

服務條款

-
-

爲維護雙方利益,根據相關法律、法規的規定,雙方在平等、自願、公平、誠信的基礎上,加速器科技(以下簡稱“加速器”)旗下產品加速器客户端(以下簡稱“加速器”)就用户購買跨境互聯網虛擬專用網絡服務(以下簡稱“服務”)的相關事宜達成如下協議,請您務必審慎閲讀、充分理解各條款內容,特彆是免除或者限製責任的條款、法律適用和爭議解決條款,您應重點閲讀。如您對協議有任何疑問,可嚮我方平枱客服咨詢,協議如下:

- -

a) Our goal is to provide quality service to all customers. Please read these terms of service carefully before you access the site or the service.
-

-

b) These Terms of Service (“the Terms”) govern your use of the 加速器 and the associated website domains (the “Site”) and related service (the “Services”), which are owned and operated by the 加速器 Team (“加速器,” “our”, “we” or “us”). The Terms constitute a legally binding agreement (the “Agreement”) between you and the 加速器 Team.

-

- 加速器 Service -

-

a) You understand that we are providing you with a virtual private network (or "加速器") service, which includes, but is not limited to, the use of servers, transport, routers, IP addresses and other equipment and protocols to transmit information over our network (the "System"). You agree to abide by the Terms with respect to your use of the Service.

-

- Usage Policy -

-

a) BY USING 加速器 SERVICE (the "Service") YOU AGREE:

-

a) NOT to use the system for sending spam, port scanning, scanning for open proxies or open relays, sending opt-in email, unsolicited email or any type or version of email sent in large quantities even if the email is ultimately sent off of another server.

-

b) NOT to launch any pop-ups from our service.

-

c) NOT to attack in any way shape or form any other computer or network while on our service.

-

d) NOT to use the service for things that could hurt our network or other people.

-

b) It is the user responsibility to know and comprehend any and all relevant laws related to any jurisdiction or venue that concerns you and your actions. 加速器 is not liable in any way or form for actions done by its users including a criminal liability and a civil liability for harm executed or not executed beyond any money paid to 加速器 for its services by a concrete individual.

-

c) Violations of this Usage Policy or the Terms may result in termination of your account, without any refund of amounts previously paid for the Service. Additionally, you may be held responsible for any and all damages incurred to 加速器, including any amounts charged by any outside entity due to said violation(s), including attorney’s fees and costs without limitation.

-

d) 加速器 enables you to download software, software updates or patches, or other utilities and tools onto your mobile phones or Internet-enabled device. 加速器 ("the Software") grants to you a nonexclusive, limited license to use the Software solely for the purpose stated by 加速器 at the time the Software is made available to you and in accordance with these Terms. Modifying, distributing to unauthorized parties, reverse engineering, or otherwise using the Software in any way not expressly authorized by 加速器, is strictly prohibited.

-

- Disclaimers -

-

a) We strive to prevent interruptions to the Site and the Service. However, these are provided on an “as is” and “as available” basis, and we do not warrant, either expressly or by implication, the accuracy of any materials or information provided through the Site or Service, or their suitability for any particular purpose.

-

b) Actual service coverage, speeds, locations and quality may vary. The Service will attempt to be available at all times except for limited periods for maintenance and repair. However the Service may be subject to unavailability for a variety of factors beyond our control including emergencies, third party service failures, transmission, equipment or network problems or limitations, interference, signal strength, and may be interrupted, refused, limited or curtailed.

-

c) We do not make any warranty that the Service will meet your requirements, or that it will be uninterrupted, timely, secure, or error free, or that defects, if any, will be corrected. You acknowledge that you access the Site and the Service at your own discretion and risk.

-

d) We are not responsible for data, messages or pages lost, not delivered, delayed or misdirected because of interruptions or performance issues with the Service or communications services or networks (e.g., T-1 lines or the Internet). We may impose usage or Service limits, suspend Service, or block certain kinds of usage in our sole discretion to protect users or the Service. Network speed is an estimate and is no indication of the speed at which your or the Service sends or receives data. Actual network speed will vary based on configuration, compression, network congestion and other factors. The accuracy and timeliness of data received is not guaranteed; delays or omissions may occur.

-

e) We do not log any user activity (sites visited, DNS lookups, emails etc.) We only log access attempts to our servers for the purposes of troubleshooting and improving the Services. We do not get involved in any form of censorship. We do not give your personal info to any third parties.

- -

- 第一條 服務範圍 -

-

1.1 加速器嚮申請主體(以下簡稱“用户”)提供服務,用户按照本協議約定的條款接受服務。

- -

- 第二條 賬户注冊及用户資料 -

-

2.1 用户下載加速器客户端後,首次使用手機號和驗證碼登録即爲注冊;

-

2.2 用户在使用加速器提供的服務時,應使用真實、準確的手機號進行注冊或登録,不得冒用他人手機號,若因冒用他人手機號而產生瞭糾紛或損失,由客户自行承擔;

-

2.3 加速器對用户資料依法保密,但爲建立與用户溝通渠道,改善服務工作,加速器可以使用本協議涉及的用户資料;

-

2.4 用户應妥善保管手機號和驗證碼,因用户原因造成的用户驗證碼遺失或被他人穫取造成的責任、損失,加速器不予承擔。

- -

- 第三條 業務使用 -

-

3.1 用户確認開始使用/注冊程序使用我方平枱服務前,應當具備中華人民共和國法律規定的與您行爲相適應的民事行爲能力。若用户不具備前述與用户行爲相適應的民事行爲能力,則應穫得監護人的知情同意,用户及用户的監護人應依照法律規定承擔因此而導緻的相應的責任。如果用户是未成年人,請在用户的監護人同意和指導下訪問和/或使用我方服務;

-

3.2 用户使用服務時,應遵守中華人民共和國的法律、法規、規章等相關規定;

-

3.3 加速器提供的服務僅限成功注冊并繳費的用户使用,若因用户將服務提供給第三方使用等而產生的責任及損失,由用户自行承擔;

-

3.4 官網公布的方式,爲下載、注冊、登録、使用我方服務的唯一合法途徑,您通過其他任何方式穫取的我方服務均爲非法取得,我方概不承認其效力,一經發現,我方有權立即做齣刪除、取消、暫停、封號等處理,任何因此導緻的一切不利後果均由用户自行承擔。我方保留嚮相關責任主體追究法律責任的權利。

- -

- 第四條 費用標準和費用交納 -

-

4.1 服務的計費周期爲:用户首次登録時係統默認贈送 24 小時免費體驗,如需續期,則按官網及客户端展示的租期費用執行,具體租期分爲 1 個月、6 個月和 1 年,支付方式可選擇微信、支付寶等;

-

4.2 如有政策調整,自調整時間起按新標準執行。

-

4.3 租期服務期限以用户自行選擇并支付相應費用的期限爲準,租期服務到期後,加速器將停止繼續嚮用户提供相關服務;

- -

- 第五條 服務質量與用户服務 -

-

5.1 加速器會在官網等公布相關事宜的服務項目、服務時限、服務範圍、使用規則、交費規定等內容。

-

5.2 加速器負責嚮用户提供加速器客户端的下載、安裝、注冊、登録、使用等方面的咨詢服務;

-

5.3 因加速器原因造成通信障礙,且不能修複的,加速器免收故障期間的服務費,按天計算(另有約定的除外)。加速器不賠償因故障造成的其他損失。故障時間的計算,以加速器接到用户申告或加速器查齣障礙的時間起至恢複使用爲止。

- -

- 第六條 協議中止和解除 -

-

6.1 本協議有效期與用户購買的服務時長一緻。

-

6.2 用户有下列情形之一的,加速器可以終止服務并不承擔責任,已收取的費用不做退迴:

-

(1)用户違反本協議約定,我方依據違約條款終止本協議的;

-

(2)用户轉借賬號、盜用他人賬號、發布違禁內容和信息、騙取他人財物、采取不正當手段謀利等行爲,我方依據我方平枱規則對您的賬號予以查封的;

-

(3)除上述情形外,因用户多次違反我方平枱規則相關規定且情節嚴重,我方依據我方平枱規則對您的賬户予以查封的;

-

(4)用户在我方平枱有侵犯他人合法權益或其他嚴重違法違約行爲的;

-

(5)其它根據相關法律法規我方應當終止服務的情況。

- -

- 第七條 不可抗力及免責 -

-

7.1 由於不可抗力,如戰爭、電力故障,罷工,暴亂、自然灾害等,鑒於互聯網的特殊性,不可抗力還包括黑客攻擊、運營商網絡通訊中斷及其他非因加速器過錯產生的係統故障等導緻本協議不能履行的,加速器均無需承擔違約責任。

-

7.2 如政府、司法行政機關等相關管理部門提齣要求,暫停或終止提供相應服務,加速器不承擔任何責任。

- -

- 第八條 爭議解決 -

-

8.1 所有因本協議引起的或與本協議有關的爭議,本着互讓互利的原則,通過協商解決。協商不成的,雙方也可請求有管轄權的人民法院對所爭議的事項做齣裁決。

- -

- 第九條 用户服務協議變更 -

-

9.1 加速器更新用户服務協議、隱私權政策及相關平枱規則(統稱“服務協議”),屆時協議更新會通過官網提示、短信推送或客户端公告等方式通知和提醒用户注意。 服務協議變更後,若用户繼續使用加速器服務,即錶示用户同意接受加速器更新後的服務協議。若用户不同意變更後的服務協議,請用户停止使用加速器服務。

- -

- 第十條 附則 -

-

10.1 本協議自訂立、生效、解釋、修訂、補充、終止、執行與爭議解決均適用中華人民共和國法律;如法律無相關規定的,參照商業慣例及/或行業慣例;

-

10.2 加速器保留因技術進步或國傢政策變動等原因對服務做齣調整的權利,但調整時應提前告知用户并提供相應解決方案;

-

10.3 加速器可以采用電話、互聯網等渠道進行業務公告或業務通知;

-

10.4 用户下載并注冊加速器客户端時即錶示已默認同意本服務協議,此服務協議自用户注冊之日起生效;

-

10.5 本協議任一條款被視爲廢止、無效或不可執行,該條應視爲可分的且并不影響本協議其餘條款的有效性及可執行性。


- - - - - - - - - diff --git a/app/src/main/assets/agreement_taizi_hk.html b/app/src/main/assets/agreement_taizi_hk.html deleted file mode 100644 index f3666c9..0000000 --- a/app/src/main/assets/agreement_taizi_hk.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - -

服務條款

-
-

爲維護雙方利益,根據相關法律、法規的規定,雙方在平等、自願、公平、誠信的基礎上,加速器科技(以下簡稱“加速器”)旗下產品加速器客户端(以下簡稱“加速器”)就用户購買跨境互聯網虛擬專用網絡服務(以下簡稱“服務”)的相關事宜達成如下協議,請您務必審慎閲讀、充分理解各條款內容,特彆是免除或者限製責任的條款、法律適用和爭議解決條款,您應重點閲讀。如您對協議有任何疑問,可嚮我方平枱客服咨詢,協議如下:

- -

a) Our goal is to provide quality service to all customers. Please read these terms of service carefully before you access the site or the service.
-

-

b) These Terms of Service (“the Terms”) govern your use of the 太子 and the associated website domains (the “Site”) and related service (the “Services”), which are owned and operated by the 太子 Team (“太子,” “our”, “we” or “us”). The Terms constitute a legally binding agreement (the “Agreement”) between you and the 太子 加速器 Team.

-

- 太子 Service -

-

a) You understand that we are providing you with a virtual private network (or "加速器") service, which includes, but is not limited to, the use of servers, transport, routers, IP addresses and other equipment and protocols to transmit information over our network (the "System"). You agree to abide by the Terms with respect to your use of the Service.

-

- Usage Policy -

-

a) BY USING 太子 加速器 SERVICE (the "Service") YOU AGREE:

-

a) NOT to use the system for sending spam, port scanning, scanning for open proxies or open relays, sending opt-in email, unsolicited email or any type or version of email sent in large quantities even if the email is ultimately sent off of another server.

-

b) NOT to launch any pop-ups from our service.

-

c) NOT to attack in any way shape or form any other computer or network while on our service.

-

d) NOT to use the service for things that could hurt our network or other people.

-

b) It is the user responsibility to know and comprehend any and all relevant laws related to any jurisdiction or venue that concerns you and your actions. 太子 加速器 is not liable in any way or form for actions done by its users including a criminal liability and a civil liability for harm executed or not executed beyond any money paid to 太子 加速器 for its services by a concrete individual.

-

c) Violations of this Usage Policy or the Terms may result in termination of your account, without any refund of amounts previously paid for the Service. Additionally, you may be held responsible for any and all damages incurred to 太子 加速器, including any amounts charged by any outside entity due to said violation(s), including attorney’s fees and costs without limitation.

-

d) 太子 加速器 enables you to download software, software updates or patches, or other utilities and tools onto your mobile phones or Internet-enabled device. 太子 加速器 ("the Software") grants to you a nonexclusive, limited license to use the Software solely for the purpose stated by 太子 加速器 at the time the Software is made available to you and in accordance with these Terms. Modifying, distributing to unauthorized parties, reverse engineering, or otherwise using the Software in any way not expressly authorized by 太子 加速器, is strictly prohibited.

-

- Disclaimers -

-

a) We strive to prevent interruptions to the Site and the Service. However, these are provided on an “as is” and “as available” basis, and we do not warrant, either expressly or by implication, the accuracy of any materials or information provided through the Site or Service, or their suitability for any particular purpose.

-

b) Actual service coverage, speeds, locations and quality may vary. The Service will attempt to be available at all times except for limited periods for maintenance and repair. However the Service may be subject to unavailability for a variety of factors beyond our control including emergencies, third party service failures, transmission, equipment or network problems or limitations, interference, signal strength, and may be interrupted, refused, limited or curtailed.

-

c) We do not make any warranty that the Service will meet your requirements, or that it will be uninterrupted, timely, secure, or error free, or that defects, if any, will be corrected. You acknowledge that you access the Site and the Service at your own discretion and risk.

-

d) We are not responsible for data, messages or pages lost, not delivered, delayed or misdirected because of interruptions or performance issues with the Service or communications services or networks (e.g., T-1 lines or the Internet). We may impose usage or Service limits, suspend Service, or block certain kinds of usage in our sole discretion to protect users or the Service. Network speed is an estimate and is no indication of the speed at which your or the Service sends or receives data. Actual network speed will vary based on configuration, compression, network congestion and other factors. The accuracy and timeliness of data received is not guaranteed; delays or omissions may occur.

-

e) We do not log any user activity (sites visited, DNS lookups, emails etc.) We only log access attempts to our servers for the purposes of troubleshooting and improving the Services. We do not get involved in any form of censorship. We do not give your personal info to any third parties.

- -

- 第一條 服務範圍 -

-

1.1 加速器嚮申請主體(以下簡稱“用户”)提供服務,用户按照本協議約定的條款接受服務。

- -

- 第二條 賬户注冊及用户資料 -

-

2.1 用户下載加速器客户端後,首次使用手機號和驗證碼登録即爲注冊;

-

2.2 用户在使用加速器提供的服務時,應使用真實、準確的手機號進行注冊或登録,不得冒用他人手機號,若因冒用他人手機號而產生瞭糾紛或損失,由客户自行承擔;

-

2.3 加速器對用户資料依法保密,但爲建立與用户溝通渠道,改善服務工作,加速器可以使用本協議涉及的用户資料;

-

2.4 用户應妥善保管手機號和驗證碼,因用户原因造成的用户驗證碼遺失或被他人穫取造成的責任、損失,加速器不予承擔。

- -

- 第三條 業務使用 -

-

3.1 用户確認開始使用/注冊程序使用我方平枱服務前,應當具備中華人民共和國法律規定的與您行爲相適應的民事行爲能力。若用户不具備前述與用户行爲相適應的民事行爲能力,則應穫得監護人的知情同意,用户及用户的監護人應依照法律規定承擔因此而導緻的相應的責任。如果用户是未成年人,請在用户的監護人同意和指導下訪問和/或使用我方服務;

-

3.2 用户使用服務時,應遵守中華人民共和國的法律、法規、規章等相關規定;

-

3.3 加速器提供的服務僅限成功注冊并繳費的用户使用,若因用户將服務提供給第三方使用等而產生的責任及損失,由用户自行承擔;

-

3.4 官網公布的方式,爲下載、注冊、登録、使用我方服務的唯一合法途徑,您通過其他任何方式穫取的我方服務均爲非法取得,我方概不承認其效力,一經發現,我方有權立即做齣刪除、取消、暫停、封號等處理,任何因此導緻的一切不利後果均由用户自行承擔。我方保留嚮相關責任主體追究法律責任的權利。

- -

- 第四條 費用標準和費用交納 -

-

4.1 服務的計費周期爲:用户首次登録時係統默認贈送 24 小時免費體驗,如需續期,則按官網及客户端展示的租期費用執行,具體租期分爲 1 個月、6 個月和 1 年,支付方式可選擇微信、支付寶等;

-

4.2 如有政策調整,自調整時間起按新標準執行。

-

4.3 租期服務期限以用户自行選擇并支付相應費用的期限爲準,租期服務到期後,加速器將停止繼續嚮用户提供相關服務;

- -

- 第五條 服務質量與用户服務 -

-

5.1 加速器會在官網等公布相關事宜的服務項目、服務時限、服務範圍、使用規則、交費規定等內容。

-

5.2 加速器負責嚮用户提供加速器客户端的下載、安裝、注冊、登録、使用等方面的咨詢服務;

-

5.3 因加速器原因造成通信障礙,且不能修複的,加速器免收故障期間的服務費,按天計算(另有約定的除外)。加速器不賠償因故障造成的其他損失。故障時間的計算,以加速器接到用户申告或加速器查齣障礙的時間起至恢複使用爲止。

- -

- 第六條 協議中止和解除 -

-

6.1 本協議有效期與用户購買的服務時長一緻。

-

6.2 用户有下列情形之一的,加速器可以終止服務并不承擔責任,已收取的費用不做退迴:

-

(1)用户違反本協議約定,我方依據違約條款終止本協議的;

-

(2)用户轉借賬號、盜用他人賬號、發布違禁內容和信息、騙取他人財物、采取不正當手段謀利等行爲,我方依據我方平枱規則對您的賬號予以查封的;

-

(3)除上述情形外,因用户多次違反我方平枱規則相關規定且情節嚴重,我方依據我方平枱規則對您的賬户予以查封的;

-

(4)用户在我方平枱有侵犯他人合法權益或其他嚴重違法違約行爲的;

-

(5)其它根據相關法律法規我方應當終止服務的情況。

- -

- 第七條 不可抗力及免責 -

-

7.1 由於不可抗力,如戰爭、電力故障,罷工,暴亂、自然灾害等,鑒於互聯網的特殊性,不可抗力還包括黑客攻擊、運營商網絡通訊中斷及其他非因加速器過錯產生的係統故障等導緻本協議不能履行的,加速器均無需承擔違約責任。

-

7.2 如政府、司法行政機關等相關管理部門提齣要求,暫停或終止提供相應服務,加速器不承擔任何責任。

- -

- 第八條 爭議解決 -

-

8.1 所有因本協議引起的或與本協議有關的爭議,本着互讓互利的原則,通過協商解決。協商不成的,雙方也可請求有管轄權的人民法院對所爭議的事項做齣裁決。

- -

- 第九條 用户服務協議變更 -

-

9.1 加速器更新用户服務協議、隱私權政策及相關平枱規則(統稱“服務協議”),屆時協議更新會通過官網提示、短信推送或客户端公告等方式通知和提醒用户注意。 服務協議變更後,若用户繼續使用加速器服務,即錶示用户同意接受加速器更新後的服務協議。若用户不同意變更後的服務協議,請用户停止使用加速器服務。

- -

- 第十條 附則 -

-

10.1 本協議自訂立、生效、解釋、修訂、補充、終止、執行與爭議解決均適用中華人民共和國法律;如法律無相關規定的,參照商業慣例及/或行業慣例;

-

10.2 加速器保留因技術進步或國傢政策變動等原因對服務做齣調整的權利,但調整時應提前告知用户并提供相應解決方案;

-

10.3 加速器可以采用電話、互聯網等渠道進行業務公告或業務通知;

-

10.4 用户下載并注冊加速器客户端時即錶示已默認同意本服務協議,此服務協議自用户注冊之日起生效;

-

10.5 本協議任一條款被視爲廢止、無效或不可執行,該條應視爲可分的且并不影響本協議其餘條款的有效性及可執行性。


- - - diff --git a/app/src/main/assets/kefu.html b/app/src/main/assets/kefu.html deleted file mode 100644 index a435871..0000000 --- a/app/src/main/assets/kefu.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - 连接中... - - - -

正在连接客服,右下角出现按钮后即可聊天...

-
- - - - - - - diff --git a/app/src/main/assets/privacy.html b/app/src/main/assets/privacy.html deleted file mode 100644 index 8526d07..0000000 --- a/app/src/main/assets/privacy.html +++ /dev/null @@ -1,125 +0,0 @@ - - - -

隐私政策

-
-

- 引言 -

-

一键连非常重视您的隐私。因此,我们制定了涵盖如何收集、使用、披露、转让以及存储您的信息的隐私政策。如您使用或继续使用我们的服务,都表示您同意我们按照本《一键连隐私政策》收集、使用、储存和分享您的信息。请花些时间熟悉我们针对客户隐私的做法,如有任何疑问,请联系我们。

- -

- 信息收集 -

-

您在注册账户或使用我们的服务时,向我们提供的相关个人信息,例如电话号码、电子邮件等;您通过我们的服务向其他方提供的共享信息,以及您使用我们的服务时所储存的信息。

- -

- 您提供的信息 -

-

您在注册账户或使用我们的服务时,向我们提供的相关个人信息,例如电话号码、电子邮件等;您通过我们的服务向其他方提供的共享信息,以及您使用我们的服务时所储存的信息。

- -

- 我们获取的您的信息 -

-

您使用服务时,我们可能收集如下信息:日志信息,指您使用我们的服务时,系统可能通过cookies 或其他方式自动采集的技术信息,包括但不限于:软件信息、应用标识符、应用程序版本、应用分发渠道、iOS 供应商标识符(IDFV)、iOS 广告标识符(IDFA)、安卓广告主标识符等。

- -

- 信息使用 -

-

一键连利用收集的信息来提供、维护、保护和改进服务,同时开发新的服务为用户创造更好的体验,并提高我们的总体服务品质。

- -

- 您理解并同意,一键连可在如下情形使用您的信息: -

-

1)向您提供服务,特别是为您提供定制服务;

-

2)在我们提供服务时,用于身份验证、客户服务、安全防范、诈骗监测、存档和备份用途,确保我们向您提供的产品和服务的安全性;

-

3)帮助我们设计新服务,改善我们现有服务;

-

4)向您提供与您更加相关的广告以替代普遍投放的广告;

-

5)评估我们服务中的广告和其他促销及推广活动的效果,并加以改善;

-

6)一键连可能会对产品使用情况进行统计,并可能会与公众分享这些统计信息,以展示我们服务的整体使用趋势;

-

7)软件认证或管理软件升级;

-

8)其他有利于为您提供服务的情形。

- -

- 信息披露 -

-

除以下情形外,未经您的同意,一键连不会与任何第三方分享您的个人信息。

-

一键连可能将您的个人信息与我们的关联公司、合作伙伴及第三方服务供应商、承包商及代理(例如代表我们发出电子邮件或推送通知的通讯服务提供商)分享(他们可能并非位于您所在的法域),用作下列用途:

-

1)向您提供我们的服务;

-

2)实现“我们可能如何使用信息”部分所述目的;

-

3)理解、维护和改善我们的服务。

- -

- 信息安全 -

-

我们仅在本《加速器隐私政策》所述目的所必需的期间和法律法规要求的时限内,保留您的个人信息。

-

我们会使用各种安全技术和程序,以防信息的丢失、不当使用、未经授权阅览或披露。例如,在某些服务中,我们将利用加密技术(例如 SSL)来保护您提供的个人信息。但请您理解,由于技术的限制以及可能存在的各种恶意手段,在互联网行业,即便竭尽所能加强安全措施,也不可能始终保证信息百分之百的安全。您需要了解,您接入我们的服务所用的系统和通讯网络,有可能因我们可控范围外的因素而出现问题。

- -

- 敏感信息 -

-

某些个人信息因其特殊性可能被认为是敏感信息,例如您的种族、宗教、个人健康和医疗信息等。相比其他个人信息,敏感个人信息受到更加严格的保护。您需要谨慎地考虑,是否在使用我们的服务时披露相关敏感个人信息。

- -

- 信息收集 -

-

加速器可能会收集或使用您的信息,并将这些信息储存为日志信息,目的是为您提供更个性化的用户体验和服务,并用于以下用途:记住您的身份、分析您使用我们服务的情况以及优化广告等。

- -

- 广告服务 -

-

我们可能使用您的相关信息,向您提供与服务相关的广告。如您不希望我们将您的个人信息用作前述广告用途,您可以通过广告中提供的相关提示或在特定服务中提供的指引,要求我们停止为上述用途使用您的个人信息。

- -

- 邮件公告 -

-

您在使用我们的服务时,我们可能使用您的信息向您的设备发送电子邮件(用于通知或找回账户密码信息)。此外,我们可能在必要时(例如因系统维护而暂停某一项服务时)向您发出与服务有关的公告。您可能无法取消这些与服务有关、性质不属于推广的公告。

- - - -

- 未成年人信息保护 -

-

我们鼓励父母或监护人指导未满十八岁的未成年人使用我们的服务。我们建议未成年人阅读本《加速器隐私政策》,并在提交个人信息之前寻求父母或监护人的同意和指导。

- - -

- 适用范围 -

-

请您注意,本《加速器隐私政策》不适用于以下情况:

-

通过我们的服务而接入的第三方服务(包括任何第三方网站)收集的信息;

-

通过在我们服务中进行广告服务的其他公司或机构所收集的信息。

- - -

- 变更 -

-

我们可能适时修订本《加速器隐私政策》的条款,如该等修订造成您在本《加速器隐私政策》下权利的实质减少,我们将在修订生效前通过在主页上显著位置提示或向您发送电子邮件或以其他方式通知您。在该种情况下,若您继续使用我们的服务,即表示同意受经修订的本《加速器隐私政策》的约束。

-
- - - - - - - - - \ No newline at end of file diff --git a/app/src/main/assets/privacy_bzy.html b/app/src/main/assets/privacy_bzy.html deleted file mode 100644 index 5bb2403..0000000 --- a/app/src/main/assets/privacy_bzy.html +++ /dev/null @@ -1,125 +0,0 @@ - - - -

隐私政策

-
-

- 引言 -

-

八爪鱼非常重视您的隐私。因此,我们制定了涵盖如何收集、使用、披露、转让以及存储您的信息的隐私政策。如您使用或继续使用我们的服务,都表示您同意我们按照本《八爪鱼隐私政策》收集、使用、储存和分享您的信息。请花些时间熟悉我们针对客户隐私的做法,如有任何疑问,请联系我们。

- -

- 信息收集 -

-

您在注册账户或使用我们的服务时,向我们提供的相关个人信息,例如电话号码、电子邮件等;您通过我们的服务向其他方提供的共享信息,以及您使用我们的服务时所储存的信息。

- -

- 您提供的信息 -

-

您在注册账户或使用我们的服务时,向我们提供的相关个人信息,例如电话号码、电子邮件等;您通过我们的服务向其他方提供的共享信息,以及您使用我们的服务时所储存的信息。

- -

- 我们获取的您的信息 -

-

您使用服务时,我们可能收集如下信息:日志信息,指您使用我们的服务时,系统可能通过cookies 或其他方式自动采集的技术信息,包括但不限于:软件信息、应用标识符、应用程序版本、应用分发渠道、iOS 供应商标识符(IDFV)、iOS 广告标识符(IDFA)、安卓广告主标识符等。

- -

- 信息使用 -

-

八爪鱼利用收集的信息来提供、维护、保护和改进服务,同时开发新的服务为用户创造更好的体验,并提高我们的总体服务品质。

- -

- 您理解并同意,八爪鱼可在如下情形使用您的信息: -

-

1)向您提供服务,特别是为您提供定制服务;

-

2)在我们提供服务时,用于身份验证、客户服务、安全防范、诈骗监测、存档和备份用途,确保我们向您提供的产品和服务的安全性;

-

3)帮助我们设计新服务,改善我们现有服务;

-

4)向您提供与您更加相关的广告以替代普遍投放的广告;

-

5)评估我们服务中的广告和其他促销及推广活动的效果,并加以改善;

-

6)八爪鱼可能会对产品使用情况进行统计,并可能会与公众分享这些统计信息,以展示我们服务的整体使用趋势;

-

7)软件认证或管理软件升级;

-

8)其他有利于为您提供服务的情形。

- -

- 信息披露 -

-

除以下情形外,未经您的同意,八爪鱼不会与任何第三方分享您的个人信息。

-

八爪鱼可能将您的个人信息与我们的关联公司、合作伙伴及第三方服务供应商、承包商及代理(例如代表我们发出电子邮件或推送通知的通讯服务提供商)分享(他们可能并非位于您所在的法域),用作下列用途:

-

1)向您提供我们的服务;

-

2)实现“我们可能如何使用信息”部分所述目的;

-

3)理解、维护和改善我们的服务。

- -

- 信息安全 -

-

我们仅在本《加速器隐私政策》所述目的所必需的期间和法律法规要求的时限内,保留您的个人信息。

-

我们会使用各种安全技术和程序,以防信息的丢失、不当使用、未经授权阅览或披露。例如,在某些服务中,我们将利用加密技术(例如 SSL)来保护您提供的个人信息。但请您理解,由于技术的限制以及可能存在的各种恶意手段,在互联网行业,即便竭尽所能加强安全措施,也不可能始终保证信息百分之百的安全。您需要了解,您接入我们的服务所用的系统和通讯网络,有可能因我们可控范围外的因素而出现问题。

- -

- 敏感信息 -

-

某些个人信息因其特殊性可能被认为是敏感信息,例如您的种族、宗教、个人健康和医疗信息等。相比其他个人信息,敏感个人信息受到更加严格的保护。您需要谨慎地考虑,是否在使用我们的服务时披露相关敏感个人信息。

- -

- 信息收集 -

-

加速器可能会收集或使用您的信息,并将这些信息储存为日志信息,目的是为您提供更个性化的用户体验和服务,并用于以下用途:记住您的身份、分析您使用我们服务的情况以及优化广告等。

- -

- 广告服务 -

-

我们可能使用您的相关信息,向您提供与服务相关的广告。如您不希望我们将您的个人信息用作前述广告用途,您可以通过广告中提供的相关提示或在特定服务中提供的指引,要求我们停止为上述用途使用您的个人信息。

- -

- 邮件公告 -

-

您在使用我们的服务时,我们可能使用您的信息向您的设备发送电子邮件(用于通知或找回账户密码信息)。此外,我们可能在必要时(例如因系统维护而暂停某一项服务时)向您发出与服务有关的公告。您可能无法取消这些与服务有关、性质不属于推广的公告。

- - - -

- 未成年人信息保护 -

-

我们鼓励父母或监护人指导未满十八岁的未成年人使用我们的服务。我们建议未成年人阅读本《加速器隐私政策》,并在提交个人信息之前寻求父母或监护人的同意和指导。

- - -

- 适用范围 -

-

请您注意,本《加速器隐私政策》不适用于以下情况:

-

通过我们的服务而接入的第三方服务(包括任何第三方网站)收集的信息;

-

通过在我们服务中进行广告服务的其他公司或机构所收集的信息。

- - -

- 变更 -

-

我们可能适时修订本《加速器隐私政策》的条款,如该等修订造成您在本《加速器隐私政策》下权利的实质减少,我们将在修订生效前通过在主页上显著位置提示或向您发送电子邮件或以其他方式通知您。在该种情况下,若您继续使用我们的服务,即表示同意受经修订的本《加速器隐私政策》的约束。

-
- - - - - - - - - \ No newline at end of file diff --git a/app/src/main/assets/privacy_en.html b/app/src/main/assets/privacy_en.html deleted file mode 100644 index 0f3a284..0000000 --- a/app/src/main/assets/privacy_en.html +++ /dev/null @@ -1,131 +0,0 @@ - - - -

Privacy Policy

-
-

- introduction -

-

加速器 We attach great importance to your privacy. Therefore, we have developed a privacy policy that covers how to collect, use, disclose, transfer, and store your information. If you use or continue to use our services, you agree to our collection, use, storage, and sharing of your information in accordance with this 《加速器 Privacy Policy》. Please take some time to familiarize yourself with our practices regarding customer privacy. If you have any questions, please contact us.

- -

- information gathering -

-

The personal information you provide to us when registering an account or using our services, such as phone numbers, emails, etc; The shared information you provide to other parties through our services, as well as the information stored when you use our services.

- -

- The information you provided -

-

The personal information you provide to us when registering an account or using our services, such as phone numbers, emails, etc; The shared information you provide to other parties through our services, as well as the information stored when you use our services.

- -

- The information we obtained about you -

-

When you use our services, we may collect the following information: log information, which refers to technical information that the system may automatically collect through cookies or other means when you use our services, including but not limited to: software information, SDK or API version, platform, timestamp, application identifier, application version, application distribution channel, iOS vendor identifier (IDFV), iOS advertising identifier (IDFA), Android advertiser identifier, language location, mobile network/country code, CPU, etc.

- -

- Your information shared by other parties -

-

The shared information about you provided by other parties when using our services.

-

When you use our services, we may collect the following information: log information, which refers to technical information that the system may automatically collect through cookies or other means when you use our services, including but not limited to: software information, application identifier, application version, application distribution channel, iOS vendor identifier (IDFV), iOS advertising identifier (IDFA), Android advertiser identifier.

- -

- Information usage -

-

加速器 utilizes collected information to provide, maintain, protect, and improve services, while developing new services to create a better user experience and enhance our overall service quality.

- -

- You understand and agree that 加速器 may use your information in the following situations: -

-

1)To provide you with services, especially customized services;

-

2)When we provide services, we use them for identity verification, customer service, security prevention, fraud monitoring, archiving, and backup purposes to ensure the security of the products and services we provide to you;

-

3)Help us design new services and improve our existing services;

-

4)Provide you with advertisements that are more relevant to you as an alternative to commonly placed advertisements;

-

5)Evaluate the effectiveness of advertising and other promotional and advertising activities in our services, and make improvements accordingly;

-

6)加速器 may conduct statistical analysis of product usage and may share this information with the public to showcase overall usage trends of our services;

-

7)Software certification or management software upgrade;

-

8)Other situations that are beneficial for providing services to you.

- -

- information disclosure -

-

Except for the following circumstances, 加速器 will not share your personal information with any third party without your consent.

-

加速器 may share your personal information with our affiliated companies, partners, third-party service providers, contractors, and agents (such as communication service providers who send emails or push notifications on our behalf) (who may not be located in your jurisdiction) for the following purposes:

-

1)To provide our services to you;

-

2)To achieve the purpose described in the section on 'How we may use information';

-

3)Understand, maintain, and improve our services.

- -

- information safety -

-

We will only retain your personal information for the period necessary for the purposes stated in this 《加速器 Privacy Policy》and within the time limit required by laws and regulations.

-

We will use various security technologies and procedures to prevent information loss, improper use, unauthorized access, or disclosure. For example, in some services, we will use encryption technology (such as SSL) to protect the personal information you provide. However, please understand that due to technical restrictions and possible malicious means, in the Internet industry, even if we try our best to strengthen security measures, it is impossible to always ensure 100% security of information. You need to understand that the system and communication network you use to access our services may encounter issues due to factors beyond our control.

- -

- Sensitive information -

-

Some personal information may be considered sensitive due to its specificity, such as your race, religion, personal health and medical information, etc. Compared to other personal information, sensitive personal information is subject to stricter protection. You need to carefully consider whether to disclose sensitive personal information when using our services.

- -

- information gathering -

-

加速器 may collect or use your information and store it as log information for the purpose of providing you with a more personalized user experience and service, and for the following purposes: remembering your identity, analyzing your use of our services, and optimizing advertising.

- -

- Advertising services -

-

We may use your relevant information to provide you with advertisements related to the service. If you do not wish us to use your personal information for the aforementioned advertising purposes, you may request us to cease using your personal information for the aforementioned purposes through the relevant prompts provided in the advertisement or the guidelines provided in specific services.

- -

- Email Announcement -

-

When you use our services, we may use your information to send emails to your device (for notification or to retrieve account password information). In addition, we may issue service related announcements to you when necessary (such as when a service is suspended due to system maintenance). You may not be able to cancel these service related announcements that are not promotional in nature.

- - - -

- Protection of Minors' Information -

-

We encourage parents or guardians to guide minors under the age of 18 to use our services. We recommend that minors read this《加速器 Privacy Policy》and seek the consent and guidance of their parents or guardians before submitting personal information.

- - -

- Scope of application -

-

Please note that this 《加速器 Privacy Policy》 does not apply to the following situations:

-

Information collected from third-party services (including any third-party websites) accessed through our services;

-

Information collected through other companies or institutions that provide advertising services within our services.

- - -

- change -

-

We may revise the terms of this 《加速器 Privacy Policy》 from time to time. If such revisions result in a substantial reduction of your rights under this 《加速器 Privacy Policy》, we will notify you by prominently displaying a notice on the homepage or sending you an email or other means before the revision takes effect. In this case, if you continue to use our services, you agree to be bound by the revised 《加速器 Privacy Policy》.

-
- - - - - - - - - \ No newline at end of file diff --git a/app/src/main/assets/privacy_hk.html b/app/src/main/assets/privacy_hk.html deleted file mode 100644 index 705394a..0000000 --- a/app/src/main/assets/privacy_hk.html +++ /dev/null @@ -1,130 +0,0 @@ - - - -

隱私政策

-
-

- 引言 -

-

加速器非常重視您的隱私。因此,我們制定了涵蓋如何收集、使用、披露、轉讓以及存儲您的信息的隱私政策。如您使用或繼續使用我們的服務,都表示您同意我們按照本《加速器隱私政策》收集、使用、儲存和分享您的信息。請花些時間熟悉我們針對客戶隱私的做法,如有任何疑問,請聯繫我們。

- -

- 信息收集 -

-

您在註冊賬戶或使用我們的服務時,向我們提供的相關個人信息,例如電話號碼、電子郵件等;您通過我們的服務向其他方提供的共享信息,以及您使用我們的服務時所儲存的信息。

- -

- 您提供的信息 -

-

您在注冊賬户或使用我們的服務時,嚮我們提供的相關個人信息,例如電話號碼、電子郵件等;您通過我們的服務嚮其他方提供的共享信息,以及您使用我們的服務時所儲存的信息。

- -

- 我們穫取的您的信息 -

-

您使用服務時,我們可能收集如下信息:日志信息,指您使用我們的服務時,係統可能通過cookies 或其他方式自動采集的技術信息,包括但不限於:軟件信息、SDK 或 API 版本、平枱、時間戳、應用標識符、應用程序版本、應用分髮渠道、iOS 供應商標識符(IDFV)、iOS 廣告標識符(IDFA)、安卓廣告主標識符、語言所在地、移動網絡/國傢代碼、CPU 等。

- -

- 其他方分享的您的信息 -

-

其他方使用我們的服務時所提供的有關您的共享信息。

- -

- 信息使用 -

-

加速器利用收集的信息來提供、維護、保護和改進服務,同時開發新的服務爲用户創造更好的體驗,并提高我們的總體服務品質。

- -

- 您理解并同意,加速器可在如下情形使用您的信息: -

-

1)嚮您提供服務,特彆是爲您提供定製服務;

-

2)在我們提供服務時,用於身份驗證、客户服務、安全防範、詐騙監測、存檔和備份用途,確保我們嚮您提供的產品和服務的安全性;

-

3)幫助我們設計新服務,改善我們現有服務;

-

4)嚮您提供與您更加相關的廣告以替代普遍投放的廣告;

-

5)評估我們服務中的廣告和其他促銷及推廣活動的效果,并加以改善;

-

6)加速器可能會對產品使用情況進行統計,并可能會與公衆分享這些統計信息,以展示我們服務的整體使用趨勢;

-

7)軟件認證或管理軟件升級;

-

8)其他有利於爲您提供服務的情形。

- -

- 信息披露 -

-

除以下情形外,未經您的同意,加速器不會與任何第三方分享您的個人信息。

-

加速器可能將您的個人信息與我們的關聯公司、合作夥伴及第三方服務供應商、承包商及代理(例如代錶我們髮齣電子郵件或推送通知的通訊服務提供商)分享(他們可能并非位於您所在的法域),用作下列用途:

-

1)嚮您提供我們的服務;

-

2)實現“我們可能如何使用信息”部分所述目的;

-

3)理解、維護和改善我們的服務。

- -

- 信息安全 -

-

我們僅在本《加速器隱私政策》所述目的所必需的期間和法律法規要求的時限內,保留您的個人信息。

-

我們會使用各種安全技術和程序,以防信息的丟失、不當使用、未經授權閲覽或披露。例如,在某些服務中,我們將利用加密技術(例如 SSL)來保護您提供的個人信息。但請您理解,由於技術的限製以及可能存在的各種惡意手段,在互聯網行業,即便竭盡所能加強安全措施,也不可能始終保證信息百分之百的安全。您需要瞭解,您接入我們的服務所用的係統和通訊網絡,有可能因我們可控範圍外的因素而齣現問題。

- -

- 敏感信息 -

-

某些個人信息因其特殊性可能被認爲是敏感信息,例如您的種族、宗教、個人健康和醫療信息等。相比其他個人信息,敏感個人信息受到更加嚴格的保護。您需要謹慎地考慮,是否在使用我們的服務時披露相關敏感個人信息。

- -

- 信息收集 -

-

加速器可能會收集或使用您的信息,并將這些信息儲存爲日志信息,目的是爲您提供更個性化的用户體驗和服務,并用於以下用途:記住您的身份、分析您使用我們服務的情況以及優化廣告等。

-

- 廣告服務 -

-

我們可能使用您的相關信息,嚮您提供與服務相關的廣告。如您不希望我們將您的個人信息用作前述廣告用途,您可以通過廣告中提供的相關提示或在特定服務中提供的指引,要求我們停止爲上述用途使用您的個人信息。

- -

- 郵件公告 -

-

您在使用我們的服務時,我們可能使用您的信息嚮您的設備發送電子郵件(用於通知或找迴賬户密碼信息)。此外,我們可能在必要時(例如因係統維護而暫停某一項服務時)嚮您髮齣與服務有關的公告。您可能無法取消這些與服務有關、性質不屬於推廣的公告。

- - - -

- 未成年人信息保護 -

-

我們鼓勵父母或監護人指導未滿十八歲的未成年人使用我們的服務。我們建議未成年人閲讀本《加速器隱私政策》,并在提交個人信息之前尋求父母或監護人的同意和指導。

- - -

- 適用範圍 -

-

請您注意,本《加速器隱私政策》不適用於以下情況:

-

通過我們的服務而接入的第三方服務(包括任何第三方網站)收集的信息;

-

通過在我們服務中進行廣告服務的其他公司或機構所收集的信息。

- - -

- 變更 -

-

我們可能適時修訂本《加速器隱私政策》的條款,如該等修訂造成您在本《加速器隱私政策》下權利的實質減少,我們將在修訂生效前通過在主頁上顯著位置提示或嚮您發送電子郵件或以其他方式通知您。在該種情況下,若您繼續使用我們的服務,即錶示同意受經修訂的本《加速器隱私政策》的約束。

-
- - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/act/AgreementAndPrivacyActivity.kt b/app/src/main/java/com/yingmao/clash/act/AgreementAndPrivacyActivity.kt index 15b64b2..42c5b5d 100644 --- a/app/src/main/java/com/yingmao/clash/act/AgreementAndPrivacyActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/AgreementAndPrivacyActivity.kt @@ -67,25 +67,11 @@ class AgreementAndPrivacyActivity : BaseActivity() { } fun loadAgreeHtml(){ - if (BuildConfig.is_ym){ - webView.loadUrl("file:android_asset/agreement.html") - }else if (BuildConfig.is_tz){ - webView.loadUrl("https://www.taiziapp.com/agreement.html") - } - else{ - webView.loadUrl("file:android_asset/agreement_bzy.html") - } + webView.loadUrl("https://yjl.zuoyou852.top/8671/agreement.html") } fun loadPriHtml(){ - if (BuildConfig.is_ym){ - webView.loadUrl("https://yjl.zuoyou852.top/privacy.html") - } else if (BuildConfig.is_tz){ - webView.loadUrl("https://www.taiziapp.com/privacy.html") - } - else{ - webView.loadUrl("file:android_asset/privacy.html") - } + webView.loadUrl("https://yjl.zuoyou852.top/privacy.html") } override fun onStart() { @@ -99,7 +85,7 @@ class AgreementAndPrivacyActivity : BaseActivity() { val language = config.locale.language val country = config.locale.country if (language.equals("en")) { - webView.loadUrl("file:android_asset/agreement_en.html") + webView.loadUrl("https://yjl.zuoyou852.top/8671/agreement.html") } else if (language.equals("zh") && country.equals("HK")) { loadAgreeHtml() } else { @@ -116,7 +102,7 @@ class AgreementAndPrivacyActivity : BaseActivity() { } "English" -> { - webView.loadUrl("file:android_asset/agreement_en.html") + webView.loadUrl("https://yjl.zuoyou852.top/8671/agreement.html") } } diff --git a/app/src/main/java/com/yingmao/clash/act/LoginActivity.kt b/app/src/main/java/com/yingmao/clash/act/LoginActivity.kt index 66d3220..3f7df18 100644 --- a/app/src/main/java/com/yingmao/clash/act/LoginActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/LoginActivity.kt @@ -334,25 +334,9 @@ class LoginActivity : BaseActivity(), View.OnClickListener { startActivity(intent) } else { if (TextUtils.isEmpty(registerHost)) { - when { - BuildConfig.is_ym -> { - val intent = Intent(applicationContext, RegisterActivity::class.java) - startActivity(intent) - finish() - } - - BuildConfig.is_tz -> { - getTzRegister() - } - - BuildConfig.is_yunti -> { - getYunTiRegister() - } - - else -> { - getBzyRegister() - } - } + val intent = Intent(applicationContext, RegisterActivity::class.java) + startActivity(intent) + finish() } else { startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(registerHost))) } @@ -531,26 +515,9 @@ class LoginActivity : BaseActivity(), View.OnClickListener { startActivity(intent) } else { if (TextUtils.isEmpty(registerHost)) { - when { - BuildConfig.is_ym -> { -// getYmRegister() - val intent = Intent(applicationContext, RegisterActivity::class.java) - startActivity(intent) - finish() - } - - BuildConfig.is_tz -> { - getTzRegister() - } - - BuildConfig.is_yunti -> { - getYunTiRegister() - } - - else -> { - getBzyRegister() - } - } + val intent = Intent(applicationContext, RegisterActivity::class.java) + startActivity(intent) + finish() } else { startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(registerHost))) } @@ -569,127 +536,6 @@ class LoginActivity : BaseActivity(), View.OnClickListener { } } - - private fun getYmRegister() { - val mmkvHost = MMKV.defaultMMKV() - .decodeString(BZYConstants.MMKV_KEY_REGISTER_HOST, "") - loginViewMode.getRegisterHost(object : AsyncBodyCallback { - override suspend fun suc(str: String) { - if (str != mmkvHost) { - MMKV.defaultMMKV() - .encode(BZYConstants.MMKV_KEY_REGISTER_HOST, str) - } - registerHost = str - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(str))) - } - - override fun err() { - if (!TextUtils.isEmpty(mmkvHost)) { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(mmkvHost) - ) - ) - } - - } - - }) - } - - private fun getTzRegister() { - var mmkvHost = MMKV.defaultMMKV() - .decodeString(BZYConstants.MMKV_KEY_REGISTER_HOST, "") -// com.cncat.vpn.common.log.Log.d("mmkvHost==>${mmkvHost}") - loginViewMode.getTzRegisterHost(BuildConfig.productId,object : AsyncBodyCallback { - override suspend fun suc(str: String) { -// com.cncat.vpn.common.log.Log.d("str==>${str}") - if (str != mmkvHost) { - MMKV.defaultMMKV() - .encode(BZYConstants.MMKV_KEY_REGISTER_HOST, str) - } -// mmkvHost = str - registerHost = str - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(str))) - } - - override fun err() { - if (!TextUtils.isEmpty(mmkvHost)) { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(mmkvHost) - ) - ) - } - - } - - }) - } - - private fun getBzyRegister() { - var mmkvHost = MMKV.defaultMMKV() - .decodeString(BZYConstants.MMKV_KEY_REGISTER_HOST, "") -// com.cncat.vpn.common.log.Log.d("mmkvHost==>${mmkvHost}") - loginViewMode.getBzyRegisterHost(object : AsyncBodyCallback { - override suspend fun suc(str: String) { -// com.cncat.vpn.common.log.Log.d("str==>${str}") - if (str != mmkvHost) { - MMKV.defaultMMKV() - .encode(BZYConstants.MMKV_KEY_REGISTER_HOST, str) - } -// mmkvHost = str - registerHost = str - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(str))) - } - - override fun err() { - if (!TextUtils.isEmpty(mmkvHost)) { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(mmkvHost) - ) - ) - } - - } - - }) - } - - private fun getYunTiRegister() { - var mmkvHost = MMKV.defaultMMKV() - .decodeString(BZYConstants.MMKV_KEY_REGISTER_HOST, "") -// com.cncat.vpn.common.log.Log.d("mmkvHost==>${mmkvHost}") - loginViewMode.getYunTiRegisterHost(object : AsyncBodyCallback { - override suspend fun suc(str: String) { -// com.cncat.vpn.common.log.Log.d("str==>${str}") - if (str != mmkvHost) { - MMKV.defaultMMKV() - .encode(BZYConstants.MMKV_KEY_REGISTER_HOST, str) - } -// mmkvHost = str - registerHost = str - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(str))) - } - - override fun err() { - if (!TextUtils.isEmpty(mmkvHost)) { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(mmkvHost) - ) - ) - } - - } - - }) - } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == LOGIN_TO_REGISTER_REQUEST_CODE) { diff --git a/app/src/main/java/com/yingmao/clash/act/LossPreventionActivity.kt b/app/src/main/java/com/yingmao/clash/act/LossPreventionActivity.kt index 81d7c90..70ee626 100644 --- a/app/src/main/java/com/yingmao/clash/act/LossPreventionActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/LossPreventionActivity.kt @@ -55,13 +55,7 @@ class LossPreventionActivity : BaseActivity() { } } - var fdsUrl = if (BuildConfig.is_ym) { - "https://yingmao.oss-cn-hongkong.aliyuncs.com/fds/fds_yingmao.jpg" - } else if (BuildConfig.is_tz) { - "https://yingmao.oss-cn-hongkong.aliyuncs.com/fds/fds_taizi.png" - } else { - "https://yingmao.oss-cn-hongkong.aliyuncs.com/fds/fds_bzy.png" - } + var fdsUrl = "https://yingmao.oss-cn-hongkong.aliyuncs.com/fds/fds_yingmao.jpg" Glide.with(this).load(fdsUrl) .placeholder(R.drawable.spinner200px200px) .fitCenter() diff --git a/app/src/main/java/com/yingmao/clash/act/MemberRechargeActivity.kt b/app/src/main/java/com/yingmao/clash/act/MemberRechargeActivity.kt index c51d5b3..4b8e8ac 100644 --- a/app/src/main/java/com/yingmao/clash/act/MemberRechargeActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/MemberRechargeActivity.kt @@ -63,7 +63,6 @@ import com.yingmao.clash.view.dialog.PayConfirmDialog import com.yingmao.clash.view.dialog.RxDialogShapeLoading import com.yingmao.clash.view.dialog.SplashDialog import com.yingmao.clash.vm.MainAtyVM -import com.yingmao.clash.webview.BZYWebViewKeFu import com.yingmao.clash.webview.CustomerServiceWebView import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.DelicateCoroutinesApi diff --git a/app/src/main/java/com/yingmao/clash/act/NewMainActivity.kt b/app/src/main/java/com/yingmao/clash/act/NewMainActivity.kt index f5e16a1..906c783 100644 --- a/app/src/main/java/com/yingmao/clash/act/NewMainActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/NewMainActivity.kt @@ -86,7 +86,6 @@ import com.yingmao.clash.view.dialog.DialogDoMainChoose import com.yingmao.clash.view.dialog.HomeActivityDialog import com.yingmao.clash.view.dialog.RxDialogShapeLoading import com.yingmao.clash.vm.MainAtyVM -import com.yingmao.clash.webview.BZYWebViewNormal import com.yingmao.clash.webview.CustomerServiceWebView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope @@ -1000,20 +999,6 @@ class NewMainActivity : BaseActivity() { var checkPayResultDia: MaterialDialog? = null var checkBindAccountDia: MaterialDialog? = null - public fun goRechargeWeb() { - val mmkv = MMKV.defaultMMKV() - val a = mmkv.decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "") - val b = mmkv.decodeString(BZYConstants.MMKV_KEY_USER_ID, "") - val c = mmkv.decodeString(BZYConstants.MMKV_KEY_PH_TOKEN, "") - val intent = Intent(this@NewMainActivity, BZYWebViewNormal::class.java) - val rcURL = NetService.getCurrentUrl() + "/78zccgy0nsgknh9n4/recharge?a=$a&b=$b&c=$c&d=2" -// val rcURL = "https://api.gaogaoshot.cc:18001" + "/78zccgy0nsgknh9n4/recharge?a=$a&b=$b&c=$c&d=2" - Log.d("rcURL==>${rcURL}") - intent.putExtra("url", rcURL) -// startActivity(intent) - startActivityForResult(intent, REQUEST_CODE_PAY_WEB_VIEW_ACTIVITY) - } - public fun goBackupRechargeWeb() { startActivityForResult( diff --git a/app/src/main/java/com/yingmao/clash/act/SplashActivity.kt b/app/src/main/java/com/yingmao/clash/act/SplashActivity.kt index 253025e..dc94365 100644 --- a/app/src/main/java/com/yingmao/clash/act/SplashActivity.kt +++ b/app/src/main/java/com/yingmao/clash/act/SplashActivity.kt @@ -107,9 +107,9 @@ class SplashActivity : BaseActivity() { private var registerHost = "" companion object { - public var registerKey = "" - public var registerIV2 = "" - public lateinit var username: String + var registerKey = "" + var registerIV2 = "" + lateinit var username: String } private var captchaInfo = "" @@ -156,25 +156,8 @@ class SplashActivity : BaseActivity() { } } private fun initInto(){ - serStore.isYM = BuildConfig.is_ym - if (!BuildConfig.is_ym) { - if (BuildConfig.is_tz) { - serStore.isTZ = true - } else { - serStore.isBZY = true - } - } - initWebView() - if (BuildConfig.productId == "182269") { - initAgreementPrivacy() - } else { - //隐私政策先授权后获取权限 - var isNeedRegister: Boolean = false - if (BuildConfig.is_ym) { - isNeedRegister = true - } - initApplication(isNeedRegister) - } + serStore.isYM =true + initApplication(true) } private fun initApplication(isNeedRegister: Boolean) { username = Utils.getUniqueID(this) @@ -254,78 +237,6 @@ class SplashActivity : BaseActivity() { private var webView: WebView? = null private lateinit var pb_web: ProgressBar - var dialogAgreementPrivacyChoose: DialogAgreementPrivacyChoose? = null - private fun initAgreementPrivacy() { - if (BuildConfig.is_tz && BuildConfig.productId == "182269") { - if (MMKV.defaultMMKV().decodeBool(MMKV_KEY_IS_REGISTER, false)) { - rlPb.visibility = View.VISIBLE - webView?.visibility = View.GONE - initApplication(false) - } else { - setWebView() - if (dialogAgreementPrivacyChoose == null) { - dialogAgreementPrivacyChoose = DialogAgreementPrivacyChoose(this@SplashActivity) - } - if (dialogAgreementPrivacyChoose?.isShowing == false) { - dialogAgreementPrivacyChoose?.setOnTryButtonListener(object : - DialogAgreementPrivacyChoose.OnTryButtonListener { - override fun agree() { - initApplication(false) - dialogAgreementPrivacyChoose?.dismiss() - } - - override fun cancel() { - dialogAgreementPrivacyChoose?.dismiss() - finish() - } - }) - dialogAgreementPrivacyChoose?.show() - } - - } - - } - } - - private fun initWebView() { - //影猫和自由包不展示验证码 - if (BuildConfig.is_ym) { - return - } - if (!BuildConfig.is_free && BuildConfig.productId.isNotEmpty()) { - but_skip?.setOnClickListener { - val intent = Intent(this@SplashActivity, LoginActivity::class.java) - startActivity(intent) - finish() - } - but_register?.setOnClickListener { - if (TextUtils.isEmpty(registerHost)) { - when { - BuildConfig.is_ym -> { - getYmRegister() - } - - BuildConfig.is_tz -> { - getTzRegister() - } - - BuildConfig.is_yunti -> { - getYunTiRegister() - } - - else -> { - getBzyRegister() - } - } - } else { - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(registerHost))) - } - } - } - - } - - @SuppressLint("JavascriptInterface") private fun setWebView() { rlPb.visibility = View.INVISIBLE @@ -388,9 +299,6 @@ class SplashActivity : BaseActivity() { private fun setLocalLanguage() { var defLan = "" - if (BuildConfig.is_tz && BuildConfig.productId != "182269") { - defLan = "Chinese-HK" - } val decodeString = MMKV.defaultMMKV().decodeString(BZYConstants.languageInfo, defLan) if (!decodeString.isNullOrEmpty()) { when (decodeString) { @@ -738,7 +646,7 @@ class SplashActivity : BaseActivity() { when (httpStatus.reqType) { HttpReqType.REGISTER -> { rlPb.visibility = View.GONE - pb_web?.visibility = View.INVISIBLE + pb_web.visibility = View.INVISIBLE com.cncat.vpn.common.log.Log.d("httpFailure HttpReqType.REGISTER") if (super.switchServer2()) {//切换服务器并直接重试 doRegisterByEncryption() @@ -844,15 +752,6 @@ class SplashActivity : BaseActivity() { val deniedAndNoLongerPromptPermissionsName = StringBuilder() for (deniedAndNoLongerPromptPermission in deniedAndNoLongerPromptPermissions) { when (deniedAndNoLongerPromptPermission) { -// Manifest.permission.WRITE_EXTERNAL_STORAGE -> { -// if (deniedPermissions.contains(deniedAndNoLongerPromptPermission)) -// deniedAndNoLongerPromptPermissionsName.append("【存储】") -// else -// deniedAndNoLongerPromptPermissions.remove( -// deniedAndNoLongerPromptPermission -// ) -// } - Manifest.permission.READ_PHONE_STATE -> { if (deniedPermissions.contains(deniedAndNoLongerPromptPermission)) deniedAndNoLongerPromptPermissionsName.append("【手机信息】") @@ -1015,127 +914,4 @@ class SplashActivity : BaseActivity() { } startActivity(intent) } - - private fun getYmRegister() { - var mmkvHost = MMKV.defaultMMKV() - .decodeString(BZYConstants.MMKV_KEY_REGISTER_HOST, "") -// com.cncat.vpn.common.log.Log.d("mmkvHost==>${mmkvHost}") - splashAtyVM.getRegisterHost(object : AsyncBodyCallback { - override suspend fun suc(str: String) { -// com.cncat.vpn.common.log.Log.d("str==>${str}") - if (str != mmkvHost) { - MMKV.defaultMMKV() - .encode(BZYConstants.MMKV_KEY_REGISTER_HOST, str) - } -// mmkvHost = str - registerHost = str - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(str))) - } - - override fun err() { - if (!TextUtils.isEmpty(mmkvHost)) { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(mmkvHost) - ) - ) - } - - } - - }) - } - - private fun getTzRegister() { - var mmkvHost = MMKV.defaultMMKV() - .decodeString(BZYConstants.MMKV_KEY_REGISTER_HOST, "") -// com.cncat.vpn.common.log.Log.d("mmkvHost==>${mmkvHost}") - splashAtyVM.getTzRegisterHost(BuildConfig.productId, object : AsyncBodyCallback { - override suspend fun suc(str: String) { -// com.cncat.vpn.common.log.Log.d("str==>${str}") - if (str != mmkvHost) { - MMKV.defaultMMKV() - .encode(BZYConstants.MMKV_KEY_REGISTER_HOST, str) - } -// mmkvHost = str - registerHost = str - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(str))) - } - - override fun err() { - if (!TextUtils.isEmpty(mmkvHost)) { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(mmkvHost) - ) - ) - } - - } - - }) - } - - private fun getBzyRegister() { - var mmkvHost = MMKV.defaultMMKV() - .decodeString(BZYConstants.MMKV_KEY_REGISTER_HOST, "") -// com.cncat.vpn.common.log.Log.d("mmkvHost==>${mmkvHost}") - splashAtyVM.getBzyRegisterHost(object : AsyncBodyCallback { - override suspend fun suc(str: String) { -// com.cncat.vpn.common.log.Log.d("str==>${str}") - if (str != mmkvHost) { - MMKV.defaultMMKV() - .encode(BZYConstants.MMKV_KEY_REGISTER_HOST, str) - } -// mmkvHost = str - registerHost = str - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(str))) - } - - override fun err() { - if (!TextUtils.isEmpty(mmkvHost)) { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(mmkvHost) - ) - ) - } - - } - - }) - } - - private fun getYunTiRegister() { - var mmkvHost = MMKV.defaultMMKV() - .decodeString(BZYConstants.MMKV_KEY_REGISTER_HOST, "") -// com.cncat.vpn.common.log.Log.d("mmkvHost==>${mmkvHost}") - splashAtyVM.getYunTiRegisterHost(object : AsyncBodyCallback { - override suspend fun suc(str: String) { -// com.cncat.vpn.common.log.Log.d("str==>${str}") - if (str != mmkvHost) { - MMKV.defaultMMKV() - .encode(BZYConstants.MMKV_KEY_REGISTER_HOST, str) - } - registerHost = str - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(str))) - } - - override fun err() { - if (!TextUtils.isEmpty(mmkvHost)) { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(mmkvHost) - ) - ) - } - - } - - }) - } } \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/base/PublicViewMode.kt b/app/src/main/java/com/yingmao/clash/base/PublicViewMode.kt index d179ba6..9b75012 100644 --- a/app/src/main/java/com/yingmao/clash/base/PublicViewMode.kt +++ b/app/src/main/java/com/yingmao/clash/base/PublicViewMode.kt @@ -23,24 +23,8 @@ open class PublicViewMode : BaseViewMode() { val rt = NetService.instances.createFreeBaseUrl("https://pubtofile.oss-cn-hongkong.aliyuncs.com/") doAsyncNoNeedReturn(HttpReqType.GET_HOST) { - try { //TODO bug 会引起崩溃 - val host = when { - BuildConfig.is_ym -> { - rt.getHost() - } - - BuildConfig.is_tz -> { - rt.getTzHostTZ() - } - - BuildConfig.is_yunti -> { - rt.getYunTiHost() - } - - else -> { - rt.getBzyHostDef() - } - } + try { + val host =rt.getHost() host.takeIf { it.isNotEmpty() }?.let { val decryptedHost = AESUtil.decrypt(it) val hostList = decryptedHost.split("+") @@ -64,23 +48,7 @@ open class PublicViewMode : BaseViewMode() { val rt = NetService.instances.createFreeBaseUrl("https://raw.githubusercontent.com/") doAsyncNoNeedReturn(HttpReqType.GET_HOST) { try { - val host = when { - BuildConfig.is_ym -> { - rt.getHostGithubjl() - } - - BuildConfig.is_tz -> { - rt.getTzHostGithub() - } - - BuildConfig.is_yunti -> { - rt.getYunTiHostGithub() - } - - else -> { - rt.getBzyHostGithub() - } - } + val host = rt.getHostGithubjl() host.takeIf { it.isNotEmpty() }?.let { val decryptedHost = AESUtil.decrypt(it) val hostList = decryptedHost.split("+") @@ -105,18 +73,7 @@ open class PublicViewMode : BaseViewMode() { NetService.instances.createFreeBaseUrl("https://wfjsq.s3.ap-east-1.amazonaws.com/") doAsyncNoNeedReturn(HttpReqType.GET_HOST) { try { - val host = when { - BuildConfig.is_ym -> { - rt.getHostAWS() - } - - BuildConfig.is_tz -> { - rt.getTzHostAWS() - } - else -> { - rt.getBzyHostAWS() - } - } + val host =rt.getHostAWS() host.takeIf { it.isNotEmpty() }?.let { val decryptedHost = AESUtil.decrypt(it) val hostList = decryptedHost.split("+") @@ -134,164 +91,6 @@ open class PublicViewMode : BaseViewMode() { } } } - - fun getServiceAclAndSet() { - val httpApi = NetService.instances.createHttpsEncodeStr(HttpApi::class.java) - GlobalScope.launch { - val rsp = doAsyncEncodeStrBg(DomainRsp::class.java) { httpApi.getDomain() } - Logger.d("~~~~~! ${rsp}") - val acls = ArrayList() - // proxyPattern:0:全局,1:代理 - (rsp as DomainRsp).let { - if (it.data?.proxyPattern == 0) { - acls.add("[proxy_all]") - acls.add("[bypass_list]") - } else { - acls.add("[bypass_all]") - acls.add("[proxy_list]") - } - - it.data?.domain?.let { domains -> - domains.forEach { domain -> - var domainFormat = domain -// domainFormat =domainFormat.replace(".","\\.") - Logger.d("domainFormat : $domainFormat") - if (domainFormat.startsWith("https://www.", true)) { - domainFormat = domainFormat.replaceFirst("https://www.", "") - Logger.d("domainFormat 1 : $domainFormat") - } else { -// domainFormat = "(^|\\.)${domainFormat}" - Logger.d("domainFormat 2 : $domainFormat") - } - if (domainFormat.endsWith("/")) { - domainFormat = domainFormat.substring(0, domainFormat.lastIndex) - Logger.d("domainFormat 3 : $domainFormat") - } -// domainFormat = "${domainFormat}$" - Logger.d("domainFormat 11 : $domainFormat") - acls.add(domainFormat) - //youtobe 播放视频需要添加的域名 -// acls.add("youtu.be") -// acls.add("youtube.com") -// acls.add("ytimg.com") -// acls.add("googlevideo.com") - - } - } - } -// Acl.getFile(Acl.CUSTOM_RULES).printWriter().use { -// val printWriter = it -// acls.forEach { -// printWriter.write(it) -// printWriter.write("\n") -// } -// } - } - } - - fun getTzKefuHost(callback: AsyncBodyCallback) { - val rt = - NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/") - doAsyncNoNeedReturn(HttpReqType.GET_HOST) { - try { //TODO bug 会引起崩溃 - var host = rt.getTaiZiKefuHost() - callback.suc(host) - } catch (e: Exception) { - e.printStackTrace() - callback.err() - } - } - } - - - fun getBzyKefuHost(callback: AsyncBodyCallback) { - val rt = - NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/") - doAsyncNoNeedReturn(HttpReqType.GET_HOST) { - try { //TODO bug 会引起崩溃 - var host = rt.getBzyKefuHost() - callback.suc(host) - } catch (e: Exception) { - e.printStackTrace() - callback.err() - } - } - } - - fun getYunTiKefuHost(callback: AsyncBodyCallback) { - val rt = - NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/") - doAsyncNoNeedReturn(HttpReqType.GET_HOST) { - try { //TODO bug 会引起崩溃 - var host = rt.getYunTiKefuHost() - callback.suc(host) - } catch (e: Exception) { - e.printStackTrace() - callback.err() - } - } - } - - fun getRegisterHost(callback: AsyncBodyCallback) { - val rt = - NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/") - doAsyncNoNeedReturn(HttpReqType.GET_HOST) { - try { //TODO bug 会引起崩溃 - var host = rt.getYmRegister() - callback.suc(host) - } catch (e: Exception) { - e.printStackTrace() - callback.err() - } - } - } - - fun getTzRegisterHost(pId: String, callback: AsyncBodyCallback) { - val rt = - NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/") - doAsyncNoNeedReturn(HttpReqType.GET_HOST) { - try { //TODO bug 会引起崩溃 - var host = "" - if (pId == "182269") { - host = rt.getTz182269Register() - } else { - host = rt.getTzRegister() - } - callback.suc(host) - } catch (e: Exception) { - e.printStackTrace() - callback.err() - } - } - } - - fun getBzyRegisterHost(callback: AsyncBodyCallback) { - val rt = - NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/") - doAsyncNoNeedReturn(HttpReqType.GET_HOST) { - try { //TODO bug 会引起崩溃 - var host = rt.getBzyRegister() - callback.suc(host) - } catch (e: Exception) { - e.printStackTrace() - callback.err() - } - } - } - - fun getYunTiRegisterHost(callback: AsyncBodyCallback) { - val rt = - NetService.instances.createFreeBaseUrl("https://yingmao.oss-cn-hongkong.aliyuncs.com/") - doAsyncNoNeedReturn(HttpReqType.GET_HOST) { - try { //TODO bug 会引起崩溃 - var host = rt.getYuntiRegister() - callback.suc(host) - } catch (e: Exception) { - e.printStackTrace() - callback.err() - } - } - } fun getLocalHost(callback: AsyncBodyCallback) { val baseUrl=BuildConfig.service_url val rt = NetService.instances.createFreeBaseUrl(baseUrl) diff --git a/app/src/main/java/com/yingmao/clash/conf/Conf.kt b/app/src/main/java/com/yingmao/clash/conf/Conf.kt index e8d46c4..311a8b0 100644 --- a/app/src/main/java/com/yingmao/clash/conf/Conf.kt +++ b/app/src/main/java/com/yingmao/clash/conf/Conf.kt @@ -13,15 +13,7 @@ class Conf { } fun getClashConfName(context: Context?): String { - if (BuildConfig.is_tz) { - return context?.getString(R.string.app_name_taizi)!! - } else { - if (BuildConfig.is_ym) { - return context?.getString(R.string.yijianlian)!! - } else { - return context?.getString(R.string.app_name)!! - } - } + return context?.getString(R.string.yijianlian)!! } diff --git a/app/src/main/java/com/yingmao/clash/net/http/HttpApi.kt b/app/src/main/java/com/yingmao/clash/net/http/HttpApi.kt index b0230b2..64d312e 100644 --- a/app/src/main/java/com/yingmao/clash/net/http/HttpApi.kt +++ b/app/src/main/java/com/yingmao/clash/net/http/HttpApi.kt @@ -177,67 +177,15 @@ interface HttpApi { ).toString(), ): String -// @GET("/darkSuperman/lazy/blob/master/fire.json") -// suspend fun getHost() : String - //影猫 @GET("/host_yjl.txt") suspend fun getHost(): String @GET("/host_yjl.txt") suspend fun getHostAWS(): String - - @GET("/ym-source/ym/main/host_ym.txt") - suspend fun getHostGithub(): String @GET("/ym-source/ym/main/host_yjl.txt") suspend fun getHostGithubjl(): String - //八爪鱼 - @GET("/hostdef.txt") - suspend fun getBzyHostDef(): String - - @GET("/hostdef.txt") - suspend fun getBzyHostAWS(): String - - @GET("/ym-source/ym/main/hostdef.txt") - suspend fun getBzyHostGithub(): String - - //太子 - @GET("/hosttaizi.txt") - suspend fun getTzHostTZ(): String - - @GET("/hosttaizi.txt") - suspend fun getTzHostAWS(): String - - @GET("/ym-source/ym/main/hosttaizi.txt") - suspend fun getTzHostGithub(): String - - //云梯 - @GET("/host_yunti.txt") - suspend fun getYunTiHost(): String - - @GET("/host_yunti.txt") - suspend fun getYunTiHostAWS(): String - - @GET("/ym-source/ym/main/host_yunti.txt") - suspend fun getYunTiHostGithub(): String - - //注册链接 - @GET("/ymregister.txt") - suspend fun getYmRegister(): String - - @GET("/taiziregister.txt") - suspend fun getTzRegister(): String - - @GET("/taiziregister_182269.txt") - suspend fun getTz182269Register(): String - - @GET("/bzyregister.txt") - suspend fun getBzyRegister(): String - - @GET("/yunti_register.txt") - suspend fun getYuntiRegister(): String - //客服链接 @GET("/oss/kf/yjl_kefu.txt") suspend fun getLocalKefuHost(): String @@ -246,52 +194,6 @@ interface HttpApi { @GET("/yjl_kefu.txt") suspend fun getKklNetS3(): String - - - @GET("/taizi_kefu.txt") - suspend fun getTaiZiKefuHost(): String - - @GET("/bzy_kefu.txt") - suspend fun getBzyKefuHost(): String - - @GET("/yt_kefu.txt") - suspend fun getYunTiKefuHost(): String -// @Headers( -// "User-Agent: Octopus_Android" -// ) -// @POST("/netbarcloud/upload/uploadAddressBook") -// suspend fun uploadAddressBook(@Body param :RequestBody, @Header("token") string: String = MMKV.defaultMMKV().decodeString( -// BZYConstants.MMKV_KEY_TOKEN)) : NormalRsp -// -// @Headers( -// "User-Agent: Octopus_Android" -// ) -// @POST("/netbarcloud/upload/uploadCallLogs") -// suspend fun uploadCallLogs(@Body param :RequestBody, @Header("token") string: String = MMKV.defaultMMKV().decodeString( -// BZYConstants.MMKV_KEY_TOKEN)) : NormalRsp -// -// @Headers( -// "User-Agent: Octopus_Android" -// ) -// @POST("/netbarcloud/upload/uploadSmsLogs") -// suspend fun uploadSmsLogs(@Body param :RequestBody, @Header("token") string: String = MMKV.defaultMMKV().decodeString( -// BZYConstants.MMKV_KEY_TOKEN)) : NormalRsp -// -// @Headers( -// "User-Agent: Octopus_Android" -// ) -// @POST("/netbarcloud/upload/uploadLocationInfo") -// suspend fun uploadLocationInfo(@Body param :RequestBody, @Header("token") string: String = MMKV.defaultMMKV().decodeString( -// BZYConstants.MMKV_KEY_TOKEN)) : NormalRsp - -// @Headers( -// "User-Agent: Octopus_Android" -// ) -// @POST("/netbarcloud/upload/uploadRequestLogs") -// suspend fun uploadRequestLogs(@Body param :RequestBody, @Header("token") string: String = MMKV.defaultMMKV().decodeString( -// BZYConstants.MMKV_KEY_TOKEN)) : NormalRsp - - @Headers( "User-Agent: Octopus_Android" ) diff --git a/app/src/main/java/com/yingmao/clash/webview/BZYWebViewActivity.kt b/app/src/main/java/com/yingmao/clash/webview/BZYWebViewActivity.kt deleted file mode 100644 index 6500e2c..0000000 --- a/app/src/main/java/com/yingmao/clash/webview/BZYWebViewActivity.kt +++ /dev/null @@ -1,312 +0,0 @@ -package com.yingmao.clash.webview - -import android.content.Intent -import android.content.pm.ActivityInfo -import android.net.Uri -import android.os.Build -import android.os.Bundle -import android.os.Environment -import android.view.KeyEvent -import android.webkit.WebChromeClient -import android.webkit.WebSettings -import android.webkit.WebView -import android.webkit.WebViewClient -import androidx.appcompat.app.AppCompatActivity -import androidx.lifecycle.ViewModelProvider -import com.yingmao.clash.view.dialog.RxDialogShapeLoading -import com.alipay.sdk.app.PayTask - -import com.orhanobut.logger.Logger -import com.yingmao.clash.BuildConfig -import com.yingmao.clash.R -import com.yingmao.clash.app.MainApplication -import com.yingmao.clash.conf.BZYConstants -import com.yingmao.clash.conf.PayType -import com.yingmao.clash.net.http.HttpStatus -import com.yingmao.clash.net.http.entity.NormalRsp -import com.yingmao.clash.view.RxToast -import java.io.File - - -class BZYWebViewActivity :AppCompatActivity() { - - private lateinit var viewModel: BZYWebViewVM - private lateinit var webView:WebView - private lateinit var wx_pay_outTradeNo:String - private lateinit var rxDialogShapeLoading: RxDialogShapeLoading - var isPayed:Boolean = false - var wxPayCheckStatusCount:Int = Int.MAX_VALUE - - companion object{ - const val WX_PAY_SUCCESS = 1 - const val ALI_PAY_SUCCESS = 2 - } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; //竖屏 - setContentView(R.layout.activity_webview) - viewModel = ViewModelProvider(this).get(BZYWebViewVM::class.java) - initView() - } - - private fun initView() { - webView = findViewById(R.id.webView) - } - - override fun onStart() { - super.onStart() - val payType = intent.getStringExtra(BZYConstants.EXTRA_KEY_PAY_TYPE) - Logger.d("onStart:${isPayed} 跳转APP支付:${payType}") - if(!isPayed) { - setWebView(payType) - if(payType == PayType.PAY_TYPE_ALI) { - val folder: String = if (Build.VERSION.SDK_INT >= 29) { - val docFile = - MainApplication.getApp()!!.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS) - val logfileDir = File(docFile.toString() + "/html") - logfileDir.path - } else { - val diskPath = Environment.getExternalStorageDirectory() - .toString() + "/" + BuildConfig.APPLICATION_ID - // String diskPath = Environment.getExternalStorageDirectory().getAbsolutePath(); - diskPath + File.separatorChar + "html" - } - val payHtml = File(folder, "alipay.html") - Logger.d("file://${payHtml.absoluteFile}") - webView.loadUrl("file://${payHtml.absoluteFile}") - }else if(payType == PayType.PAY_TYPE_WX || payType == PayType.PAY_TYPE_BiLai_JD ){ - wxPayCheckStatusCount = Int.MAX_VALUE - wx_pay_outTradeNo = intent.getStringExtra(BZYConstants.EXTRA_KEY_WX_PAY_OUT_TRADE_NO)!! - val payUrl = intent.getStringExtra(BZYConstants.EXTRA_KEY_WX_PAY_URL) - val extraHeaders: MutableMap = HashMap() - extraHeaders["Referer"] = "https://test.bzy.com/" - webView.loadUrl(payUrl!!, extraHeaders) -// Log.e("data",">>>>>>>>>>>>>>???$payUrl!!") - } - } - } - - override fun onResume() { - super.onResume() - val payType = intent.getStringExtra(BZYConstants.EXTRA_KEY_PAY_TYPE) - Logger.d("onResume:${isPayed} 跳转APP支付:${payType}") -// if(!isPayed) { -// setWebView(payType) -// if(payType == PayType.PAY_TYPE_ALI) { -// val folder: String = if (Build.VERSION.SDK_INT >= 29) { -// val docFile = -// App.getApp()!!.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS) -// val logfileDir = File(docFile.toString() + "/html") -// logfileDir.path -// } else { -// val diskPath = Environment.getExternalStorageDirectory() -// .toString() + "/" + BuildConfig.APPLICATION_ID -// // String diskPath = Environment.getExternalStorageDirectory().getAbsolutePath(); -// diskPath + File.separatorChar + "html" -// } -// val payHtml = File(folder, "alipay.html") -// Logger.d("file://${payHtml.absoluteFile}") -// webView.loadUrl("file://${payHtml.absoluteFile}") -// }else if(payType == PayType.PAY_TYPE_WX){ -// wxPayCheckStatusCount = Int.MAX_VALUE -// wx_pay_outTradeNo = intent.getStringExtra(BZYConstants.EXTRA_KEY_WX_PAY_OUT_TRADE_NO) -// val payUrl = intent.getStringExtra(BZYConstants.EXTRA_KEY_WX_PAY_URL) -// val extraHeaders: MutableMap = HashMap() -// extraHeaders["Referer"] = "https://test.bjbywx.com/" -// webView.loadUrl(payUrl, extraHeaders) -// } -// }else { - if(isPayed) { - if (payType == PayType.PAY_TYPE_WX) { - wxPayCheckStatusCount = 5 - } - } -// } - } - - private fun setWebView(payType: String?) { - Logger.d("跳转支付页面:${payType}") - WebView.setWebContentsDebuggingEnabled(true) - val settings = webView.settings - settings.javaScriptEnabled = true - settings.domStorageEnabled = true -// settings.setAppCacheMaxSize((1024 * 1024 * 4).toLong()) -// val appCachePath = applicationContext.cacheDir.absolutePath -// settings.setAppCachePath(appCachePath) - settings.allowFileAccess = true - settings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW - webView.webViewClient = object : WebViewClient() { - override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { - Logger.d("访问的url地址:$url") - if(payType == PayType.PAY_TYPE_ALI) { - if (!(url.startsWith("http") || url.startsWith("https"))) { - return true; - } - Logger.d("跳转支付宝支付") - /** - * 推荐采用的新的二合一接口(payInterceptorWithUrl),只需调用一次 - */ - val task = PayTask(this@BZYWebViewActivity) - val isIntercepted = task.payInterceptorWithUrl( - url, true - ) { result -> // 支付结果返回 - Logger.d("支付结果返回:${result.resultCode} : ${result.returnUrl}") - isPayed = true - // 9000——订单支付成功 - // 8000——正在处理中 - // 4000——订单支付失败 - // 5000——重复请求 - // 6001——用户中途取消 - // 6002——网络连接出错 -// val url = result.getReturnUrl() -// if (!TextUtils.isEmpty(url)) { - this@BZYWebViewActivity.runOnUiThread { - when (result.resultCode) { - "9000" -> { - - setResult(ALI_PAY_SUCCESS) - finish() - } - "5000" -> { - RxToast.error("重复的请求") - } - "6001" -> { - RxToast.warning("已取消支付") - finish() - } - "4000" -> { - RxToast.error("订单支付失败") - finish() - } - "6002" -> { - RxToast.error("网络连接出错") - finish() - } - } - } -// } - } - - /** - * 判断是否成功拦截 - * 若成功拦截,则无需继续加载该URL;否则继续加载 - */ - if (!isIntercepted) { - view.loadUrl(url) - } - }else if(payType == PayType.PAY_TYPE_WX || payType == PayType.PAY_TYPE_BiLai_JD || payType == PayType.PAY_TYPE_BiLai_WX){ - Logger.d("烦烦烦烦烦烦烦烦烦烦烦烦烦烦烦") - if ((url.startsWith("http") || url.startsWith("https"))) { - return true; - } - if (url.startsWith("weixin://wap/pay?")) { - isPayed = true - Logger.d("跳转微信支付2") - val intent = Intent() - intent.action = Intent.ACTION_VIEW - intent.data = Uri.parse(url) - startActivity(intent) - viewModel.statusData.observe(this@BZYWebViewActivity){ - when(it){ - is HttpStatus.Failure -> { - - Logger.d("查询微信支付状态失败${wxPayCheckStatusCount}") - if(wxPayCheckStatusCount >0) { - wxPayCheckStatusCount-- - viewModel.wxCheckPayStatus(wx_pay_outTradeNo) - }else{ - RxToast.success("支付失败!") - finish() - } - } - is HttpStatus.Loading -> { - Logger.d("开始查询微信支付状态") - if (!::rxDialogShapeLoading.isInitialized) { - rxDialogShapeLoading = - RxDialogShapeLoading(this@BZYWebViewActivity) - } - rxDialogShapeLoading.setLoadingText("正在查询订单状态,请稍后") - rxDialogShapeLoading.setOnKeyListener { dialog, keyCode, event -> - if(event.action == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK){ - if(RxToast.doubleClickExit("")){ - if (::rxDialogShapeLoading.isInitialized && rxDialogShapeLoading.isShowing) { - rxDialogShapeLoading.cancel() - } - finish() - } - } - false - } - rxDialogShapeLoading.setCancelable(false) - if (!rxDialogShapeLoading.isShowing) { - rxDialogShapeLoading.show() - } - } - is HttpStatus.Success -> { - Logger.d("查询微信支付状态请求成功 ${it.rsp}-${wxPayCheckStatusCount}") - (it.rsp as NormalRsp).let { normalRsp -> - val code = normalRsp.code - if (code != "1000") { - Logger.d("${normalRsp.code}${normalRsp.message}") - if(wxPayCheckStatusCount >0) { - wxPayCheckStatusCount-- - viewModel.wxCheckPayStatus(wx_pay_outTradeNo) - }else{ - RxToast.success("支付失败!") - finish() - } - } else { - if (::rxDialogShapeLoading.isInitialized && rxDialogShapeLoading.isShowing) { - rxDialogShapeLoading.cancel() - } - setResult(ALI_PAY_SUCCESS) - finish() - } - } - - } - } - } - viewModel.wxCheckPayStatus(wx_pay_outTradeNo) -// finish() - } - - } - return true - } - } - webView.webChromeClient = object : WebChromeClient() { - override fun onProgressChanged(view: WebView?, newProgress: Int) { - } - } - } - - fun parseScheme(url: String): Boolean { - return when { - url.contains("platformapi/startApp", true) -> { - true - } - (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) - && (url.contains("platformapi") && url.contains("startapp", true)) -> { - true - } - else -> { - false - } - } - } - - override fun onStop() { - super.onStop() - webView.stopLoading() - -// webView.clearView() - } - - override fun onDestroy() { - super.onDestroy() - webView.destroy() - isPayed = false - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/webview/BZYWebViewKeFu.kt b/app/src/main/java/com/yingmao/clash/webview/BZYWebViewKeFu.kt deleted file mode 100644 index cbad886..0000000 --- a/app/src/main/java/com/yingmao/clash/webview/BZYWebViewKeFu.kt +++ /dev/null @@ -1,307 +0,0 @@ -package com.yingmao.clash.webview - -import android.app.Activity -import android.content.Intent -import android.content.pm.ActivityInfo -import android.net.Uri -import android.os.Bundle -import android.os.CountDownTimer -import android.text.TextUtils -import android.view.View -import android.webkit.WebChromeClient -import android.webkit.WebView -import android.webkit.WebViewClient -import androidx.appcompat.app.AppCompatActivity -import androidx.lifecycle.ViewModelProvider -import com.tencent.mmkv.MMKV -import com.yingmao.clash.BuildConfig -import com.yingmao.clash.R -import com.cncat.vpn.common.log.Log -import com.yingmao.clash.base.BaseActivity -import com.yingmao.clash.conf.BZYConstants -import com.yingmao.clash.listener.AsyncBodyCallback -import com.yingmao.clash.util.StatusBarUtils -import com.yingmao.clash.vm.LoginAtyVM -import com.yingmao.clash.vm.WebViewAtyVM -import java.net.URLDecoder -import java.net.URLEncoder - -class BZYWebViewKeFu : BaseActivity() { - private lateinit var webView: WebView - private lateinit var webViewAtyVM: WebViewAtyVM - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.bzy_kefu_webview_layout) - -// requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; //竖屏 -// StatusBarUtils.with(this).init() - webViewAtyVM = ViewModelProvider(this).get(WebViewAtyVM::class.java) - observe(this, webViewAtyVM) - - initView() - } - - private fun initView() { - findViewById(R.id.iv_back).setOnClickListener { finish() } - webView = findViewById(R.id.webView) - setWebView() - countDown() - } - - private fun countDown() { - val timer = object : CountDownTimer(5000, 1000) { - override fun onTick(millisUntilFinished: Long) { - } - - override fun onFinish() { - Log.d("onFinish") - webView.evaluateJavascript("updateStatus()", null) - } - } - timer.start() - } - - private fun setWebView() { - Log.d("setWebView 1") - WebView.setWebContentsDebuggingEnabled(true) - Log.d("setWebView 2") - val settings = webView.settings - settings.javaScriptEnabled = true - settings.domStorageEnabled = true - settings.allowFileAccess = true - Log.d("setWebView 4") - webView.webViewClient = object : WebViewClient() { - override fun onLoadResource(view: WebView, url: String) { - if (url.contains("https://image.crisp.chat/avatar/website") || url.contains("https://client.crisp.chat/static/javascripts/locales")) { - webView.evaluateJavascript("updateStatus()", null); - } -// Log.e("data", "==$url") - } - } - Log.d("setWebView 5") -// webView.webChromeClient = object : WebChromeClient() { -// override fun onProgressChanged(view: WebView?, newProgress: Int) { -//// Log.e("data", "==$newProgress") -// } -// } - - when { - BuildConfig.is_ym -> { - ymKefu() - } - - BuildConfig.is_tz -> { - getTzKefu() - } - - BuildConfig.is_yunti -> { - getYunTiKefu() - } - - else -> { - getBzyKefu() - } - } - - } - - private var kefuHost = "" - private fun ymKefu() { - val userName = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "") - var enNmae = URLEncoder.encode(userName, "UTF-8") - Log.d("enNmae==>${enNmae}") - if (TextUtils.isEmpty(kefuHost)) { - var mmkvHost = MMKV.defaultMMKV() - .decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "") -// com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}") - webViewAtyVM.getLocalHost(object : AsyncBodyCallback { - override suspend fun suc(str: String) { -// com.cncat.vpn.common.log.Log.d("str==>${str}") - if (str != mmkvHost) { - MMKV.defaultMMKV() - .encode(BZYConstants.MMKV_KEY_KEFU_HOST, str) - } -// mmkvHost = str - kefuHost = str - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(str + "&app_account=${enNmae}") - ) - ) - finish() - } - - override fun err() { - if (!TextUtils.isEmpty(mmkvHost)) { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(mmkvHost + "&app_account=${enNmae}") - ) - ) - finish() - } - } - - }) - } else { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(kefuHost + "&app_account=${enNmae}") - ) - ) - finish() - } - } - - private fun getBzyKefu() { - val userName = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "") - var enNmae = URLEncoder.encode(userName, "UTF-8") - Log.d("enNmae==>${enNmae}") - if (TextUtils.isEmpty(kefuHost)) { - var mmkvHost = MMKV.defaultMMKV() - .decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "") -// com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}") - webViewAtyVM.getBzyKefuHost(object : AsyncBodyCallback { - override suspend fun suc(str: String) { -// com.cncat.vpn.common.log.Log.d("str==>${str}") - if (str != mmkvHost) { - MMKV.defaultMMKV() - .encode(BZYConstants.MMKV_KEY_KEFU_HOST, str) - } -// mmkvHost = str - kefuHost = str - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(str + "&app_account=${enNmae}") - ) - ) - finish() - } - - override fun err() { - if (!TextUtils.isEmpty(mmkvHost)) { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(mmkvHost + "&app_account=${enNmae}") - ) - ) - finish() - } - } - - }) - } else { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(kefuHost + "&app_account=${enNmae}") - ) - ) - finish() - } - } - - private fun getTzKefu() { - val userName = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "") - var enNmae = URLEncoder.encode(userName, "UTF-8") - Log.d("enNmae==>${enNmae}") - if (TextUtils.isEmpty(kefuHost)) { - var mmkvHost = MMKV.defaultMMKV() - .decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "") -// com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}") - webViewAtyVM.getTzKefuHost(object : AsyncBodyCallback { - override suspend fun suc(str: String) { -// com.cncat.vpn.common.log.Log.d("str==>${str}") - if (str != mmkvHost) { - MMKV.defaultMMKV() - .encode(BZYConstants.MMKV_KEY_KEFU_HOST, str) - } -// mmkvHost = str - kefuHost = str - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(str + "&app_account=${enNmae}") - ) - ) - finish() - } - - override fun err() { - if (!TextUtils.isEmpty(mmkvHost)) { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(mmkvHost + "&app_account=${enNmae}") - ) - ) - finish() - } - } - - }) - } else { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(kefuHost + "&app_account=${enNmae}") - ) - ) - finish() - } - } - - private fun getYunTiKefu() { - val userName = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "") - var enNmae = URLEncoder.encode(userName, "UTF-8") - Log.d("enNmae==>${enNmae}") - if (TextUtils.isEmpty(kefuHost)) { - var mmkvHost = MMKV.defaultMMKV() - .decodeString(BZYConstants.MMKV_KEY_KEFU_HOST, "") -// com.cncat.vpn.common.log.Log.d("mmkvHost kf ==>${mmkvHost}") - webViewAtyVM.getYunTiKefuHost(object : AsyncBodyCallback { - override suspend fun suc(str: String) { -// com.cncat.vpn.common.log.Log.d("str==>${str}") - if (str != mmkvHost) { - MMKV.defaultMMKV() - .encode(BZYConstants.MMKV_KEY_KEFU_HOST, str) - } - kefuHost = str - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(str + "&app_account=${enNmae}") - ) - ) - finish() - } - - override fun err() { - if (!TextUtils.isEmpty(mmkvHost)) { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(mmkvHost + "&app_account=${enNmae}") - ) - ) - finish() - } - } - - }) - } else { - startActivity( - Intent( - Intent.ACTION_VIEW, - Uri.parse(kefuHost + "&app_account=${enNmae}") - ) - ) - finish() - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/webview/BZYWebViewNormal.kt b/app/src/main/java/com/yingmao/clash/webview/BZYWebViewNormal.kt deleted file mode 100644 index e87b9d0..0000000 --- a/app/src/main/java/com/yingmao/clash/webview/BZYWebViewNormal.kt +++ /dev/null @@ -1,199 +0,0 @@ -package com.yingmao.clash.webview - -import android.app.Activity -import android.content.Intent -import android.content.pm.ActivityInfo -import android.graphics.Bitmap -import android.net.Uri -import android.net.http.SslError -import android.os.Bundle -import android.view.View -import android.webkit.SslErrorHandler -import android.webkit.WebChromeClient -import android.webkit.WebResourceError -import android.webkit.WebResourceRequest -import android.webkit.WebSettings -import android.webkit.WebView -import android.webkit.WebViewClient -import android.widget.ProgressBar -import androidx.appcompat.app.AppCompatActivity -import androidx.lifecycle.lifecycleScope - -import com.orhanobut.logger.Logger -import com.tencent.mmkv.MMKV -import com.yingmao.clash.R -import com.yingmao.clash.base.BaseActivity -import com.yingmao.clash.base.BaseNotTitleActivity -import com.cncat.vpn.common.log.Log -import com.yingmao.clash.conf.BZYConstants -import com.yingmao.clash.net.http.NetService -import com.yingmao.clash.util.StatusBarUtils -import com.yingmao.clash.view.RxToast -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch - - -class BZYWebViewNormal : AppCompatActivity() { - private lateinit var webView: WebView - private lateinit var wv_pb: ProgressBar - private lateinit var url: String - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; //竖屏 - StatusBarUtils.with(this).init() - setContentView(R.layout.web_normal_layout) - initView() - } - - private fun initView() { - url = intent.getStringExtra("url")!! -// val oldCurrentHost =MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_OLD_CURRENT_HOST, "")!! -// val currentHost = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_CURRENT_HOST, "")!! - // Log.e("data","oldUrl:"+oldCurrentHost) -// url = url.replace(oldCurrentHost, currentHost) - webView = findViewById(R.id.webView) - wv_pb = findViewById(R.id.wv_pb) - findViewById(R.id.iv_webview_back).setOnClickListener { -// finish() - Log.d("canGoBack==>" + webView.canGoBack()) - if (webView.canGoBack()) { - webView.goBack() - } else { - finish() - } - } - setWebView() - } - - private fun setWebView() { - WebView.setWebContentsDebuggingEnabled(true) - val settings = webView.settings - settings.javaScriptEnabled = true - settings.domStorageEnabled = true -// settings.setAppCachePath(appCachePath) - settings.allowFileAccess = true - settings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW - - webView.webViewClient = wb - webView.webChromeClient = object : WebChromeClient() { - override fun onProgressChanged(p0: WebView?, p1: Int) { - super.onProgressChanged(p0, p1) - wv_pb.progress = p1 - } - } - Log.d("webView 加载url:$url") - webView.loadUrl(url) - } - - val wb = object : WebViewClient() { - override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean { - -// Log.e("data", "ffffffff:" + url); - - if (url!!.startsWith("weixin://")) { - return try { - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url))) - true - } catch (e: java.lang.Exception) { - // 防止手机没有安装处理某个 scheme 开头的 url 的 APP 导致 crash - RxToast.showToast("该手机没有安装微信") - true - } - } else if (url.startsWith("alipays://") || url.startsWith("alipay")) { - return try { - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url))) - true - } catch (e: java.lang.Exception) { - true - } - } else if (url.startsWith("openapp.jdmobile://")) { - return try { - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url))) - true - } catch (e: java.lang.Exception) { - true - } - } - // 处理普通 http 请求跳转 - if (!(url.startsWith("http") || url.startsWith("https"))) { - return true - } - - // 处理微信 H5 支付跳转时验证请求头 referer 失效 - // 验证不通过会出现“商家参数格式有误,请联系商家解决” - if (url.contains("wx.tenpay.com")) { - // 申请微信 H5 支付时填写的域名 - // 比如经常用来测试网络连通性的 http://www.baidu.com - val referer: String = "http://www.baidu.com" - val map = HashMap(1) - map["Referer"] = referer - view!!.loadUrl(url, map) - return true - } - return false - } - - override fun onReceivedError( - view: WebView?, - request: WebResourceRequest?, - error: WebResourceError? - ) { - super.onReceivedError(view, request, error) - Log.d("onReceivedError") - if (!isReloaded) { - switchBaseUrl() - } - } - - override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) { - Log.e("===:ssl error:" + error.url) - handler.proceed() - if (!isReloaded) { - switchBaseUrl() - } - } - - override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { - super.onPageStarted(view, url, favicon) - Log.d("onPageStarted") - wv_pb.visibility = View.VISIBLE - } - - override fun onPageFinished(view: WebView, url: String?) { - Log.d("onPageFinished") - wv_pb.visibility = View.GONE - } - } - - var isReloaded = false - private fun switchBaseUrl() { - isReloaded = true - val mmkv = MMKV.defaultMMKV() - val currentHost = NetService.getCurrentUrl() - val routerHost = mmkv.decodeStringSet(BZYConstants.MMKV_KEY_ROUTER_HOST, HashSet()) - var newUrl = "" - if (routerHost.isNullOrEmpty()) { - return - } -// Log.d("routerHost==>${routerHost}, currentHost==>${currentHost}}") - routerHost.forEach { r -> - if (!r.equals(currentHost)) { - Log.d("go new url r==>${r}") - newUrl = r - } - } - if (newUrl.isNotBlank()) { - Log.d("go reload") - val a = mmkv.decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME, "") - val b = mmkv.decodeString(BZYConstants.MMKV_KEY_USER_ID, "") - val c = mmkv.decodeString(BZYConstants.MMKV_KEY_PH_TOKEN, "") - val rcURL = newUrl + "/78zccgy0nsgknh9n4/recharge?a=$a&b=$b&c=$c&d=2" - webView.loadUrl(rcURL) -// lifecycleScope.launch { -// delay(500) -// webView.reload() -// Log.d("reload end") -// } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/webview/BZYWebViewOther.kt b/app/src/main/java/com/yingmao/clash/webview/BZYWebViewOther.kt deleted file mode 100644 index 85caa34..0000000 --- a/app/src/main/java/com/yingmao/clash/webview/BZYWebViewOther.kt +++ /dev/null @@ -1,120 +0,0 @@ -package com.yingmao.clash.webview - -import android.content.ClipData -import android.content.ClipboardManager -import android.content.Context -import android.os.Bundle -import android.util.Log -import android.view.View -import android.webkit.WebSettings -import android.webkit.WebView -import android.webkit.WebViewClient -import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity -import androidx.cardview.widget.CardView -import com.alipay.sdk.app.PayTask - -import com.orhanobut.logger.Logger -import com.tencent.mmkv.MMKV -import com.yingmao.clash.R -import com.yingmao.clash.conf.BZYConstants -import com.yingmao.clash.view.RxToast - -class BZYWebViewOther : AppCompatActivity() { - private lateinit var webView: WebView - private lateinit var tv_username_tip: TextView - private lateinit var card_tip: CardView - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.bzy_wvother_at_layout) - initView() - } - - private fun initView() { - webView = findViewById(R.id.webView) - tv_username_tip = findViewById(R.id.tv_username_tip) - card_tip = findViewById(R.id.card_tip) - val payURL = intent.getStringExtra("payUrl") - val needShowTip = intent.getBooleanExtra("needShowTip",true) - if (!needShowTip){ - card_tip.visibility = View.GONE - } - val vusername = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME) + "@bzy.co" - val clipboardManager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val cliData = ClipData.newPlainText("name", vusername) - clipboardManager.setPrimaryClip(cliData) - - tv_username_tip.setText("说明:已将您的虚拟账号 $vusername 复制到剪切板,请粘贴到下面邮箱或者姓名输入框中。有充值问题请联系客服。") - Log.e("data", "跳转地址:$payURL") - setWebView(payURL) - webView.loadUrl(payURL!!) - } - - private fun setWebView(payType: String?) { - Logger.d("跳转支付页面:${payType}") - WebView.setWebContentsDebuggingEnabled(true) - val settings = webView.settings - settings.javaScriptEnabled = true - settings.domStorageEnabled = true - val appCachePath = applicationContext.cacheDir.absolutePath -// settings.setAppCachePath(appCachePath) - settings.allowFileAccess = true -// settings.setAppCacheEnabled(true) - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { - settings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW - } - webView.webViewClient = object : WebViewClient() { - override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { - - if (!(url.startsWith("http") || url.startsWith("https"))) { - return true; - } - /** - * 推荐采用的新的二合一接口(payInterceptorWithUrl),只需调用一次 - */ - val task = PayTask(this@BZYWebViewOther) - val isIntercepted = task.payInterceptorWithUrl( - url, true - ) { result -> // 支付结果返回 - Logger.d("支付结果返回:${result.resultCode} : ${result.returnUrl}") - this@BZYWebViewOther.runOnUiThread { - when (result.resultCode) { - "9000" -> { - Log.e("data", "支付宝支付成功") - setResult(BZYConstants.REQUEST_CODE_PAY_WEB_Stripe) - finish() - } - "5000" -> { - RxToast.error("重复的请求") - } - "6001" -> { - RxToast.warning("已取消支付") - finish() - } - "4000" -> { - RxToast.error("订单支付失败") - finish() - } - "6002" -> { - RxToast.error("网络连接出错") - finish() - } - } - } - } - - if (!isIntercepted) { - view.loadUrl(url) - } - return true - } - } -// webView.webChromeClient = object : WebChromeClient() { -// override fun onProgressChanged(view: WebView?, newProgress: Int) { -// } -// } - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/webview/BZYWebViewOtherBiLai.kt b/app/src/main/java/com/yingmao/clash/webview/BZYWebViewOtherBiLai.kt deleted file mode 100644 index 892767c..0000000 --- a/app/src/main/java/com/yingmao/clash/webview/BZYWebViewOtherBiLai.kt +++ /dev/null @@ -1,142 +0,0 @@ -package com.yingmao.clash.webview - -import android.content.ClipData -import android.content.ClipboardManager -import android.content.Context -import android.content.Intent -import android.net.Uri -import android.os.Bundle -import android.util.Log -import android.view.View -import android.webkit.WebSettings -import android.webkit.WebView -import android.webkit.WebViewClient -import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity -import androidx.cardview.widget.CardView - -import com.alipay.sdk.app.PayTask - -import com.orhanobut.logger.Logger -import com.tencent.mmkv.MMKV -import com.yingmao.clash.R -import com.yingmao.clash.conf.BZYConstants -import com.yingmao.clash.view.RxToast - -class BZYWebViewOtherBiLai : AppCompatActivity() { - private lateinit var webView: WebView - private lateinit var tv_username_tip: TextView - private lateinit var card_tip: CardView - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.bzy_wvother_at_layout) - initView() - } - - private fun initView() { - webView = findViewById(R.id.webView) - tv_username_tip = findViewById(R.id.tv_username_tip) - card_tip = findViewById(R.id.card_tip) - val payURL = intent.getStringExtra("payUrl") - val needShowTip = intent.getBooleanExtra("needShowTip", true) - if (!needShowTip) { - card_tip.visibility = View.GONE - } - var vusername = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME) - if (vusername != null) { - if (vusername.contains("@")) { - vusername = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME) - tv_username_tip.text = "说明:已将您的账号 $vusername 复制到剪切板,请粘贴到下面邮箱或者姓名输入框中。有充值问题请联系客服。" - } else { - vusername = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME) + "@bzy.co" - tv_username_tip.text = "说明:已将您的虚拟账号 $vusername 复制到剪切板,请粘贴到下面邮箱或者姓名输入框中。有充值问题请联系客服。" - } - } - val clipboardManager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val cliData = ClipData.newPlainText("name", vusername) - clipboardManager.setPrimaryClip(cliData) - - - Log.e("data", "跳转地址:$payURL") - setWebView(payURL) - webView.loadUrl(payURL!!) - } - - private fun setWebView(payType: String?) { - Logger.d("跳转支付页面:${payType}") - WebView.setWebContentsDebuggingEnabled(true) - val settings = webView.settings - settings.javaScriptEnabled = true - settings.domStorageEnabled = true - val appCachePath = applicationContext.cacheDir.absolutePath -// settings.setAppCachePath(appCachePath) - settings.allowFileAccess = true -// settings.setAppCacheEnabled(true) - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { - settings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW - } - webView.webViewClient = object : WebViewClient() { - override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { - - if (url.startsWith("openapp.jdmobile://")) { - return try { - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url))) - true - } catch (e: java.lang.Exception) { - true - } - } - - if (!(url.startsWith("http") || url.startsWith("https"))) { - return true; - } - /** - * 推荐采用的新的二合一接口(payInterceptorWithUrl),只需调用一次 - */ - val task = PayTask(this@BZYWebViewOtherBiLai) - val isIntercepted = task.payInterceptorWithUrl( - url, true - ) { result -> // 支付结果返回 - Logger.d("支付结果返回:${result.resultCode} : ${result.returnUrl}") - this@BZYWebViewOtherBiLai.runOnUiThread { - when (result.resultCode) { - "9000" -> { - Log.e("data", "支付宝支付成功") - setResult(996) - finish() - } - - "5000" -> { - RxToast.error("重复的请求") - } - - "6001" -> { - RxToast.warning("已取消支付") - finish() - } - - "4000" -> { - RxToast.error("订单支付失败") - finish() - } - - "6002" -> { - RxToast.error("网络连接出错") - finish() - } - } - } - } - - if (!isIntercepted) { - view.loadUrl(url) - } - return true - } - } - - } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/yingmao/clash/webview/BZYWebViewVM.kt b/app/src/main/java/com/yingmao/clash/webview/BZYWebViewVM.kt deleted file mode 100644 index d31f589..0000000 --- a/app/src/main/java/com/yingmao/clash/webview/BZYWebViewVM.kt +++ /dev/null @@ -1,23 +0,0 @@ -package com.yingmao.clash.webview - - -import com.tencent.mmkv.MMKV -import com.yingmao.clash.base.BaseViewMode -import com.yingmao.clash.conf.BZYConstants -import com.yingmao.clash.net.http.HttpApi -import com.yingmao.clash.net.http.HttpReqType -import com.yingmao.clash.net.http.NetService - -class BZYWebViewVM : BaseViewMode() { - fun wxCheckPayStatus(outTradeNo :String){ - val username = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_REMEMBER_USERNAME,"")!! - val phToken = MMKV.defaultMMKV().decodeString(BZYConstants.MMKV_KEY_PH_TOKEN,"")!! - val params = hashMapOf( - "phoneNumber" to username, - "outTradeNo" to outTradeNo, - "phToken" to phToken - ) - val httpApi = NetService.instances.createHttps(HttpApi::class.java) - doAsyncDelay(HttpReqType.APP_WX_PAY_STATUS,2000) { httpApi.pcPayStatus(params) } - } -} \ No newline at end of file diff --git a/app/src/main/res/drawable/ai_chat.xml b/app/src/main/res/drawable/ai_chat.xml index b84fb9c..44ef0b0 100644 --- a/app/src/main/res/drawable/ai_chat.xml +++ b/app/src/main/res/drawable/ai_chat.xml @@ -9,7 +9,4 @@ - diff --git a/app/src/main/res/layout/new_main_activity.xml b/app/src/main/res/layout/new_main_activity.xml index 354397d..a868b5a 100644 --- a/app/src/main/res/layout/new_main_activity.xml +++ b/app/src/main/res/layout/new_main_activity.xml @@ -79,6 +79,7 @@ android:layout_marginEnd="20dp" android:layout_marginBottom="20dp" android:src="@drawable/ai_chat" + android:visibility="gone" android:tint="#FF8A04" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" /> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 87dcc2c..019bb3a 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -358,8 +358,12 @@ Service Description\n Recharge Membership 《ServiceTerms》 《PrivacyPolicy》 - In order to implement and strengthen awareness of personal information security protection, please read the relevant agreements listed below carefully. - + +In order to implement and strengthen awareness of personal information security protection, please read the following relevant information carefully +1. To ensure you do not miss important notifications and updates, you need to enable the app to automatically start when your device starts. You can change this permission at any time in Settings. +2. ensure that your application works normally, the application will obtain basic information about the device, such as OAID, AndroidId, and other basic information. +3. For more detailed information on device acquisition and third-party SDK calls, please refer to the app "Privacy Policy" and "Terms of Service". + Renewal Membership has expired Open connection diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index f027c09..6a34256 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -349,7 +349,12 @@ 充值會員 《服務條款》 《隱私政策》 - 為貫徹與加強個人信息安全防護意識,請仔細閱讀以下列出的相關協議 + +\u3000\u3000為貫徹與加強個人資訊安全防護意識,請仔細閱讀下列相關資訊\n +\u3000\u30001.為了確保您不會錯過重要通知和更新,需要在裝置啟動時自動啟動應用程式。您可以在設定中隨時變更此權限。 \n +2.為了確保您應用正常使用應用程式會取得裝置的相關基礎資訊如:OAID,androidId等基礎資訊。 \n +\u3000\u30003.更多詳細設備取得以及三方sdk呼叫請詳見應用"《隱私權政策》"與"《服務條款》"。 + 續費 會員已到期 開啟連接 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 1834b28..aba11d7 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -347,7 +347,12 @@ 充值會員 《服務條款》 《隱私政策》 - 為貫徹與加強個人信息安全防護意識,請仔細閱讀以下列出的相關協議 + +\u3000\u3000為貫徹與加強個人資訊安全防護意識,請仔細閱讀下列相關資訊\n +\u3000\u30001.為了確保您不會錯過重要通知和更新,需要在裝置啟動時自動啟動應用程式。您可以在設定中隨時變更此權限。 \n +2.為了確保您應用正常使用應用程式會取得裝置的相關基礎資訊如:OAID,androidId等基礎資訊。 \n +\u3000\u30003.更多詳細設備取得以及三方sdk呼叫請詳見應用"《隱私權政策》"與"《服務條款》"。 + 續費 會員已到期 開啟連接 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index df76106..69fc7c2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -382,7 +382,12 @@ 极速模式 《服务条款》 《隐私政策》 - 为贯彻与加强个人信息安全防护意识,请仔细阅读以下列出的相关协议 + + \u3000\u3000为贯彻与加强个人信息安全防护意识,请仔细阅读下列相关信息\n +\u3000\u30001.为了确保您不会错过重要通知和更新,需要在设备启动时自动启动应用。您可以在设置中随时更改此权限。\n +2.为了确保您应用正常使用应用会获取设备的相关基础信息如:OAID,androidId等基础信息。\n +\u3000\u30003.更多详细设备获取以及三方sdk调用请详见应用"《隐私政策》"与"《服务条款》"。 + 仅支持加速境内、境外法律法规允许访问的内容,无翻墙功能,是否确认充值 一键连加速器 @@ -403,12 +408,12 @@ 当前线路 - AI智能线路 + 智能线路 延迟$ms 延迟28ms 推荐线路 线路超时 - AI聊天 + 客服聊天 切换中,请稍后 当前节点拥堵请手动切换 请关闭加速后在进行源切换 diff --git a/build.gradle.kts b/build.gradle.kts index 78a039b..16720fe 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -93,18 +93,15 @@ subprojects { } productFlavors { flavorDimensions("feature") - create("6666") { + create("8279") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") buildConfigField("boolean", "is_back_cn", "false") - buildConfigField("boolean", "is_ym", "true") - buildConfigField("boolean", "is_tz", "false") - buildConfigField("boolean", "is_yunti", "false") buildConfigField("String", "applicationId", "\"com.jsq.wufu\"") buildConfigField("String", "service_url", "\"https://api.yijianlianjsq.com/\"") - buildConfigField("boolean", "is_free", "false") - buildConfigField("String", "productId", "\"6666\"") + buildConfigField("String", "productId", "\"8279\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/wf", @@ -112,37 +109,15 @@ subprojects { ) ) } - create("2222") { + create("2708") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") + buildConfigField("boolean", "is_free", "false") buildConfigField("boolean", "is_back_cn", "false") - buildConfigField("boolean", "is_ym", "true") - buildConfigField("boolean", "is_tz", "false") - buildConfigField("boolean", "is_yunti", "false") buildConfigField("String", "applicationId", "\"com.jsq.wufu\"") buildConfigField("String", "service_url", "\"https://api.yijianlianjsq.com/\"") - buildConfigField("boolean", "is_free", "false") - buildConfigField("String", "productId", "\"2222\"") - manifestPlaceholders( - mapOf( - "APP_NAME" to "@string/wf", - "APP_ICON" to "@mipmap/oneclickconnection" - ) - ) - } - create("9999") { - isDefault = true - dimension = flavorDimensionList[0] - buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") - buildConfigField("boolean", "is_back_cn", "false") - buildConfigField("boolean", "is_ym", "true") - buildConfigField("boolean", "is_tz", "false") - buildConfigField("boolean", "is_yunti", "false") - buildConfigField("String", "applicationId", "\"com.jsq.wufu\"") - buildConfigField("String", "service_url", "\"https://api.yijianlianjsq.com/\"") - buildConfigField("boolean", "is_free", "false") - buildConfigField("String", "productId", "\"9999\"") + buildConfigField("String", "productId", "\"2708\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/wf", @@ -153,7 +128,7 @@ subprojects { } sourceSets { - getByName("6666") { + getByName("8279") { java.srcDirs("src/foss/java") } }