diff --git a/ttslot888new/nep88/.gitignore b/123bet/.gitignore
similarity index 100%
rename from ttslot888new/nep88/.gitignore
rename to 123bet/.gitignore
diff --git a/123bet/build.gradle b/123bet/build.gradle
new file mode 100644
index 0000000..e1d590e
--- /dev/null
+++ b/123bet/build.gradle
@@ -0,0 +1,78 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.web.bet123"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+ debug {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ release {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "123bet"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_no_music')
+}
\ No newline at end of file
diff --git a/123bet/dskjweb.jks b/123bet/dskjweb.jks
new file mode 100644
index 0000000..a303350
Binary files /dev/null and b/123bet/dskjweb.jks differ
diff --git a/123bet/google-services.json b/123bet/google-services.json
new file mode 100644
index 0000000..8643891
--- /dev/null
+++ b/123bet/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "316014127127",
+ "project_id": "bet-40108",
+ "storage_bucket": "bet-40108.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:316014127127:android:4dce1fbe2d2212385ed452",
+ "android_client_info": {
+ "package_name": "com.web.bet123"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyD5cxd9AVroEvBofiygB8qH5AYjOuQcPho"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/ttslot888new/nep88/ppn.jks b/123bet/ppn.jks
similarity index 100%
rename from ttslot888new/nep88/ppn.jks
rename to 123bet/ppn.jks
diff --git a/ttslot888new/nep88/proguard-rules.pro b/123bet/proguard-rules.pro
similarity index 100%
rename from ttslot888new/nep88/proguard-rules.pro
rename to 123bet/proguard-rules.pro
diff --git a/ttslot888new/nep88/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/123bet/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
similarity index 100%
rename from ttslot888new/nep88/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
rename to 123bet/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
diff --git a/123bet/src/main/AndroidManifest.xml b/123bet/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..28f270f
--- /dev/null
+++ b/123bet/src/main/AndroidManifest.xml
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/123bet/src/main/java/com/web/bet123/MainActivity.java b/123bet/src/main/java/com/web/bet123/MainActivity.java
new file mode 100644
index 0000000..65dee75
--- /dev/null
+++ b/123bet/src/main/java/com/web/bet123/MainActivity.java
@@ -0,0 +1,49 @@
+package com.web.bet123;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.os.Bundle;
+
+import com.bumptech.glide.Glide;
+import com.web.base.MainActivity2;
+import com.google.firebase.messaging.FirebaseMessaging;
+
+public class MainActivity extends MainActivity2 {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ userId = 178;
+ saveInt(MainActivity.this,"user_code",userId);
+ saveInt(MainActivity.this,"version_code",getVersion());
+ com.web.base.MainActivity.saveString(this, "base_url","https://123bet.club/");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#1f1712");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#1f1712");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity.this,"is_white",1);
+ super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(true);
+ //订阅主题
+ FirebaseMessaging.getInstance().subscribeToTopic("demo")
+ .addOnCompleteListener(task -> {
+ });
+// getWindow().getDecorView().setBackgroundResource(Color.parseColor("#01052a"));
+// Glide.with(MainActivity.this).load(R.mipmap.load_img).into(showTopV1);
+ }
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/ttslot888new/nep88/src/main/java/com/web/sking668/MyFirebaseMessageingService.java b/123bet/src/main/java/com/web/bet123/MyFirebaseMessageingService.java
similarity index 99%
rename from ttslot888new/nep88/src/main/java/com/web/sking668/MyFirebaseMessageingService.java
rename to 123bet/src/main/java/com/web/bet123/MyFirebaseMessageingService.java
index 5fd5597..bc2305e 100644
--- a/ttslot888new/nep88/src/main/java/com/web/sking668/MyFirebaseMessageingService.java
+++ b/123bet/src/main/java/com/web/bet123/MyFirebaseMessageingService.java
@@ -1,4 +1,4 @@
-package com.web.sking668;
+package com.web.bet123;
import android.app.NotificationChannel;
import android.app.NotificationManager;
diff --git a/ttslot888new/nep88/src/main/java/com/web/sking668/WebApplication.java b/123bet/src/main/java/com/web/bet123/WebApplication.java
similarity index 97%
rename from ttslot888new/nep88/src/main/java/com/web/sking668/WebApplication.java
rename to 123bet/src/main/java/com/web/bet123/WebApplication.java
index a5dd9e1..6e72c0f 100644
--- a/ttslot888new/nep88/src/main/java/com/web/sking668/WebApplication.java
+++ b/123bet/src/main/java/com/web/bet123/WebApplication.java
@@ -1,4 +1,4 @@
-package com.web.sking668;
+package com.web.bet123;
import android.app.Application;
import android.content.Context;
diff --git a/ttslot888new/nep88/src/main/res/drawable-anydpi/ic_action_back.xml b/123bet/src/main/res/drawable-anydpi/ic_action_back.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable-anydpi/ic_action_back.xml
rename to 123bet/src/main/res/drawable-anydpi/ic_action_back.xml
diff --git a/ttslot888new/nep88/src/main/res/drawable-hdpi/ic_action_back.png b/123bet/src/main/res/drawable-hdpi/ic_action_back.png
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable-hdpi/ic_action_back.png
rename to 123bet/src/main/res/drawable-hdpi/ic_action_back.png
diff --git a/ttslot888new/nep88/src/main/res/drawable-mdpi/ic_action_back.png b/123bet/src/main/res/drawable-mdpi/ic_action_back.png
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable-mdpi/ic_action_back.png
rename to 123bet/src/main/res/drawable-mdpi/ic_action_back.png
diff --git a/ttslot888new/nep88/src/main/res/drawable-v24/ic_launcher_foreground.xml b/123bet/src/main/res/drawable-v24/ic_launcher_foreground.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable-v24/ic_launcher_foreground.xml
rename to 123bet/src/main/res/drawable-v24/ic_launcher_foreground.xml
diff --git a/ttslot888new/nep88/src/main/res/drawable-xhdpi/ic_action_back.png b/123bet/src/main/res/drawable-xhdpi/ic_action_back.png
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable-xhdpi/ic_action_back.png
rename to 123bet/src/main/res/drawable-xhdpi/ic_action_back.png
diff --git a/ttslot888new/nep88/src/main/res/drawable-xxhdpi/ic_action_back.png b/123bet/src/main/res/drawable-xxhdpi/ic_action_back.png
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable-xxhdpi/ic_action_back.png
rename to 123bet/src/main/res/drawable-xxhdpi/ic_action_back.png
diff --git a/123bet/src/main/res/drawable/big_bg.xml b/123bet/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..f5c5df4
--- /dev/null
+++ b/123bet/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/ttslot888new/nep88/src/main/res/drawable/ic_launcher_background.xml b/123bet/src/main/res/drawable/ic_launcher_background.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable/ic_launcher_background.xml
rename to 123bet/src/main/res/drawable/ic_launcher_background.xml
diff --git a/ttslot888new/nep88/src/main/res/drawable/input_bg.xml b/123bet/src/main/res/drawable/input_bg.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable/input_bg.xml
rename to 123bet/src/main/res/drawable/input_bg.xml
diff --git a/ttslot888new/nep88/src/main/res/drawable/pass_word_bg.xml b/123bet/src/main/res/drawable/pass_word_bg.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable/pass_word_bg.xml
rename to 123bet/src/main/res/drawable/pass_word_bg.xml
diff --git a/ttslot888new/nep88/src/main/res/drawable/pass_word_bg1.xml b/123bet/src/main/res/drawable/pass_word_bg1.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable/pass_word_bg1.xml
rename to 123bet/src/main/res/drawable/pass_word_bg1.xml
diff --git a/ttslot888new/nep88/src/main/res/drawable/pass_word_bg2.xml b/123bet/src/main/res/drawable/pass_word_bg2.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable/pass_word_bg2.xml
rename to 123bet/src/main/res/drawable/pass_word_bg2.xml
diff --git a/ttslot888new/nep88/src/main/res/drawable/shape_btn_bg.xml b/123bet/src/main/res/drawable/shape_btn_bg.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable/shape_btn_bg.xml
rename to 123bet/src/main/res/drawable/shape_btn_bg.xml
diff --git a/ttslot888new/nep88/src/main/res/drawable/shape_dialog_bg2.xml b/123bet/src/main/res/drawable/shape_dialog_bg2.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable/shape_dialog_bg2.xml
rename to 123bet/src/main/res/drawable/shape_dialog_bg2.xml
diff --git a/ttslot888new/nep88/src/main/res/drawable/shape_dialog_bg3.xml b/123bet/src/main/res/drawable/shape_dialog_bg3.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable/shape_dialog_bg3.xml
rename to 123bet/src/main/res/drawable/shape_dialog_bg3.xml
diff --git a/ttslot888new/nep88/src/main/res/drawable/shape_dialog_bg_new.xml b/123bet/src/main/res/drawable/shape_dialog_bg_new.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/drawable/shape_dialog_bg_new.xml
rename to 123bet/src/main/res/drawable/shape_dialog_bg_new.xml
diff --git a/ttslot888new/nep88/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/123bet/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
rename to 123bet/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
diff --git a/ttslot888new/nep88/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/123bet/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
rename to 123bet/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
diff --git a/ttslot888new/nep88/src/main/res/mipmap-hdpi/ic_empty.png b/123bet/src/main/res/mipmap-hdpi/ic_empty.png
similarity index 100%
rename from ttslot888new/nep88/src/main/res/mipmap-hdpi/ic_empty.png
rename to 123bet/src/main/res/mipmap-hdpi/ic_empty.png
diff --git a/ttslot888new/nep88/src/main/res/mipmap-hdpi/ic_pull_down.png b/123bet/src/main/res/mipmap-hdpi/ic_pull_down.png
similarity index 100%
rename from ttslot888new/nep88/src/main/res/mipmap-hdpi/ic_pull_down.png
rename to 123bet/src/main/res/mipmap-hdpi/ic_pull_down.png
diff --git a/ttslot888new/nep88/src/main/res/mipmap-xhdpi/ic_close.png b/123bet/src/main/res/mipmap-xhdpi/ic_close.png
similarity index 100%
rename from ttslot888new/nep88/src/main/res/mipmap-xhdpi/ic_close.png
rename to 123bet/src/main/res/mipmap-xhdpi/ic_close.png
diff --git a/ttslot888new/nep88/src/main/res/mipmap-xhdpi/ic_menu.png b/123bet/src/main/res/mipmap-xhdpi/ic_menu.png
similarity index 100%
rename from ttslot888new/nep88/src/main/res/mipmap-xhdpi/ic_menu.png
rename to 123bet/src/main/res/mipmap-xhdpi/ic_menu.png
diff --git a/123bet/src/main/res/mipmap-xxhdpi/app_logo.jpg b/123bet/src/main/res/mipmap-xxhdpi/app_logo.jpg
new file mode 100644
index 0000000..273c092
Binary files /dev/null and b/123bet/src/main/res/mipmap-xxhdpi/app_logo.jpg differ
diff --git a/ttslot888new/nep88/src/main/res/values-en/strings.xml b/123bet/src/main/res/values-en/strings.xml
similarity index 98%
rename from ttslot888new/nep88/src/main/res/values-en/strings.xml
rename to 123bet/src/main/res/values-en/strings.xml
index 6da9f05..0d60963 100644
--- a/ttslot888new/nep88/src/main/res/values-en/strings.xml
+++ b/123bet/src/main/res/values-en/strings.xml
@@ -1,5 +1,4 @@
- SKING668
Please Set Your Password
Cancel
Sure
diff --git a/123bet/src/main/res/values-night/themes.xml b/123bet/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..89e12d2
--- /dev/null
+++ b/123bet/src/main/res/values-night/themes.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/123bet/src/main/res/values/colors.xml b/123bet/src/main/res/values/colors.xml
new file mode 100644
index 0000000..b45f76b
--- /dev/null
+++ b/123bet/src/main/res/values/colors.xml
@@ -0,0 +1,18 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #FFFFFFFF
+ #1f1712
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
+
\ No newline at end of file
diff --git a/ttslot888new/nep88/src/main/res/values/strings.xml b/123bet/src/main/res/values/strings.xml
similarity index 99%
rename from ttslot888new/nep88/src/main/res/values/strings.xml
rename to 123bet/src/main/res/values/strings.xml
index bcfc62c..e06c6ca 100644
--- a/ttslot888new/nep88/src/main/res/values/strings.xml
+++ b/123bet/src/main/res/values/strings.xml
@@ -1,5 +1,5 @@
- SKING668
+ 123BET
请输入6位密码
取消
确定
diff --git a/123bet/src/main/res/values/themes.xml b/123bet/src/main/res/values/themes.xml
new file mode 100644
index 0000000..efa2168
--- /dev/null
+++ b/123bet/src/main/res/values/themes.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ttslot888new/nep88/src/main/res/xml/app_updater_paths.xml b/123bet/src/main/res/xml/app_updater_paths.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/xml/app_updater_paths.xml
rename to 123bet/src/main/res/xml/app_updater_paths.xml
diff --git a/ttslot888new/nep88/src/main/res/xml/network_security_config.xml b/123bet/src/main/res/xml/network_security_config.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/xml/network_security_config.xml
rename to 123bet/src/main/res/xml/network_security_config.xml
diff --git a/ttslot888new/nep88/src/main/res/xml/provider_paths.xml b/123bet/src/main/res/xml/provider_paths.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/xml/provider_paths.xml
rename to 123bet/src/main/res/xml/provider_paths.xml
diff --git a/ttslot888new/nep88/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/123bet/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
similarity index 100%
rename from ttslot888new/nep88/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
rename to 123bet/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
diff --git a/2uob/.gitignore b/2uob/.gitignore
new file mode 100644
index 0000000..956c004
--- /dev/null
+++ b/2uob/.gitignore
@@ -0,0 +1,2 @@
+/build
+/release
\ No newline at end of file
diff --git a/2uob/build.gradle b/2uob/build.gradle
new file mode 100644
index 0000000..901b88f
--- /dev/null
+++ b/2uob/build.gradle
@@ -0,0 +1,78 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.xyz.uobxyz"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+ debug {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ release {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "2uob"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_no_music')
+}
\ No newline at end of file
diff --git a/2uob/dskjweb.jks b/2uob/dskjweb.jks
new file mode 100644
index 0000000..a303350
Binary files /dev/null and b/2uob/dskjweb.jks differ
diff --git a/2uob/google-services.json b/2uob/google-services.json
new file mode 100644
index 0000000..5c97d6a
--- /dev/null
+++ b/2uob/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "547057018602",
+ "project_id": "uobs-5907f",
+ "storage_bucket": "uobs-5907f.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:547057018602:android:477ccfd80db9d5d1609993",
+ "android_client_info": {
+ "package_name": "com.xyz.uobxyz"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBDpLnbOxCGHjOYoZ26W9A4NbL3uP3aK7Y"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/2uob/ppn.jks b/2uob/ppn.jks
new file mode 100644
index 0000000..5898029
Binary files /dev/null and b/2uob/ppn.jks differ
diff --git a/2uob/proguard-rules.pro b/2uob/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/2uob/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/2uob/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/2uob/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/2uob/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/2uob/src/main/AndroidManifest.xml b/2uob/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..1e576a8
--- /dev/null
+++ b/2uob/src/main/AndroidManifest.xml
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/java/com/xyz/uobxyz/MainActivity.java b/2uob/src/main/java/com/xyz/uobxyz/MainActivity.java
new file mode 100644
index 0000000..04cfa9e
--- /dev/null
+++ b/2uob/src/main/java/com/xyz/uobxyz/MainActivity.java
@@ -0,0 +1,62 @@
+package com.xyz.uobxyz;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+
+import com.bumptech.glide.Glide;
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.web.base.LogUtils;
+import com.web.base.MainActivity2;
+import com.google.firebase.messaging.FirebaseMessaging;
+
+public class MainActivity extends MainActivity2 {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ userId = 212;
+ saveInt(MainActivity.this,"user_code",userId);
+ saveInt(MainActivity.this,"version_code",getVersion());
+ com.web.base.MainActivity.saveString(this, "base_url","https://2uob.com/");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#66008f");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#101012");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity.this,"is_white",1);
+ super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色t
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(false);
+ //订阅主题
+ FirebaseMessaging.getInstance().subscribeToTopic("demo")
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ String msg = "Subscribed";
+ if (!task.isSuccessful()) {
+ msg = "Subscribe failed";
+ }
+ LogUtils.i("结果:"+msg);
+ }
+ });
+// getWindow().getDecorView().setBackgroundResource(Color.parseColor("#01052a"));
+// Glide.with(MainActivity.this).load(R.mipmap.load_img).into(showTopV1);
+ }
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/mudahking/src/main/java/com/web/mudahking/MyFirebaseMessageingService.java b/2uob/src/main/java/com/xyz/uobxyz/MyFirebaseMessageingService.java
similarity index 99%
rename from mudahking/src/main/java/com/web/mudahking/MyFirebaseMessageingService.java
rename to 2uob/src/main/java/com/xyz/uobxyz/MyFirebaseMessageingService.java
index 5e808c9..fcc3586 100644
--- a/mudahking/src/main/java/com/web/mudahking/MyFirebaseMessageingService.java
+++ b/2uob/src/main/java/com/xyz/uobxyz/MyFirebaseMessageingService.java
@@ -1,4 +1,4 @@
-package com.web.mudahking;
+package com.xyz.uobxyz;
import android.app.NotificationChannel;
import android.app.NotificationManager;
diff --git a/2uob/src/main/java/com/xyz/uobxyz/WebApplication.java b/2uob/src/main/java/com/xyz/uobxyz/WebApplication.java
new file mode 100644
index 0000000..e749caf
--- /dev/null
+++ b/2uob/src/main/java/com/xyz/uobxyz/WebApplication.java
@@ -0,0 +1,35 @@
+package com.xyz.uobxyz;
+
+import android.app.Application;
+import android.content.Context;
+import com.tencent.smtt.export.external.TbsCoreSettings;
+import com.tencent.smtt.sdk.QbSdk;
+import java.util.HashMap;
+
+public class WebApplication extends Application {
+
+
+ public static Context application;
+ @Override
+ public void onCreate() {
+ super.onCreate();
+// 设置开启优化方案
+ application = this;
+ HashMap map = new HashMap();
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
+ QbSdk.initTbsSettings(map);
+ QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
+ @Override
+ public void onCoreInitFinished() {
+
+ }
+
+ @Override
+ public void onViewInitFinished(boolean b) {
+
+ }
+ });
+ QbSdk.setDownloadWithoutWifi(true);
+ }
+}
diff --git a/2uob/src/main/res/drawable-anydpi/ic_action_back.xml b/2uob/src/main/res/drawable-anydpi/ic_action_back.xml
new file mode 100644
index 0000000..013ab07
--- /dev/null
+++ b/2uob/src/main/res/drawable-anydpi/ic_action_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/2uob/src/main/res/drawable-hdpi/ic_action_back.png b/2uob/src/main/res/drawable-hdpi/ic_action_back.png
new file mode 100644
index 0000000..1560c04
Binary files /dev/null and b/2uob/src/main/res/drawable-hdpi/ic_action_back.png differ
diff --git a/2uob/src/main/res/drawable-mdpi/ic_action_back.png b/2uob/src/main/res/drawable-mdpi/ic_action_back.png
new file mode 100644
index 0000000..d5841d2
Binary files /dev/null and b/2uob/src/main/res/drawable-mdpi/ic_action_back.png differ
diff --git a/2uob/src/main/res/drawable-v24/ic_launcher_foreground.xml b/2uob/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/2uob/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/drawable-xhdpi/ic_action_back.png b/2uob/src/main/res/drawable-xhdpi/ic_action_back.png
new file mode 100644
index 0000000..5c14e41
Binary files /dev/null and b/2uob/src/main/res/drawable-xhdpi/ic_action_back.png differ
diff --git a/2uob/src/main/res/drawable-xxhdpi/ic_action_back.png b/2uob/src/main/res/drawable-xxhdpi/ic_action_back.png
new file mode 100644
index 0000000..0516d08
Binary files /dev/null and b/2uob/src/main/res/drawable-xxhdpi/ic_action_back.png differ
diff --git a/2uob/src/main/res/drawable/big_bg.xml b/2uob/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..737f3f8
--- /dev/null
+++ b/2uob/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/drawable/ic_launcher_background.xml b/2uob/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/2uob/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2uob/src/main/res/drawable/input_bg.xml b/2uob/src/main/res/drawable/input_bg.xml
new file mode 100644
index 0000000..4e895aa
--- /dev/null
+++ b/2uob/src/main/res/drawable/input_bg.xml
@@ -0,0 +1,20 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/2uob/src/main/res/drawable/pass_word_bg.xml b/2uob/src/main/res/drawable/pass_word_bg.xml
new file mode 100644
index 0000000..2724e60
--- /dev/null
+++ b/2uob/src/main/res/drawable/pass_word_bg.xml
@@ -0,0 +1,28 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/2uob/src/main/res/drawable/pass_word_bg1.xml b/2uob/src/main/res/drawable/pass_word_bg1.xml
new file mode 100644
index 0000000..d10d780
--- /dev/null
+++ b/2uob/src/main/res/drawable/pass_word_bg1.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/drawable/pass_word_bg2.xml b/2uob/src/main/res/drawable/pass_word_bg2.xml
new file mode 100644
index 0000000..916d99c
--- /dev/null
+++ b/2uob/src/main/res/drawable/pass_word_bg2.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/drawable/shape_btn_bg.xml b/2uob/src/main/res/drawable/shape_btn_bg.xml
new file mode 100644
index 0000000..af87a0d
--- /dev/null
+++ b/2uob/src/main/res/drawable/shape_btn_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/drawable/shape_dialog_bg2.xml b/2uob/src/main/res/drawable/shape_dialog_bg2.xml
new file mode 100644
index 0000000..7837a42
--- /dev/null
+++ b/2uob/src/main/res/drawable/shape_dialog_bg2.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/drawable/shape_dialog_bg3.xml b/2uob/src/main/res/drawable/shape_dialog_bg3.xml
new file mode 100644
index 0000000..ca0a18d
--- /dev/null
+++ b/2uob/src/main/res/drawable/shape_dialog_bg3.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/drawable/shape_dialog_bg_new.xml b/2uob/src/main/res/drawable/shape_dialog_bg_new.xml
new file mode 100644
index 0000000..e96d4e0
--- /dev/null
+++ b/2uob/src/main/res/drawable/shape_dialog_bg_new.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/2uob/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/2uob/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/2uob/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/2uob/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/mipmap-hdpi/ic_empty.png b/2uob/src/main/res/mipmap-hdpi/ic_empty.png
new file mode 100644
index 0000000..72473d6
Binary files /dev/null and b/2uob/src/main/res/mipmap-hdpi/ic_empty.png differ
diff --git a/2uob/src/main/res/mipmap-hdpi/ic_pull_down.png b/2uob/src/main/res/mipmap-hdpi/ic_pull_down.png
new file mode 100644
index 0000000..7dc0ec3
Binary files /dev/null and b/2uob/src/main/res/mipmap-hdpi/ic_pull_down.png differ
diff --git a/2uob/src/main/res/mipmap-xhdpi/ic_close.png b/2uob/src/main/res/mipmap-xhdpi/ic_close.png
new file mode 100644
index 0000000..c0b0127
Binary files /dev/null and b/2uob/src/main/res/mipmap-xhdpi/ic_close.png differ
diff --git a/2uob/src/main/res/mipmap-xhdpi/ic_menu.png b/2uob/src/main/res/mipmap-xhdpi/ic_menu.png
new file mode 100644
index 0000000..2b55ec5
Binary files /dev/null and b/2uob/src/main/res/mipmap-xhdpi/ic_menu.png differ
diff --git a/2uob/src/main/res/mipmap-xxhdpi/app_logo.png b/2uob/src/main/res/mipmap-xxhdpi/app_logo.png
new file mode 100644
index 0000000..2825680
Binary files /dev/null and b/2uob/src/main/res/mipmap-xxhdpi/app_logo.png differ
diff --git a/2uob/src/main/res/values-en/strings.xml b/2uob/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..0d60963
--- /dev/null
+++ b/2uob/src/main/res/values-en/strings.xml
@@ -0,0 +1,51 @@
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+
\ No newline at end of file
diff --git a/2uob/src/main/res/values-night/themes.xml b/2uob/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..89e12d2
--- /dev/null
+++ b/2uob/src/main/res/values-night/themes.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/values/colors.xml b/2uob/src/main/res/values/colors.xml
new file mode 100644
index 0000000..c06d927
--- /dev/null
+++ b/2uob/src/main/res/values/colors.xml
@@ -0,0 +1,18 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #FFFFFFFF
+ #66008f
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/values/strings.xml b/2uob/src/main/res/values/strings.xml
new file mode 100644
index 0000000..e52b21b
--- /dev/null
+++ b/2uob/src/main/res/values/strings.xml
@@ -0,0 +1,74 @@
+
+ 2UOB
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/values/themes.xml b/2uob/src/main/res/values/themes.xml
new file mode 100644
index 0000000..efa2168
--- /dev/null
+++ b/2uob/src/main/res/values/themes.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/xml/app_updater_paths.xml b/2uob/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/2uob/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/xml/network_security_config.xml b/2uob/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/2uob/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/main/res/xml/provider_paths.xml b/2uob/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/2uob/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/2uob/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/2uob/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/2uob/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/711bet/.gitignore b/711bet/.gitignore
new file mode 100644
index 0000000..956c004
--- /dev/null
+++ b/711bet/.gitignore
@@ -0,0 +1,2 @@
+/build
+/release
\ No newline at end of file
diff --git a/711bet/build.gradle b/711bet/build.gradle
new file mode 100644
index 0000000..1ad1ab0
--- /dev/null
+++ b/711bet/build.gradle
@@ -0,0 +1,78 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.web.bet711"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+ debug {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ release {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "711bet"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_no_music')
+}
\ No newline at end of file
diff --git a/711bet/dskjweb.jks b/711bet/dskjweb.jks
new file mode 100644
index 0000000..a303350
Binary files /dev/null and b/711bet/dskjweb.jks differ
diff --git a/ttslot888new/nep88/google-services.json b/711bet/google-services.json
similarity index 53%
rename from ttslot888new/nep88/google-services.json
rename to 711bet/google-services.json
index 51672f9..89482bd 100644
--- a/ttslot888new/nep88/google-services.json
+++ b/711bet/google-services.json
@@ -1,21 +1,21 @@
{
"project_info": {
- "project_number": "563249922677",
- "project_id": "sking668",
- "storage_bucket": "sking668.firebasestorage.app"
+ "project_number": "959352011569",
+ "project_id": "bet-e209b",
+ "storage_bucket": "bet-e209b.firebasestorage.app"
},
"client": [
{
"client_info": {
- "mobilesdk_app_id": "1:563249922677:android:4f1a9cf79d82cea8f32e3c",
+ "mobilesdk_app_id": "1:959352011569:android:74c25e3bc6156e772dce10",
"android_client_info": {
- "package_name": "com.web.sking668"
+ "package_name": "com.web.bet711"
}
},
"oauth_client": [],
"api_key": [
{
- "current_key": "AIzaSyDAJ4p-dLJYr5oGFiLvopwQC5h5M716zk4"
+ "current_key": "AIzaSyCqGrtP29OJHiNyhgp1BiUjLvjU_UzjYS4"
}
],
"services": {
diff --git a/711bet/ppn.jks b/711bet/ppn.jks
new file mode 100644
index 0000000..5898029
Binary files /dev/null and b/711bet/ppn.jks differ
diff --git a/711bet/proguard-rules.pro b/711bet/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/711bet/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/711bet/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/711bet/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/711bet/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/711bet/src/main/AndroidManifest.xml b/711bet/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..3fda1d2
--- /dev/null
+++ b/711bet/src/main/AndroidManifest.xml
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/java/com/web/bet711/MainActivity.java b/711bet/src/main/java/com/web/bet711/MainActivity.java
new file mode 100644
index 0000000..87d3df0
--- /dev/null
+++ b/711bet/src/main/java/com/web/bet711/MainActivity.java
@@ -0,0 +1,63 @@
+package com.web.bet711;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+
+import com.bumptech.glide.Glide;
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.web.base.LogUtils;
+import com.web.base.MainActivity2;
+import com.google.firebase.messaging.FirebaseMessaging;
+
+public class MainActivity extends MainActivity2 {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ userId = 219;
+ saveInt(MainActivity.this,"user_code",userId);
+ saveInt(MainActivity.this,"version_code",getVersion());
+ com.web.base.MainActivity.saveString(this, "base_url","https://711bet.bz/");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#007d5d");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#007d5d");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity.this,"is_white",1);
+ super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色t
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(false);
+// showTopV1.setImageResource(R.mipmap.logo11);
+ //订阅主题
+ FirebaseMessaging.getInstance().subscribeToTopic("demo")
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ String msg = "Subscribed";
+ if (!task.isSuccessful()) {
+ msg = "Subscribe failed";
+ }
+ LogUtils.i("结果:"+msg);
+ }
+ });
+// getWindow().getDecorView().setBackgroundResource(Color.parseColor("#01052a"));
+// Glide.with(MainActivity.this).load(R.mipmap.load_img).into(showTopV1);
+ }
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/711bet/src/main/java/com/web/bet711/MyFirebaseMessageingService.java b/711bet/src/main/java/com/web/bet711/MyFirebaseMessageingService.java
new file mode 100644
index 0000000..512e4ed
--- /dev/null
+++ b/711bet/src/main/java/com/web/bet711/MyFirebaseMessageingService.java
@@ -0,0 +1,125 @@
+package com.web.bet711;
+
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import com.google.firebase.messaging.FirebaseMessagingService;
+import com.google.firebase.messaging.RemoteMessage;
+import com.google.gson.Gson;
+import com.web.base.GsonUtils;
+import com.web.base.MessageInfo;
+import java.util.Map;
+import java.util.Random;
+
+public class MyFirebaseMessageingService extends FirebaseMessagingService {
+
+ public MyFirebaseMessageingService() {
+ }
+
+ @Override
+ public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
+ super.onMessageReceived(remoteMessage);
+ Map serviceData = remoteMessage.getData(); //后台推送数据
+ if (serviceData != null && serviceData.containsKey("message")) {
+ String value = serviceData.get("message");
+ Gson gson = new Gson();
+ MessageInfo messageInfo = gson.fromJson(value, MessageInfo.class);
+ showNotification(messageInfo);
+ } else {
+ //收到通知 创建notify
+ if (remoteMessage.getNotification() != null) {
+ showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
+ }
+ }
+ }
+
+ private void showNotification(MessageInfo messageInfo) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ notifyIntent.putExtra("message", messageInfo);
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+
+ private void showNotification(String title, String body) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.putExtra("message", body);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ MessageInfo messageInfo = GsonUtils.getObjFromJSON(body, MessageInfo.class);
+ if (messageInfo != null) {
+ body = messageInfo.getContent();
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+}
diff --git a/711bet/src/main/java/com/web/bet711/WebApplication.java b/711bet/src/main/java/com/web/bet711/WebApplication.java
new file mode 100644
index 0000000..bb21a6d
--- /dev/null
+++ b/711bet/src/main/java/com/web/bet711/WebApplication.java
@@ -0,0 +1,35 @@
+package com.web.bet711;
+
+import android.app.Application;
+import android.content.Context;
+import com.tencent.smtt.export.external.TbsCoreSettings;
+import com.tencent.smtt.sdk.QbSdk;
+import java.util.HashMap;
+
+public class WebApplication extends Application {
+
+
+ public static Context application;
+ @Override
+ public void onCreate() {
+ super.onCreate();
+// 设置开启优化方案
+ application = this;
+ HashMap map = new HashMap();
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
+ QbSdk.initTbsSettings(map);
+ QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
+ @Override
+ public void onCoreInitFinished() {
+
+ }
+
+ @Override
+ public void onViewInitFinished(boolean b) {
+
+ }
+ });
+ QbSdk.setDownloadWithoutWifi(true);
+ }
+}
diff --git a/711bet/src/main/res/drawable-anydpi/ic_action_back.xml b/711bet/src/main/res/drawable-anydpi/ic_action_back.xml
new file mode 100644
index 0000000..013ab07
--- /dev/null
+++ b/711bet/src/main/res/drawable-anydpi/ic_action_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/711bet/src/main/res/drawable-hdpi/ic_action_back.png b/711bet/src/main/res/drawable-hdpi/ic_action_back.png
new file mode 100644
index 0000000..1560c04
Binary files /dev/null and b/711bet/src/main/res/drawable-hdpi/ic_action_back.png differ
diff --git a/711bet/src/main/res/drawable-mdpi/ic_action_back.png b/711bet/src/main/res/drawable-mdpi/ic_action_back.png
new file mode 100644
index 0000000..d5841d2
Binary files /dev/null and b/711bet/src/main/res/drawable-mdpi/ic_action_back.png differ
diff --git a/711bet/src/main/res/drawable-v24/ic_launcher_foreground.xml b/711bet/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/711bet/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/drawable-xhdpi/ic_action_back.png b/711bet/src/main/res/drawable-xhdpi/ic_action_back.png
new file mode 100644
index 0000000..5c14e41
Binary files /dev/null and b/711bet/src/main/res/drawable-xhdpi/ic_action_back.png differ
diff --git a/711bet/src/main/res/drawable-xxhdpi/ic_action_back.png b/711bet/src/main/res/drawable-xxhdpi/ic_action_back.png
new file mode 100644
index 0000000..0516d08
Binary files /dev/null and b/711bet/src/main/res/drawable-xxhdpi/ic_action_back.png differ
diff --git a/711bet/src/main/res/drawable/big_bg.xml b/711bet/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..f8ea326
--- /dev/null
+++ b/711bet/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/drawable/ic_launcher_background.xml b/711bet/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/711bet/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/711bet/src/main/res/drawable/input_bg.xml b/711bet/src/main/res/drawable/input_bg.xml
new file mode 100644
index 0000000..4e895aa
--- /dev/null
+++ b/711bet/src/main/res/drawable/input_bg.xml
@@ -0,0 +1,20 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/711bet/src/main/res/drawable/pass_word_bg.xml b/711bet/src/main/res/drawable/pass_word_bg.xml
new file mode 100644
index 0000000..2724e60
--- /dev/null
+++ b/711bet/src/main/res/drawable/pass_word_bg.xml
@@ -0,0 +1,28 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/711bet/src/main/res/drawable/pass_word_bg1.xml b/711bet/src/main/res/drawable/pass_word_bg1.xml
new file mode 100644
index 0000000..d10d780
--- /dev/null
+++ b/711bet/src/main/res/drawable/pass_word_bg1.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/drawable/pass_word_bg2.xml b/711bet/src/main/res/drawable/pass_word_bg2.xml
new file mode 100644
index 0000000..916d99c
--- /dev/null
+++ b/711bet/src/main/res/drawable/pass_word_bg2.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/drawable/shape_btn_bg.xml b/711bet/src/main/res/drawable/shape_btn_bg.xml
new file mode 100644
index 0000000..af87a0d
--- /dev/null
+++ b/711bet/src/main/res/drawable/shape_btn_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/drawable/shape_dialog_bg2.xml b/711bet/src/main/res/drawable/shape_dialog_bg2.xml
new file mode 100644
index 0000000..7837a42
--- /dev/null
+++ b/711bet/src/main/res/drawable/shape_dialog_bg2.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/drawable/shape_dialog_bg3.xml b/711bet/src/main/res/drawable/shape_dialog_bg3.xml
new file mode 100644
index 0000000..ca0a18d
--- /dev/null
+++ b/711bet/src/main/res/drawable/shape_dialog_bg3.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/drawable/shape_dialog_bg_new.xml b/711bet/src/main/res/drawable/shape_dialog_bg_new.xml
new file mode 100644
index 0000000..e96d4e0
--- /dev/null
+++ b/711bet/src/main/res/drawable/shape_dialog_bg_new.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/711bet/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/711bet/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/711bet/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/711bet/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/mipmap-hdpi/ic_empty.png b/711bet/src/main/res/mipmap-hdpi/ic_empty.png
new file mode 100644
index 0000000..72473d6
Binary files /dev/null and b/711bet/src/main/res/mipmap-hdpi/ic_empty.png differ
diff --git a/711bet/src/main/res/mipmap-hdpi/ic_pull_down.png b/711bet/src/main/res/mipmap-hdpi/ic_pull_down.png
new file mode 100644
index 0000000..7dc0ec3
Binary files /dev/null and b/711bet/src/main/res/mipmap-hdpi/ic_pull_down.png differ
diff --git a/711bet/src/main/res/mipmap-xhdpi/ic_close.png b/711bet/src/main/res/mipmap-xhdpi/ic_close.png
new file mode 100644
index 0000000..c0b0127
Binary files /dev/null and b/711bet/src/main/res/mipmap-xhdpi/ic_close.png differ
diff --git a/711bet/src/main/res/mipmap-xhdpi/ic_menu.png b/711bet/src/main/res/mipmap-xhdpi/ic_menu.png
new file mode 100644
index 0000000..2b55ec5
Binary files /dev/null and b/711bet/src/main/res/mipmap-xhdpi/ic_menu.png differ
diff --git a/711bet/src/main/res/mipmap-xxhdpi/app_logo.png b/711bet/src/main/res/mipmap-xxhdpi/app_logo.png
new file mode 100644
index 0000000..ca2729d
Binary files /dev/null and b/711bet/src/main/res/mipmap-xxhdpi/app_logo.png differ
diff --git a/711bet/src/main/res/values-en/strings.xml b/711bet/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..0d60963
--- /dev/null
+++ b/711bet/src/main/res/values-en/strings.xml
@@ -0,0 +1,51 @@
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+
\ No newline at end of file
diff --git a/711bet/src/main/res/values-night/themes.xml b/711bet/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..89e12d2
--- /dev/null
+++ b/711bet/src/main/res/values-night/themes.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/values/colors.xml b/711bet/src/main/res/values/colors.xml
new file mode 100644
index 0000000..d91db7f
--- /dev/null
+++ b/711bet/src/main/res/values/colors.xml
@@ -0,0 +1,17 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #FFFFFFFF
+ #007d5d
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
\ No newline at end of file
diff --git a/711bet/src/main/res/values/strings.xml b/711bet/src/main/res/values/strings.xml
new file mode 100644
index 0000000..81a3a6b
--- /dev/null
+++ b/711bet/src/main/res/values/strings.xml
@@ -0,0 +1,74 @@
+
+ 711BET
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/values/themes.xml b/711bet/src/main/res/values/themes.xml
new file mode 100644
index 0000000..efa2168
--- /dev/null
+++ b/711bet/src/main/res/values/themes.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/xml/app_updater_paths.xml b/711bet/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/711bet/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/xml/network_security_config.xml b/711bet/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/711bet/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/main/res/xml/provider_paths.xml b/711bet/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/711bet/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/711bet/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/711bet/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/711bet/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/7pokies/.gitignore b/7pokies/.gitignore
new file mode 100644
index 0000000..956c004
--- /dev/null
+++ b/7pokies/.gitignore
@@ -0,0 +1,2 @@
+/build
+/release
\ No newline at end of file
diff --git a/7pokies/build.gradle b/7pokies/build.gradle
new file mode 100644
index 0000000..045e0ce
--- /dev/null
+++ b/7pokies/build.gradle
@@ -0,0 +1,78 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.web.pokies7"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+ debug {
+ storeFile file('justlet.jks')
+ storePassword "123456"
+ keyAlias 'key0'
+ keyPassword "123456"
+ }
+ release {
+ storeFile file('justlet.jks')
+ storePassword "123456"
+ keyAlias 'key0'
+ keyPassword "123456"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "7pokies"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_theme')
+}
\ No newline at end of file
diff --git a/7pokies/google-services.json b/7pokies/google-services.json
new file mode 100644
index 0000000..5792d30
--- /dev/null
+++ b/7pokies/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "1060218410128",
+ "project_id": "maucuci-9651c",
+ "storage_bucket": "maucuci-9651c.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:1060218410128:android:0b8a700289378d4dba7415",
+ "android_client_info": {
+ "package_name": "com.web.pokies7"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBb107_oeQFeofrtoa70tN80ukITSHgSrg"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/7pokies/justlet.jks b/7pokies/justlet.jks
new file mode 100644
index 0000000..a33b839
Binary files /dev/null and b/7pokies/justlet.jks differ
diff --git a/7pokies/proguard-rules.pro b/7pokies/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/7pokies/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/7pokies/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/7pokies/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/7pokies/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/7pokies/src/main/AndroidManifest.xml b/7pokies/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..5cb9cab
--- /dev/null
+++ b/7pokies/src/main/AndroidManifest.xml
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/7pokies/src/main/java/com/web/pokies7/MainActivity.java b/7pokies/src/main/java/com/web/pokies7/MainActivity.java
new file mode 100644
index 0000000..e307758
--- /dev/null
+++ b/7pokies/src/main/java/com/web/pokies7/MainActivity.java
@@ -0,0 +1,82 @@
+package com.web.pokies7;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+
+import com.web.base.LogUtils;
+import com.web.base.MainActivity2;
+import com.google.firebase.messaging.FirebaseMessaging;
+
+public class MainActivity extends MainActivity2 {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ initConfig();
+ super.onCreate(savedInstanceState);
+ initWinwdowLogoConfig();
+ registerFCM();
+ }
+
+ /**
+ * 注册FCM
+ */
+ private void registerFCM() {
+ //订阅主题
+ try {
+ FirebaseMessaging.getInstance().subscribeToTopic("demo")
+ .addOnCompleteListener(task -> {
+ String msg = "Subscribed";
+ if (!task.isSuccessful()) {
+ msg = "Subscribe failed";
+ }
+ LogUtils.i("结果:"+msg);
+ });
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 用于修改大背景渐变色 不设置
+ * 大背景就是 windows_color 的颜色
+ * 不要动 都在 app_config.xml中修改
+ */
+ private void initWinwdowLogoConfig() {
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(getString(R.string.is_round).equals("1"));
+ }
+
+ /**
+ * 基础配置都在这里
+ * 不要动 都在 app_config.xml中修改
+ */
+ private void initConfig() {
+
+ //===========================以下是APP的配置信息 都写在 app_config.xml中==================================
+ userId = Integer.parseInt(getString(R.string.userId));
+ saveInt(MainActivity.this,"user_code",userId);
+ saveInt(MainActivity.this,"version_code",getVersion());
+ saveString(this, "base_url",getString(R.string.base_url));
+ //网页的底部NavigationBar颜色
+ saveInt(this, "style_color_int", getColor(R.color.style_color));
+ //页面的大背景颜色
+ saveInt(this, "windows_color_int", getColor(R.color.windows_color));
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity.this,"is_white",Integer.parseInt(getString(R.string.is_white)));
+ //===========================以上是APP的配置信息 都写在 app_config.xml中==================================
+ }
+
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/7pokies/src/main/java/com/web/pokies7/MyCustomLayout.java b/7pokies/src/main/java/com/web/pokies7/MyCustomLayout.java
new file mode 100644
index 0000000..f21e6a6
--- /dev/null
+++ b/7pokies/src/main/java/com/web/pokies7/MyCustomLayout.java
@@ -0,0 +1,57 @@
+package com.web.pokies7;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.util.AttributeSet;
+import android.widget.TextView;
+
+/**
+ * **********************
+ *
+ * @Author bug machine
+ * 创建时间: 2025/12/25 17:16
+ * 用途
+ * **********************
+ */
+public class MyCustomLayout extends LinearLayout {
+
+ private TextView leftTv;
+ private TextView rightTv;
+
+ public MyCustomLayout(Context context) {
+ super(context);
+ init(context);
+ }
+
+ public MyCustomLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init(context);
+ }
+
+ public MyCustomLayout(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ init(context);
+ }
+
+ private void init(Context context) {
+ // 加载XML布局
+ View view = LayoutInflater.from(context).inflate(R.layout.customview, this, true);
+ // 初始化子控件
+ leftTv = (TextView) view.findViewById(R.id.left_tv);
+ rightTv = (TextView) view.findViewById(R.id.right_tv);
+
+ }
+
+ public void setLeftTv(String leftTvString){
+ if(leftTv!=null){
+ leftTv.setText(leftTvString);
+ }
+ }
+ public void setRightTv(String rightTvString){
+ if(rightTv!=null){
+ rightTv.setText(rightTvString);
+ }
+ }
+}
diff --git a/7pokies/src/main/java/com/web/pokies7/MyFirebaseMessageingService.java b/7pokies/src/main/java/com/web/pokies7/MyFirebaseMessageingService.java
new file mode 100644
index 0000000..3ed7ce9
--- /dev/null
+++ b/7pokies/src/main/java/com/web/pokies7/MyFirebaseMessageingService.java
@@ -0,0 +1,125 @@
+package com.web.pokies7;
+
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import com.google.firebase.messaging.FirebaseMessagingService;
+import com.google.firebase.messaging.RemoteMessage;
+import com.google.gson.Gson;
+import com.web.base.GsonUtils;
+import com.web.base.MessageInfo;
+import java.util.Map;
+import java.util.Random;
+
+public class MyFirebaseMessageingService extends FirebaseMessagingService {
+
+ public MyFirebaseMessageingService() {
+ }
+
+ @Override
+ public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
+ super.onMessageReceived(remoteMessage);
+ Map serviceData = remoteMessage.getData(); //后台推送数据
+ if (serviceData != null && serviceData.containsKey("message")) {
+ String value = serviceData.get("message");
+ Gson gson = new Gson();
+ MessageInfo messageInfo = gson.fromJson(value, MessageInfo.class);
+ showNotification(messageInfo);
+ } else {
+ //收到通知 创建notify
+ if (remoteMessage.getNotification() != null) {
+ showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
+ }
+ }
+ }
+
+ private void showNotification(MessageInfo messageInfo) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ notifyIntent.putExtra("message", messageInfo);
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+
+ private void showNotification(String title, String body) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.putExtra("message", body);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ MessageInfo messageInfo = GsonUtils.getObjFromJSON(body, MessageInfo.class);
+ if (messageInfo != null) {
+ body = messageInfo.getContent();
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+}
diff --git a/7pokies/src/main/java/com/web/pokies7/TestActivity.java b/7pokies/src/main/java/com/web/pokies7/TestActivity.java
new file mode 100644
index 0000000..94a324b
--- /dev/null
+++ b/7pokies/src/main/java/com/web/pokies7/TestActivity.java
@@ -0,0 +1,45 @@
+package com.web.pokies7;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.google.firebase.messaging.FirebaseMessaging;
+import com.web.base.LogUtils;
+import com.web.base.MainActivity2;
+
+public class TestActivity extends AppCompatActivity {
+ private MyCustomLayout mycly;
+
+
+ private MyCustomLayout mycly1;
+ private MyCustomLayout mycly2;
+ private MyCustomLayout mycly3;
+ private MyCustomLayout mycly4;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.test);
+ mycly = (MyCustomLayout) findViewById(R.id.mycly);
+ mycly.setLeftTv("我是左边");
+ mycly.setRightTv("那我只能在心里边");
+ mycly1 = (MyCustomLayout) findViewById(R.id.mycly1);
+ mycly1.setLeftTv("左边");
+ mycly1.setRightTv("右边");
+ mycly2 = (MyCustomLayout) findViewById(R.id.mycly2);
+ mycly2.setLeftTv("如何让富婆爱上我?");
+ mycly2.setRightTv("你就是");
+ mycly3 = (MyCustomLayout) findViewById(R.id.mycly3);
+ mycly3.setLeftTv("我是1");
+ mycly3.setRightTv("我也是1");
+ mycly4 = (MyCustomLayout) findViewById(R.id.mycly4);
+ mycly4.setLeftTv("问");
+ mycly4.setRightTv("如何让富婆爱上我");
+
+ }
+}
diff --git a/7pokies/src/main/java/com/web/pokies7/WebApplication.java b/7pokies/src/main/java/com/web/pokies7/WebApplication.java
new file mode 100644
index 0000000..2542b4d
--- /dev/null
+++ b/7pokies/src/main/java/com/web/pokies7/WebApplication.java
@@ -0,0 +1,18 @@
+package com.web.pokies7;
+
+import android.app.Application;
+import android.content.Context;
+
+import java.util.HashMap;
+
+public class WebApplication extends Application {
+
+
+ public static Context application;
+ @Override
+ public void onCreate() {
+ super.onCreate();
+// 设置开启优化方案
+ application = this;
+ }
+}
diff --git a/7pokies/src/main/res/drawable/big_bg.xml b/7pokies/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..2e41ced
--- /dev/null
+++ b/7pokies/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/7pokies/src/main/res/layout/customview.xml b/7pokies/src/main/res/layout/customview.xml
new file mode 100644
index 0000000..412c920
--- /dev/null
+++ b/7pokies/src/main/res/layout/customview.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/7pokies/src/main/res/layout/test.xml b/7pokies/src/main/res/layout/test.xml
new file mode 100644
index 0000000..5e83927
--- /dev/null
+++ b/7pokies/src/main/res/layout/test.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/7pokies/src/main/res/mipmap-xxhdpi/app_logo.png b/7pokies/src/main/res/mipmap-xxhdpi/app_logo.png
new file mode 100644
index 0000000..158a38f
Binary files /dev/null and b/7pokies/src/main/res/mipmap-xxhdpi/app_logo.png differ
diff --git a/7pokies/src/main/res/mipmap-xxhdpi/tixing.png b/7pokies/src/main/res/mipmap-xxhdpi/tixing.png
new file mode 100644
index 0000000..d76ddd5
Binary files /dev/null and b/7pokies/src/main/res/mipmap-xxhdpi/tixing.png differ
diff --git a/7pokies/src/main/res/values-en/strings.xml b/7pokies/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..7a00b5e
--- /dev/null
+++ b/7pokies/src/main/res/values-en/strings.xml
@@ -0,0 +1,52 @@
+
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+
\ No newline at end of file
diff --git a/7pokies/src/main/res/values-night/themes.xml b/7pokies/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..3475a91
--- /dev/null
+++ b/7pokies/src/main/res/values-night/themes.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/7pokies/src/main/res/values/app_config.xml b/7pokies/src/main/res/values/app_config.xml
new file mode 100644
index 0000000..b863b2c
--- /dev/null
+++ b/7pokies/src/main/res/values/app_config.xml
@@ -0,0 +1,18 @@
+
+
+
+
+ 7POKIES
+
+ 50
+
+ https://7pokies.me/
+
+ 1
+
+ 1
+
+ #8b0001
+
+ #003bfb
+
\ No newline at end of file
diff --git a/7pokies/src/main/res/values/colors.xml b/7pokies/src/main/res/values/colors.xml
new file mode 100644
index 0000000..a4e1222
--- /dev/null
+++ b/7pokies/src/main/res/values/colors.xml
@@ -0,0 +1,16 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #1251a1
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
\ No newline at end of file
diff --git a/7pokies/src/main/res/values/strings.xml b/7pokies/src/main/res/values/strings.xml
new file mode 100644
index 0000000..0ffb42d
--- /dev/null
+++ b/7pokies/src/main/res/values/strings.xml
@@ -0,0 +1,53 @@
+
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+
+
+
\ No newline at end of file
diff --git a/7pokies/src/main/res/values/themes.xml b/7pokies/src/main/res/values/themes.xml
new file mode 100644
index 0000000..3ab59d7
--- /dev/null
+++ b/7pokies/src/main/res/values/themes.xml
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/7pokies/src/main/res/xml/app_updater_paths.xml b/7pokies/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/7pokies/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/7pokies/src/main/res/xml/network_security_config.xml b/7pokies/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/7pokies/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/7pokies/src/main/res/xml/provider_paths.xml b/7pokies/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/7pokies/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/7pokies/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/7pokies/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/7pokies/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/93pokies/.gitignore b/93pokies/.gitignore
new file mode 100644
index 0000000..956c004
--- /dev/null
+++ b/93pokies/.gitignore
@@ -0,0 +1,2 @@
+/build
+/release
\ No newline at end of file
diff --git a/93pokies/build.gradle b/93pokies/build.gradle
new file mode 100644
index 0000000..81e27ff
--- /dev/null
+++ b/93pokies/build.gradle
@@ -0,0 +1,78 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.web.pokies83"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+ debug {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ release {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "93pokies"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_no_music')
+}
\ No newline at end of file
diff --git a/93pokies/dskjweb.jks b/93pokies/dskjweb.jks
new file mode 100644
index 0000000..a303350
Binary files /dev/null and b/93pokies/dskjweb.jks differ
diff --git a/93pokies/google-services.json b/93pokies/google-services.json
new file mode 100644
index 0000000..6ca484c
--- /dev/null
+++ b/93pokies/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "40706216380",
+ "project_id": "pokies-c0651",
+ "storage_bucket": "pokies-c0651.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:40706216380:android:d36b729c3980c7c8d15bb9",
+ "android_client_info": {
+ "package_name": "com.web.pokies83"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyA8-ZgB-cByRdBUh4_co4sQrc88qsq3AWA"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/93pokies/ppn.jks b/93pokies/ppn.jks
new file mode 100644
index 0000000..5898029
Binary files /dev/null and b/93pokies/ppn.jks differ
diff --git a/93pokies/proguard-rules.pro b/93pokies/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/93pokies/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/93pokies/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/93pokies/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/93pokies/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/93pokies/src/main/AndroidManifest.xml b/93pokies/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..ff18c2a
--- /dev/null
+++ b/93pokies/src/main/AndroidManifest.xml
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/java/com/web/pokies83/MainActivity.java b/93pokies/src/main/java/com/web/pokies83/MainActivity.java
new file mode 100644
index 0000000..536ee40
--- /dev/null
+++ b/93pokies/src/main/java/com/web/pokies83/MainActivity.java
@@ -0,0 +1,49 @@
+package com.web.pokies83;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.os.Bundle;
+
+import com.bumptech.glide.Glide;
+import com.web.base.MainActivity2;
+import com.google.firebase.messaging.FirebaseMessaging;
+
+public class MainActivity extends MainActivity2 {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ userId = 185;
+ saveInt(MainActivity.this,"user_code",userId);
+ saveInt(MainActivity.this,"version_code",getVersion());
+ com.web.base.MainActivity.saveString(this, "base_url","https://93pokies.vip/");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#5c0401");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#a10b05");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity.this,"is_white",1);
+ super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(true);
+ //订阅主题
+ FirebaseMessaging.getInstance().subscribeToTopic("demo")
+ .addOnCompleteListener(task -> {
+ });
+// getWindow().getDecorView().setBackgroundResource(Color.parseColor("#01052a"));
+// Glide.with(MainActivity.this).load(R.mipmap.load_img).into(showTopV1);
+ }
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/93pokies/src/main/java/com/web/pokies83/MyFirebaseMessageingService.java b/93pokies/src/main/java/com/web/pokies83/MyFirebaseMessageingService.java
new file mode 100644
index 0000000..f094aa9
--- /dev/null
+++ b/93pokies/src/main/java/com/web/pokies83/MyFirebaseMessageingService.java
@@ -0,0 +1,125 @@
+package com.web.pokies83;
+
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import com.google.firebase.messaging.FirebaseMessagingService;
+import com.google.firebase.messaging.RemoteMessage;
+import com.google.gson.Gson;
+import com.web.base.GsonUtils;
+import com.web.base.MessageInfo;
+import java.util.Map;
+import java.util.Random;
+
+public class MyFirebaseMessageingService extends FirebaseMessagingService {
+
+ public MyFirebaseMessageingService() {
+ }
+
+ @Override
+ public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
+ super.onMessageReceived(remoteMessage);
+ Map serviceData = remoteMessage.getData(); //后台推送数据
+ if (serviceData != null && serviceData.containsKey("message")) {
+ String value = serviceData.get("message");
+ Gson gson = new Gson();
+ MessageInfo messageInfo = gson.fromJson(value, MessageInfo.class);
+ showNotification(messageInfo);
+ } else {
+ //收到通知 创建notify
+ if (remoteMessage.getNotification() != null) {
+ showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
+ }
+ }
+ }
+
+ private void showNotification(MessageInfo messageInfo) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ notifyIntent.putExtra("message", messageInfo);
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+
+ private void showNotification(String title, String body) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.putExtra("message", body);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ MessageInfo messageInfo = GsonUtils.getObjFromJSON(body, MessageInfo.class);
+ if (messageInfo != null) {
+ body = messageInfo.getContent();
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+}
diff --git a/93pokies/src/main/java/com/web/pokies83/WebApplication.java b/93pokies/src/main/java/com/web/pokies83/WebApplication.java
new file mode 100644
index 0000000..664a8e3
--- /dev/null
+++ b/93pokies/src/main/java/com/web/pokies83/WebApplication.java
@@ -0,0 +1,35 @@
+package com.web.pokies83;
+
+import android.app.Application;
+import android.content.Context;
+import com.tencent.smtt.export.external.TbsCoreSettings;
+import com.tencent.smtt.sdk.QbSdk;
+import java.util.HashMap;
+
+public class WebApplication extends Application {
+
+
+ public static Context application;
+ @Override
+ public void onCreate() {
+ super.onCreate();
+// 设置开启优化方案
+ application = this;
+ HashMap map = new HashMap();
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
+ QbSdk.initTbsSettings(map);
+ QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
+ @Override
+ public void onCoreInitFinished() {
+
+ }
+
+ @Override
+ public void onViewInitFinished(boolean b) {
+
+ }
+ });
+ QbSdk.setDownloadWithoutWifi(true);
+ }
+}
diff --git a/93pokies/src/main/res/drawable-anydpi/ic_action_back.xml b/93pokies/src/main/res/drawable-anydpi/ic_action_back.xml
new file mode 100644
index 0000000..013ab07
--- /dev/null
+++ b/93pokies/src/main/res/drawable-anydpi/ic_action_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/93pokies/src/main/res/drawable-hdpi/ic_action_back.png b/93pokies/src/main/res/drawable-hdpi/ic_action_back.png
new file mode 100644
index 0000000..1560c04
Binary files /dev/null and b/93pokies/src/main/res/drawable-hdpi/ic_action_back.png differ
diff --git a/93pokies/src/main/res/drawable-mdpi/ic_action_back.png b/93pokies/src/main/res/drawable-mdpi/ic_action_back.png
new file mode 100644
index 0000000..d5841d2
Binary files /dev/null and b/93pokies/src/main/res/drawable-mdpi/ic_action_back.png differ
diff --git a/93pokies/src/main/res/drawable-v24/ic_launcher_foreground.xml b/93pokies/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/93pokies/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/drawable-xhdpi/ic_action_back.png b/93pokies/src/main/res/drawable-xhdpi/ic_action_back.png
new file mode 100644
index 0000000..5c14e41
Binary files /dev/null and b/93pokies/src/main/res/drawable-xhdpi/ic_action_back.png differ
diff --git a/93pokies/src/main/res/drawable-xxhdpi/ic_action_back.png b/93pokies/src/main/res/drawable-xxhdpi/ic_action_back.png
new file mode 100644
index 0000000..0516d08
Binary files /dev/null and b/93pokies/src/main/res/drawable-xxhdpi/ic_action_back.png differ
diff --git a/93pokies/src/main/res/drawable/big_bg.xml b/93pokies/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..b150355
--- /dev/null
+++ b/93pokies/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/drawable/ic_launcher_background.xml b/93pokies/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/93pokies/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/93pokies/src/main/res/drawable/input_bg.xml b/93pokies/src/main/res/drawable/input_bg.xml
new file mode 100644
index 0000000..4e895aa
--- /dev/null
+++ b/93pokies/src/main/res/drawable/input_bg.xml
@@ -0,0 +1,20 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/93pokies/src/main/res/drawable/pass_word_bg.xml b/93pokies/src/main/res/drawable/pass_word_bg.xml
new file mode 100644
index 0000000..2724e60
--- /dev/null
+++ b/93pokies/src/main/res/drawable/pass_word_bg.xml
@@ -0,0 +1,28 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/93pokies/src/main/res/drawable/pass_word_bg1.xml b/93pokies/src/main/res/drawable/pass_word_bg1.xml
new file mode 100644
index 0000000..d10d780
--- /dev/null
+++ b/93pokies/src/main/res/drawable/pass_word_bg1.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/drawable/pass_word_bg2.xml b/93pokies/src/main/res/drawable/pass_word_bg2.xml
new file mode 100644
index 0000000..916d99c
--- /dev/null
+++ b/93pokies/src/main/res/drawable/pass_word_bg2.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/drawable/shape_btn_bg.xml b/93pokies/src/main/res/drawable/shape_btn_bg.xml
new file mode 100644
index 0000000..af87a0d
--- /dev/null
+++ b/93pokies/src/main/res/drawable/shape_btn_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/drawable/shape_dialog_bg2.xml b/93pokies/src/main/res/drawable/shape_dialog_bg2.xml
new file mode 100644
index 0000000..7837a42
--- /dev/null
+++ b/93pokies/src/main/res/drawable/shape_dialog_bg2.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/drawable/shape_dialog_bg3.xml b/93pokies/src/main/res/drawable/shape_dialog_bg3.xml
new file mode 100644
index 0000000..ca0a18d
--- /dev/null
+++ b/93pokies/src/main/res/drawable/shape_dialog_bg3.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/drawable/shape_dialog_bg_new.xml b/93pokies/src/main/res/drawable/shape_dialog_bg_new.xml
new file mode 100644
index 0000000..e96d4e0
--- /dev/null
+++ b/93pokies/src/main/res/drawable/shape_dialog_bg_new.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/93pokies/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/93pokies/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/93pokies/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/93pokies/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/mipmap-hdpi/ic_empty.png b/93pokies/src/main/res/mipmap-hdpi/ic_empty.png
new file mode 100644
index 0000000..72473d6
Binary files /dev/null and b/93pokies/src/main/res/mipmap-hdpi/ic_empty.png differ
diff --git a/93pokies/src/main/res/mipmap-hdpi/ic_pull_down.png b/93pokies/src/main/res/mipmap-hdpi/ic_pull_down.png
new file mode 100644
index 0000000..7dc0ec3
Binary files /dev/null and b/93pokies/src/main/res/mipmap-hdpi/ic_pull_down.png differ
diff --git a/93pokies/src/main/res/mipmap-xhdpi/ic_close.png b/93pokies/src/main/res/mipmap-xhdpi/ic_close.png
new file mode 100644
index 0000000..c0b0127
Binary files /dev/null and b/93pokies/src/main/res/mipmap-xhdpi/ic_close.png differ
diff --git a/93pokies/src/main/res/mipmap-xhdpi/ic_menu.png b/93pokies/src/main/res/mipmap-xhdpi/ic_menu.png
new file mode 100644
index 0000000..2b55ec5
Binary files /dev/null and b/93pokies/src/main/res/mipmap-xhdpi/ic_menu.png differ
diff --git a/93pokies/src/main/res/mipmap-xxhdpi/app_logo.jpg b/93pokies/src/main/res/mipmap-xxhdpi/app_logo.jpg
new file mode 100644
index 0000000..963d8d6
Binary files /dev/null and b/93pokies/src/main/res/mipmap-xxhdpi/app_logo.jpg differ
diff --git a/93pokies/src/main/res/values-en/strings.xml b/93pokies/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..0d60963
--- /dev/null
+++ b/93pokies/src/main/res/values-en/strings.xml
@@ -0,0 +1,51 @@
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/values-night/themes.xml b/93pokies/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..89e12d2
--- /dev/null
+++ b/93pokies/src/main/res/values-night/themes.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/values/colors.xml b/93pokies/src/main/res/values/colors.xml
new file mode 100644
index 0000000..059e9c0
--- /dev/null
+++ b/93pokies/src/main/res/values/colors.xml
@@ -0,0 +1,18 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #FFFFFFFF
+ #5c0401
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/values/strings.xml b/93pokies/src/main/res/values/strings.xml
new file mode 100644
index 0000000..49d3088
--- /dev/null
+++ b/93pokies/src/main/res/values/strings.xml
@@ -0,0 +1,74 @@
+
+ 93POKIES
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/values/themes.xml b/93pokies/src/main/res/values/themes.xml
new file mode 100644
index 0000000..efa2168
--- /dev/null
+++ b/93pokies/src/main/res/values/themes.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/xml/app_updater_paths.xml b/93pokies/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/93pokies/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/xml/network_security_config.xml b/93pokies/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/93pokies/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/main/res/xml/provider_paths.xml b/93pokies/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/93pokies/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/93pokies/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/93pokies/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/93pokies/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/9kelab/build.gradle b/9kelab/build.gradle
index 943e4eb..7180976 100644
--- a/9kelab/build.gradle
+++ b/9kelab/build.gradle
@@ -17,16 +17,16 @@ android {
}
signingConfigs {
debug {
- storeFile file('9kelab.jks')
- storePassword "android2014"
- keyAlias 'key0'
- keyPassword "android2014"
+ storeFile file('oyen.jks')
+ storePassword "dskj123456"
+ keyAlias 'oyen'
+ keyPassword "dskj123456"
}
release {
- storeFile file('9kelab.jks')
- storePassword "android2014"
- keyAlias 'key0'
- keyPassword "android2014"
+ storeFile file('oyen.jks')
+ storePassword "dskj123456"
+ keyAlias 'oyen'
+ keyPassword "dskj123456"
}
}
@@ -77,5 +77,5 @@ android {
}
dependencies {
- implementation project(path: ':base')
+ implementation project(path: ':base_no_music')
}
\ No newline at end of file
diff --git a/9kelab/oyen.jks b/9kelab/oyen.jks
new file mode 100644
index 0000000..9552acf
Binary files /dev/null and b/9kelab/oyen.jks differ
diff --git a/9kelab/src/main/java/com/web/kelab9/MainActivity2.java b/9kelab/src/main/java/com/web/kelab9/MainActivity2.java
index c6aaeb0..cb8b799 100644
--- a/9kelab/src/main/java/com/web/kelab9/MainActivity2.java
+++ b/9kelab/src/main/java/com/web/kelab9/MainActivity2.java
@@ -21,7 +21,16 @@ public class MainActivity2 extends com.web.base.MainActivity2 {
saveInt(MainActivity2.this,"version_code",getVersion());
MainActivity.saveString(this, "base_url", "https://9kelab1.com/");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#0299ec");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#131925");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity2.this,"is_white",1);
super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(false);
//订阅主题
FirebaseMessaging.getInstance().subscribeToTopic("demo")
.addOnCompleteListener(new OnCompleteListener() {
diff --git a/9kelab/src/main/res/drawable/big_bg.xml b/9kelab/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..7632f3d
--- /dev/null
+++ b/9kelab/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/9kelab/src/main/res/values-night/themes.xml b/9kelab/src/main/res/values-night/themes.xml
index 4bf7105..c1926fa 100644
--- a/9kelab/src/main/res/values-night/themes.xml
+++ b/9kelab/src/main/res/values-night/themes.xml
@@ -52,17 +52,17 @@
- false
- false
- @android:color/transparent
- - @color/white
- - @color/white
- - @color/white
+ - @color/main_color
+ - @color/main_color
+ - @color/main_color
- false
- true
- - @color/white
+ - @color/main_color
- - @color/white
+ - @color/main_color
- false
diff --git a/9kelab/src/main/res/values/colors.xml b/9kelab/src/main/res/values/colors.xml
index ec06067..b4775d6 100644
--- a/9kelab/src/main/res/values/colors.xml
+++ b/9kelab/src/main/res/values/colors.xml
@@ -9,6 +9,7 @@
#FFFFFFFF
#EF4723
#FFFFFFFF
+ #131925
#2C2C2E
#FFA722
diff --git a/9kelab/src/main/res/values/themes.xml b/9kelab/src/main/res/values/themes.xml
index a973841..5017572 100644
--- a/9kelab/src/main/res/values/themes.xml
+++ b/9kelab/src/main/res/values/themes.xml
@@ -54,17 +54,17 @@
- false
- false
- @android:color/transparent
- - @color/white
- - @color/white
- - @color/white
+ - @color/main_color
+ - @color/main_color
+ - @color/main_color
- false
- true
- - @color/white
+ - @color/main_color
- - @android:color/transparent
+ - @color/main_color
- false
- false
diff --git a/Bbj/build.gradle b/Bbj/build.gradle
index 5800ea2..b4c5bd1 100644
--- a/Bbj/build.gradle
+++ b/Bbj/build.gradle
@@ -92,5 +92,5 @@ android {
}
dependencies {
- implementation project(path: ':base')
+ implementation project(path: ':base_no_music')
}
\ No newline at end of file
diff --git a/Cashsweep/src/main/java/com/web/cashsweep/MyFirebaseMessageingService.java b/Cashsweep/src/main/java/com/web/cashsweep/MyFirebaseMessageingService.java
index 67f2eca..e736f40 100644
--- a/Cashsweep/src/main/java/com/web/cashsweep/MyFirebaseMessageingService.java
+++ b/Cashsweep/src/main/java/com/web/cashsweep/MyFirebaseMessageingService.java
@@ -83,14 +83,14 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
channelwinway.enableVibration(true);
notificationManager.createNotificationChannel(channelwinway);
notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(messageInfo.getTitle())
.setContentText(messageInfo.getContent())
.setAutoCancel(true)
.setContentIntent(pendingIntent);
} else {
notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(messageInfo.getTitle())
.setContentText(messageInfo.getContent())
.setAutoCancel(true)
@@ -129,14 +129,14 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
channelwinway.enableVibration(true);
notificationManager.createNotificationChannel(channelwinway);
notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
.setContentIntent(pendingIntent);
} else {
notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
diff --git a/Dmcslot/src/main/AndroidManifest.xml b/Dmcslot/src/main/AndroidManifest.xml
index fe88ffb..653c96a 100644
--- a/Dmcslot/src/main/AndroidManifest.xml
+++ b/Dmcslot/src/main/AndroidManifest.xml
@@ -28,10 +28,7 @@
-
-
+
@@ -62,32 +59,11 @@
android:usesCleartextTraffic="true">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -99,39 +75,7 @@
-
-
-
-
-
-
-
-
-
-
{
+ });
}
- public void setListener() {
- inputTextView = (TextView) findViewById(R.id.inputText);
- outputTextView = (TextView) findViewById(R.id.outputText);
- btn_0 = (Button) findViewById(R.id.btn_0);
- btn_0.setOnClickListener(this);
- btn_1 = (Button) findViewById(R.id.btn_1);
- btn_1.setOnClickListener(this);
- btn_2 = (Button) findViewById(R.id.btn_2);
- btn_2.setOnClickListener(this);
- btn_3 = (Button) findViewById(R.id.btn_3);
- btn_3.setOnClickListener(this);
- btn_4 = (Button) findViewById(R.id.btn_4);
- btn_4.setOnClickListener(this);
- btn_5 = (Button) findViewById(R.id.btn_5);
- btn_5.setOnClickListener(this);
- btn_6 = (Button) findViewById(R.id.btn_6);
- btn_6.setOnClickListener(this);
- btn_7 = (Button) findViewById(R.id.btn_7);
- btn_7.setOnClickListener(this);
- btn_8 = (Button) findViewById(R.id.btn_8);
- btn_8.setOnClickListener(this);
- btn_9 = (Button) findViewById(R.id.btn_9);
- btn_9.setOnClickListener(this);
- btn_point = (Button) findViewById(R.id.btn_point);
- btn_point.setOnClickListener(this);
- btn_equal = (Button) findViewById(R.id.btn_equal);
- btn_equal.setOnClickListener(this);
- btn_add = (Button) findViewById(R.id.btn_add);
- btn_add.setOnClickListener(this);
- btn_subtract = (Button) findViewById(R.id.btn_subtract);
- btn_subtract.setOnClickListener(this);
- btn_multiply = (Button) findViewById(R.id.btn_multiply);
- btn_multiply.setOnClickListener(this);
- btn_divide = (Button) findViewById(R.id.btn_divide);
- btn_divide.setOnClickListener(this);
- btn_backspace = (Button) findViewById(R.id.btn_backspace);
- btn_backspace.setOnClickListener(this);
- btn_clear = (Button) findViewById(R.id.btn_clear);
- btn_clear.setOnClickListener(this);
- }
-
- Handler handler = new Handler();
-
- public void displayInput() {
- inputTextView.setText(currentInput);
- if (currentInput.toString().equals(MainActivity.getString(MainActivity.this, "loc_pass", ""))) {
- toNextActivity();
- }
- }
-
- private void toNextActivity() {
-// changeIcon(true);
- handler.postDelayed(() -> {
- startActivity(new Intent(MainActivity.this, MainActivity2.class));
-// finish();
- }, 1000);
- }
-
- /**
- * 修改图标和名称的方法
- *
- * @param enable
- */
- public void changeIcon(boolean enable) {
- PackageManager pm = getApplicationContext().getPackageManager();
-
- if (enable) {
- //显示Test图标
- pm.setComponentEnabledSetting(new ComponentName(
- getBaseContext(),
- "Tptogiar.calculcator.MainActivityNew"),
- PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
- PackageManager.DONT_KILL_APP);
-
- //去掉HomeActivity图标
- pm.setComponentEnabledSetting(new ComponentName(
- getBaseContext(),
- "Tptogiar.calculcator.MainActivity"),
- PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
- PackageManager.DONT_KILL_APP);
- Log.d("TAG", "换Test的图标");
- } else {
- //去掉HomeActivity图标
- pm.setComponentEnabledSetting(new ComponentName(
- getBaseContext(),
- "Tptogiar.calculcator.MainActivity"),
- PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
- PackageManager.DONT_KILL_APP);
-
- //显示Test图标
- pm.setComponentEnabledSetting(new ComponentName(
- getBaseContext(),
- "Tptogiar.calculcator.Default"),
- PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
- PackageManager.DONT_KILL_APP);
-
-
- Log.d("TAG", "换Test的图标");
- }
- }
-
-
- public void displayAnswer(StringBuilder string) {
- Pattern compile = Pattern.compile("[^0-9.-]");
- StringBuilder result = new StringBuilder(compile.matcher(string).replaceAll(""));
- if (result.charAt(result.length() - 1) == '-') {
- System.out.println(result.charAt(result.length() - 1));
- result.deleteCharAt(result.length() - 1);
- }
- System.out.println(result);
- outputTextView.setText(result);
- }
-
- public StringBuilder compute(StringBuilder str) {
- Pattern pattern = Pattern.compile("([\\d.]+)\\s*([*/])\\s*([\\d.]+)");
- Matcher matcher = pattern.matcher(str.toString());
- while (matcher.find()) {
- BigDecimal first = BigDecimal.valueOf(Double.valueOf(matcher.group(1)));
- BigDecimal second = BigDecimal.valueOf(Double.valueOf(matcher.group(3)));
- switch (matcher.group(2)) {
- case "*":
- first = first.multiply(second);
- break;
- case "/":
- first = first.divide(second);
- break;
- }
- str.replace(matcher.start(), matcher.end(), first.toString());
- matcher.reset(str.toString());
- }
-
- pattern = Pattern.compile("([\\d.]+)\\s*([+-])\\s*([\\d.]+)");
- matcher = pattern.matcher(str.toString());
- while (matcher.find()) {
- BigDecimal first = BigDecimal.valueOf(Double.valueOf(matcher.group(1)));
- BigDecimal second = BigDecimal.valueOf(Double.valueOf(matcher.group(3)));
- switch (matcher.group(2)) {
- case "+":
- first = first.add(second);
- break;
- case "-":
- first = first.subtract(second);
- break;
-
- }
- str.replace(matcher.start(), matcher.end(), first.toString());
- matcher.reset(str.toString());
- }
- return str;
- }
-
- public void addInput(String string) {
- if (hasCount == false) {
- currentInput.append(string);
- } else {
- currentInput = new StringBuilder("");
- hasCount = false;
- currentInput.append(string);
- }
- displayInput();
- }
-
-
- public String GETHASH() {
+ public int getVersion(){
try {
- String value = "" + "";
- MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
- byte[] bytes = messageDigest.digest(value.getBytes(StandardCharsets.UTF_8));
- return byteToString(bytes);
- } catch (NoSuchAlgorithmException e) {
- return "";
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
}
}
-
- public String byteToString(byte[] bytes) {
- StringBuilder stringBuilder = new StringBuilder();
- for (int i = 0; i < bytes.length; i++) {
- String hexString = Integer.toHexString(0xff & bytes[i]);
- if (hexString.length() == 1) {
- stringBuilder.append("0");
- }
- stringBuilder.append(hexString);
- }
- return stringBuilder.toString();
- }
-
-
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.btn_0:
- addInput("0");
- break;
- case R.id.btn_1:
- addInput("1");
- break;
- case R.id.btn_2:
- addInput("2");
- break;
- case R.id.btn_3:
- addInput("3");
- break;
- case R.id.btn_4:
- addInput("4");
- break;
- case R.id.btn_5:
- addInput("5");
- break;
- case R.id.btn_6:
- addInput("6");
- break;
- case R.id.btn_7:
- addInput("7");
- break;
- case R.id.btn_8:
- addInput("8");
- break;
- case R.id.btn_9:
- addInput("9");
- break;
- case R.id.btn_point:
- addInput(".");
- break;
- case R.id.btn_add:
- addInput("+");
- break;
- case R.id.btn_subtract:
- addInput("-");
- break;
- case R.id.btn_multiply:
- addInput("*");
- break;
- case R.id.btn_divide:
- addInput("/");
- break;
- case R.id.btn_backspace:
- if (currentInput.length() > 0) {
- currentInput.deleteCharAt(currentInput.length() - 1);
- }
- displayInput();
- break;
- case R.id.btn_clear:
- currentInput = new StringBuilder("");
- displayInput();
- outputTextView.setText("");
- break;
- case R.id.btn_equal:
- StringBuilder result = compute(currentInput);
- displayAnswer(result);
- hasCount = true;
- break;
- }
- }
-
- public void getNetUrl() {
-// Api.getInstance().geUrl(System.currentTimeMillis())
-// .subscribeOn(Schedulers.io())
-// .observeOn(AndroidSchedulers.mainThread())
-// .subscribe(new BaseObserver() {
-// @Override
-// public void onSuccess(Result o) {
-// LogUtils.i("获取的文件地址:"+o.url);
-// if(!TextUtils.isEmpty(o.url)){
-// saveString(MainActivity.this,"base_url",o.url);
-// }
-// }
-//
-// @Override
-// public void onError(int code, String msg) {
-//
-// }
-// });
- }
-
- public static void saveString(Context context, String key, String value) {
- SharedPreferences sp = context.getSharedPreferences("InitApp", Activity.MODE_PRIVATE);
- SharedPreferences.Editor editor = sp.edit();
- editor.putString(key, value);
- editor.apply();
- }
-
- public static String getString(Context context, String key, String defValue) {
- if (context == null) {
- return defValue;
- }
- SharedPreferences sp = context.getSharedPreferences("InitApp", Activity.MODE_PRIVATE);
- return sp.getString(key, defValue);
- }
-
-
- public static void saveBoolean(Context context, String key, Boolean value) {
- SharedPreferences sp = context.getSharedPreferences("InitApp", Activity.MODE_PRIVATE);
- SharedPreferences.Editor editor = sp.edit();
- editor.putBoolean(key, value);
- editor.apply();
- }
-
- public static Boolean getBoolean(Context context, String key, Boolean defValue) {
- if (context == null) {
- return defValue;
- }
- SharedPreferences sp = context.getSharedPreferences("InitApp", Activity.MODE_PRIVATE);
- return sp.getBoolean(key, defValue);
- }
-
-}
\ No newline at end of file
+}
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/MyFirebaseMessageingService.java b/Dmcslot/src/main/java/com/web/dmcslot/MyFirebaseMessageingService.java
index e426ed0..00df20e 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/MyFirebaseMessageingService.java
+++ b/Dmcslot/src/main/java/com/web/dmcslot/MyFirebaseMessageingService.java
@@ -1,17 +1,12 @@
package com.web.dmcslot;
-import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.ComponentName;
-import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
-import android.content.SharedPreferences;
-import android.net.Uri;
import android.os.Build;
-import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
@@ -19,6 +14,8 @@ import androidx.core.app.NotificationCompat;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import com.google.gson.Gson;
+import com.web.base.GsonUtils;
+import com.web.base.MessageInfo;
import java.util.Map;
import java.util.Random;
@@ -37,21 +34,16 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
Gson gson = new Gson();
MessageInfo messageInfo = gson.fromJson(value, MessageInfo.class);
showNotification(messageInfo);
-// if (remoteMessage.getNotification() != null) {
-// showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
-// }
} else {
//收到通知 创建notify
if (remoteMessage.getNotification() != null) {
showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
}
}
-
-
}
private void showNotification(MessageInfo messageInfo) {
- Intent notifyIntent = new Intent(this, MainActivity2.class);
+ Intent notifyIntent = new Intent(this, MainActivity.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
ComponentName launchComponent = null;
launchComponent = getApplication()
@@ -60,28 +52,16 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
.getComponent();
notifyIntent.setComponent(launchComponent);
}
-
notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
notifyIntent.setAction(Intent.ACTION_VIEW);
notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
notifyIntent.putExtra("message", messageInfo);
-
PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
-
-// Intent notifyIntent = new Intent(this, MainActivity2.class);
-// notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
-// // notifyIntent.putExtra("message", messageInfo);
-// notifyIntent.setAction(Intent.ACTION_VIEW);
-// notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
-// PendingIntent pendingIntent;
-// pendingIntent = PendingIntent.getActivity
-// (this, 0, notifyIntent, PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE);
-
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel channelwinway = null;
NotificationCompat.Builder notificationBuilder = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- channelwinway = new NotificationChannel(getString(R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
channelwinway.enableLights(true);
channelwinway.enableVibration(true);
notificationManager.createNotificationChannel(channelwinway);
@@ -92,7 +72,7 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
.setAutoCancel(true)
.setContentIntent(pendingIntent);
} else {
- notificationBuilder = new NotificationCompat.Builder(this, getString(R.string.app_name))
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
.setSmallIcon(R.mipmap.app_logo)
.setContentTitle(messageInfo.getTitle())
.setContentText(messageInfo.getContent())
@@ -103,7 +83,7 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
}
private void showNotification(String title, String body) {
- Intent notifyIntent = new Intent(this, MainActivity2.class);
+ Intent notifyIntent = new Intent(this, MainActivity.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
ComponentName launchComponent = null;
launchComponent = getApplication()
@@ -116,8 +96,6 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
notifyIntent.setAction(Intent.ACTION_VIEW);
notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
-
-
PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel channelwinway = null;
@@ -127,7 +105,7 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
body = messageInfo.getContent();
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- channelwinway = new NotificationChannel(getString(R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
channelwinway.enableLights(true);
channelwinway.enableVibration(true);
notificationManager.createNotificationChannel(channelwinway);
@@ -138,7 +116,7 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
.setAutoCancel(true)
.setContentIntent(pendingIntent);
} else {
- notificationBuilder = new NotificationCompat.Builder(this, getString(R.string.app_name))
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
.setSmallIcon(R.mipmap.app_logo)
.setContentTitle(title)
.setContentText(body)
@@ -146,29 +124,5 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
.setContentIntent(pendingIntent);
}
notificationManager.notify(0, notificationBuilder.build());
- //存储数据
- // saveNotifyMessage(body);
}
-
-
-// public void saveNotifyMessage(String body) {
-// MessageInfo messageInfo = GsonUtils.getObjFromJSON(body, MessageInfo.class);
-// String savenotify = Utils.get(getApplication(),ApiService.savenotify,"");
-// if(messageInfo!=null){
-// if(TextUtils.isEmpty(savenotify)){
-// GsonUtils.getListFromJSON(savenotify,)
-// }
-// }
-// String jsonString = GsonUtils.beanToJSONString(chatMessageBeans);
-// }
-//
-// /**
-// * @param key 要设置的key
-// */
-// public static void set(Context activity, String key, String is) {
-// SharedPreferences nameSetting = getConfigShared(activity);
-// SharedPreferences.Editor namePref = nameSetting.edit();
-// namePref.putString(key, is);
-// namePref.commit();
-// }
}
diff --git a/Dmcslot/src/main/res/drawable/big_bg.xml b/Dmcslot/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..54f47df
--- /dev/null
+++ b/Dmcslot/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/Gdslot888/src/main/java/com/web/gdslot888/MyFirebaseMessageingService.java b/Gdslot888/src/main/java/com/web/gdslot888/MyFirebaseMessageingService.java
index 59b4c7b..69d29a2 100644
--- a/Gdslot888/src/main/java/com/web/gdslot888/MyFirebaseMessageingService.java
+++ b/Gdslot888/src/main/java/com/web/gdslot888/MyFirebaseMessageingService.java
@@ -83,14 +83,14 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
channelwinway.enableVibration(true);
notificationManager.createNotificationChannel(channelwinway);
notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(messageInfo.getTitle())
.setContentText(messageInfo.getContent())
.setAutoCancel(true)
.setContentIntent(pendingIntent);
} else {
notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(messageInfo.getTitle())
.setContentText(messageInfo.getContent())
.setAutoCancel(true)
@@ -129,14 +129,14 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
channelwinway.enableVibration(true);
notificationManager.createNotificationChannel(channelwinway);
notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
.setContentIntent(pendingIntent);
} else {
notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
diff --git a/Judy88/src/main/java/com/web/judy88/MainActivity2.java b/Judy88/src/main/java/com/web/judy88/MainActivity2.java
index 953797e..0910f5e 100644
--- a/Judy88/src/main/java/com/web/judy88/MainActivity2.java
+++ b/Judy88/src/main/java/com/web/judy88/MainActivity2.java
@@ -20,8 +20,16 @@ public class MainActivity2 extends com.web.base.MainActivity2 {
saveInt(MainActivity2.this,"user_code",userId);
saveInt(MainActivity2.this,"version_code",getVersion());
MainActivity.saveString(this, "base_url","https://judy88.online/");
-
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#fde610");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#fae12c");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity2.this,"is_white",0);
super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(false);
//订阅主题
FirebaseMessaging.getInstance().subscribeToTopic("demo")
.addOnCompleteListener(new OnCompleteListener() {
diff --git a/Judy88/src/main/res/drawable/big_bg.xml b/Judy88/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..ab2f4d6
--- /dev/null
+++ b/Judy88/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/Judy88/src/main/res/mipmap-xxhdpi/app_logo.png b/Judy88/src/main/res/mipmap-xxhdpi/app_logo.png
index 5c8ccd0..2783f2c 100644
Binary files a/Judy88/src/main/res/mipmap-xxhdpi/app_logo.png and b/Judy88/src/main/res/mipmap-xxhdpi/app_logo.png differ
diff --git a/Judy88/src/main/res/values-night/themes.xml b/Judy88/src/main/res/values-night/themes.xml
index 4bf7105..00f8f17 100644
--- a/Judy88/src/main/res/values-night/themes.xml
+++ b/Judy88/src/main/res/values-night/themes.xml
@@ -60,9 +60,9 @@
- true
- - @color/white
+ - @color/main_color
- - @color/white
+ - @color/main_color
- false
diff --git a/Judy88/src/main/res/values/colors.xml b/Judy88/src/main/res/values/colors.xml
index ec06067..e86fc3e 100644
--- a/Judy88/src/main/res/values/colors.xml
+++ b/Judy88/src/main/res/values/colors.xml
@@ -9,7 +9,7 @@
#FFFFFFFF
#EF4723
#FFFFFFFF
-
+ #fae12c
#2C2C2E
#FFA722
#434343
diff --git a/Judy88/src/main/res/values/themes.xml b/Judy88/src/main/res/values/themes.xml
index a973841..33fbf32 100644
--- a/Judy88/src/main/res/values/themes.xml
+++ b/Judy88/src/main/res/values/themes.xml
@@ -62,9 +62,9 @@
- true
- - @color/white
+ - @color/main_color
- - @android:color/transparent
+ - @color/main_color
- false
- false
diff --git a/Magnum888/src/main/java/com/web/magnum888/MyFirebaseMessageingService.java b/Magnum888/src/main/java/com/web/magnum888/MyFirebaseMessageingService.java
index 0031a0b..d234029 100644
--- a/Magnum888/src/main/java/com/web/magnum888/MyFirebaseMessageingService.java
+++ b/Magnum888/src/main/java/com/web/magnum888/MyFirebaseMessageingService.java
@@ -83,14 +83,14 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
channelwinway.enableVibration(true);
notificationManager.createNotificationChannel(channelwinway);
notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(messageInfo.getTitle())
.setContentText(messageInfo.getContent())
.setAutoCancel(true)
.setContentIntent(pendingIntent);
} else {
notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(messageInfo.getTitle())
.setContentText(messageInfo.getContent())
.setAutoCancel(true)
@@ -129,14 +129,14 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
channelwinway.enableVibration(true);
notificationManager.createNotificationChannel(channelwinway);
notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
.setContentIntent(pendingIntent);
} else {
notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
diff --git a/Mahkota8/google-services.json b/Mahkota8/google-services.json
index 397c322..b59c529 100644
--- a/Mahkota8/google-services.json
+++ b/Mahkota8/google-services.json
@@ -1,13 +1,13 @@
{
"project_info": {
- "project_number": "643424299568",
- "project_id": "mahkota8-186da",
- "storage_bucket": "mahkota8-186da.firebasestorage.app"
+ "project_number": "918799210650",
+ "project_id": "mahkota8-d3760",
+ "storage_bucket": "mahkota8-d3760.firebasestorage.app"
},
"client": [
{
"client_info": {
- "mobilesdk_app_id": "1:643424299568:android:7ef0cd13dc9175bafb9bf5",
+ "mobilesdk_app_id": "1:918799210650:android:1b3d8d1288fb789c322723",
"android_client_info": {
"package_name": "com.web.MAHKOTA8"
}
@@ -15,7 +15,7 @@
"oauth_client": [],
"api_key": [
{
- "current_key": "AIzaSyBuleiR8aPa6Dt3kevaK4wtSoYck31s8AU"
+ "current_key": "AIzaSyCMYRmt5pY4NpXQzZkaOIWODyyUw2AIO1Q"
}
],
"services": {
diff --git a/Mahkota8/src/main/java/com/web/MAHKOTA8/MainActivity2.java b/Mahkota8/src/main/java/com/web/MAHKOTA8/MainActivity2.java
index 2deebb8..0da04a0 100644
--- a/Mahkota8/src/main/java/com/web/MAHKOTA8/MainActivity2.java
+++ b/Mahkota8/src/main/java/com/web/MAHKOTA8/MainActivity2.java
@@ -10,6 +10,7 @@ import androidx.annotation.NonNull;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.messaging.FirebaseMessaging;
+import com.web.base.LogUtils;
import com.web.base.MainActivity;
public class MainActivity2 extends com.web.base.MainActivity2 {
@@ -20,20 +21,26 @@ public class MainActivity2 extends com.web.base.MainActivity2 {
saveInt(MainActivity2.this,"user_code",userId);
saveInt(MainActivity2.this,"version_code",getVersion());
MainActivity.saveString(this, "base_url", "https://www.mahkota8b.com/");
-
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#f7db4b");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#f7db4b");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity2.this,"is_white",0);
super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(false);
//订阅主题
FirebaseMessaging.getInstance().subscribeToTopic("demo")
- .addOnCompleteListener(new OnCompleteListener() {
- @Override
- public void onComplete(@NonNull Task task) {
- String msg = "Subscribed";
- if (!task.isSuccessful()) {
- msg = "Subscribe failed";
- }
-
+ .addOnCompleteListener(task -> {
+ String msg = "Subscribed";
+ if (!task.isSuccessful()) {
+ msg = "Subscribe failed";
}
+ LogUtils.i("结果:"+msg);
});
+
}
public int getVersion(){
diff --git a/Mahkota8/src/main/res/drawable/big_bg.xml b/Mahkota8/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..7e15d47
--- /dev/null
+++ b/Mahkota8/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/Mahkota8/src/main/res/mipmap-xxhdpi/app_logo.png b/Mahkota8/src/main/res/mipmap-xxhdpi/app_logo.png
index a4e5047..0fcbb17 100644
Binary files a/Mahkota8/src/main/res/mipmap-xxhdpi/app_logo.png and b/Mahkota8/src/main/res/mipmap-xxhdpi/app_logo.png differ
diff --git a/Mahkota8/src/main/res/values-en/strings.xml b/Mahkota8/src/main/res/values-en/strings.xml
index a5d300d..3189c73 100644
--- a/Mahkota8/src/main/res/values-en/strings.xml
+++ b/Mahkota8/src/main/res/values-en/strings.xml
@@ -1,5 +1,5 @@
- MAHKOTA8
+ Mahkota8
Please Set Your Password
Cancel
Sure
diff --git a/Mahkota8/src/main/res/values/strings.xml b/Mahkota8/src/main/res/values/strings.xml
index 88897f2..b139af2 100644
--- a/Mahkota8/src/main/res/values/strings.xml
+++ b/Mahkota8/src/main/res/values/strings.xml
@@ -1,5 +1,5 @@
- MAHKOTA8
+ Mahkota8
请输入6位密码
取消
确定
diff --git a/Mko888/src/main/java/com/web/MKO888/MyFirebaseMessageingService.java b/Mko888/src/main/java/com/web/MKO888/MyFirebaseMessageingService.java
index 703d0aa..5e83875 100644
--- a/Mko888/src/main/java/com/web/MKO888/MyFirebaseMessageingService.java
+++ b/Mko888/src/main/java/com/web/MKO888/MyFirebaseMessageingService.java
@@ -83,14 +83,14 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
channelwinway.enableVibration(true);
notificationManager.createNotificationChannel(channelwinway);
notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(messageInfo.getTitle())
.setContentText(messageInfo.getContent())
.setAutoCancel(true)
.setContentIntent(pendingIntent);
} else {
notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(messageInfo.getTitle())
.setContentText(messageInfo.getContent())
.setAutoCancel(true)
@@ -129,14 +129,14 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
channelwinway.enableVibration(true);
notificationManager.createNotificationChannel(channelwinway);
notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
.setContentIntent(pendingIntent);
} else {
notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(com.web.base.R.mipmap.ic_email)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
diff --git a/Oyen333/Oyen333.jks b/Oyen333/Oyen333.jks
index 5685015..e529d5b 100644
Binary files a/Oyen333/Oyen333.jks and b/Oyen333/Oyen333.jks differ
diff --git a/Oyen333/build.gradle b/Oyen333/build.gradle
index 0410f24..c53a1a9 100644
--- a/Oyen333/build.gradle
+++ b/Oyen333/build.gradle
@@ -20,15 +20,15 @@ android {
signingConfigs {
debug {
- storeFile file('Oyen333.jks')
+ storeFile file('oyen.jks')
storePassword "dskj123456"
- keyAlias 'key0'
+ keyAlias 'oyen'
keyPassword "dskj123456"
}
release {
- storeFile file('Oyen333.jks')
+ storeFile file('oyen.jks')
storePassword "dskj123456"
- keyAlias 'key0'
+ keyAlias 'oyen'
keyPassword "dskj123456"
}
}
diff --git a/Oyen333/oyen.jks b/Oyen333/oyen.jks
new file mode 100644
index 0000000..9552acf
Binary files /dev/null and b/Oyen333/oyen.jks differ
diff --git a/Oyen333/release/Oyen333.apk b/Oyen333/release/Oyen333.apk
index d2f2ff0..35eceeb 100644
Binary files a/Oyen333/release/Oyen333.apk and b/Oyen333/release/Oyen333.apk differ
diff --git a/Oyen333/release/output-metadata.json b/Oyen333/release/output-metadata.json
index ed91043..7375ed8 100644
--- a/Oyen333/release/output-metadata.json
+++ b/Oyen333/release/output-metadata.json
@@ -10,9 +10,9 @@
{
"type": "SINGLE",
"filters": [],
- "versionCode": 106,
- "versionName": "v1.0.6",
- "outputFile": "Oyen333-release.apk"
+ "versionCode": 120,
+ "versionName": "v1.2.0",
+ "outputFile": "Oyen333.apk"
}
]
}
\ No newline at end of file
diff --git a/Oyen333/src/main/java/com/web/Oyen333/MainActivity2.java b/Oyen333/src/main/java/com/web/Oyen333/MainActivity2.java
index 86cc8e1..0875548 100644
--- a/Oyen333/src/main/java/com/web/Oyen333/MainActivity2.java
+++ b/Oyen333/src/main/java/com/web/Oyen333/MainActivity2.java
@@ -21,7 +21,15 @@ public class MainActivity2 extends com.web.base.MainActivity2 {
saveInt(MainActivity2.this,"version_code",getVersion());
MainActivity.saveString(this, "base_url","https://oyen333.store/");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#fa5805");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#422d1b");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity2.this,"is_white",1);
super.onCreate(savedInstanceState);
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(true);
//订阅主题
FirebaseMessaging.getInstance().subscribeToTopic("demo")
.addOnCompleteListener(new OnCompleteListener() {
diff --git a/Oyen333/src/main/res/drawable/big_bg.xml b/Oyen333/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..afc53f5
--- /dev/null
+++ b/Oyen333/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/Oyen333/src/main/res/values-night/themes.xml b/Oyen333/src/main/res/values-night/themes.xml
index 4bf7105..cdf93f4 100644
--- a/Oyen333/src/main/res/values-night/themes.xml
+++ b/Oyen333/src/main/res/values-night/themes.xml
@@ -60,9 +60,9 @@
- true
- - @color/white
+ - @drawable/big_bg
- - @color/white
+ - @color/main_color
- false
diff --git a/Oyen333/src/main/res/values/colors.xml b/Oyen333/src/main/res/values/colors.xml
index 7895913..eb86813 100644
--- a/Oyen333/src/main/res/values/colors.xml
+++ b/Oyen333/src/main/res/values/colors.xml
@@ -9,6 +9,7 @@
#FFFFFFFF
#EF4723
#FFFFFFFF
+ #fa5805
#2C2C2E
#FFA722
diff --git a/Oyen333/src/main/res/values/themes.xml b/Oyen333/src/main/res/values/themes.xml
index e47899f..bcb6011 100644
--- a/Oyen333/src/main/res/values/themes.xml
+++ b/Oyen333/src/main/res/values/themes.xml
@@ -62,9 +62,9 @@
- true
- - @color/white
+ - @drawable/big_bg
- - @color/white
+ - @color/main_color
- false
diff --git a/Petron777/build.gradle b/Petron777/build.gradle
index 85d050f..47b3906 100644
--- a/Petron777/build.gradle
+++ b/Petron777/build.gradle
@@ -20,16 +20,16 @@ android {
signingConfigs {
debug {
- storeFile file('petron777.jks')
- storePassword "android2014"
- keyAlias 'key0'
- keyPassword "android2014"
+ storeFile file('oyen.jks')
+ storePassword "dskj123456"
+ keyAlias 'oyen'
+ keyPassword "dskj123456"
}
release {
- storeFile file('petron777.jks')
- storePassword "android2014"
- keyAlias 'key0'
- keyPassword "android2014"
+ storeFile file('oyen.jks')
+ storePassword "dskj123456"
+ keyAlias 'oyen'
+ keyPassword "dskj123456"
}
}
buildTypes {
diff --git a/Petron777/oyen.jks b/Petron777/oyen.jks
new file mode 100644
index 0000000..9552acf
Binary files /dev/null and b/Petron777/oyen.jks differ
diff --git a/Petron777/src/main/java/com/web/petron777/MyFirebaseMessageingService.java b/Petron777/src/main/java/com/web/petron777/MyFirebaseMessageingService.java
index d5022db..293f97d 100644
--- a/Petron777/src/main/java/com/web/petron777/MyFirebaseMessageingService.java
+++ b/Petron777/src/main/java/com/web/petron777/MyFirebaseMessageingService.java
@@ -83,14 +83,14 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
channelwinway.enableVibration(true);
notificationManager.createNotificationChannel(channelwinway);
notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(R.mipmap.app_logo)
.setContentTitle(messageInfo.getTitle())
.setContentText(messageInfo.getContent())
.setAutoCancel(true)
.setContentIntent(pendingIntent);
} else {
notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(R.mipmap.app_logo)
.setContentTitle(messageInfo.getTitle())
.setContentText(messageInfo.getContent())
.setAutoCancel(true)
@@ -129,14 +129,14 @@ public class MyFirebaseMessageingService extends FirebaseMessagingService {
channelwinway.enableVibration(true);
notificationManager.createNotificationChannel(channelwinway);
notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(R.mipmap.app_logo)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
.setContentIntent(pendingIntent);
} else {
notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
- .setSmallIcon(com.web.base.R.mipmap.ic_launcher)
+ .setSmallIcon(R.mipmap.app_logo)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
diff --git a/README.md b/README.md
index cf045b6..d935790 100644
--- a/README.md
+++ b/README.md
@@ -42,4 +42,31 @@
12.单个app打包命令 Gradle/app名字/Tasks/build/assemble
+
+# V1.2.8 2025年12月22日 start 简化配置逻辑流程
+
+1.覆盖 google-servicces.json
+
+2.修改build.gradle你的包名 和 打包名字
+
+3.修改 java包名的目录结构
+
+4.修改app_logo 图片
+
+5.修改 app_config.xml的配置项
+
+需要修改的配置项都在这里面 app_config.xml
+
+ MAUCUCI
+ 230
+ https://maucuci.club/
+ 1
+ 0
+ #1251a1
+ #fdc002
+
+6.项目继承 base_theme 丢弃之前的 base_no_music
+
+
+
\ No newline at end of file
diff --git a/afb77au/.gitignore b/afb77au/.gitignore
new file mode 100644
index 0000000..956c004
--- /dev/null
+++ b/afb77au/.gitignore
@@ -0,0 +1,2 @@
+/build
+/release
\ No newline at end of file
diff --git a/afb77au/build.gradle b/afb77au/build.gradle
new file mode 100644
index 0000000..d3b5dfc
--- /dev/null
+++ b/afb77au/build.gradle
@@ -0,0 +1,78 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.xyz.afb77au"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+ debug {
+ storeFile file('ppn.jks')
+ storePassword "2014123456"
+ keyAlias 'key0'
+ keyPassword "2014123456"
+ }
+ release {
+ storeFile file('ppn.jks')
+ storePassword "2014123456"
+ keyAlias 'key0'
+ keyPassword "2014123456"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "afb77au"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_no_music')
+}
\ No newline at end of file
diff --git a/afb77au/google-services.json b/afb77au/google-services.json
new file mode 100644
index 0000000..e2d1d72
--- /dev/null
+++ b/afb77au/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "96100481294",
+ "project_id": "notiaf4b",
+ "storage_bucket": "notiaf4b.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:96100481294:android:3f23e67f07d110d215bf5f",
+ "android_client_info": {
+ "package_name": "com.xyz.afb77au"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyDhI18q_PSnh-2VMmk2U53wW5HfzblJ1-Q"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/afb77au/ppn.jks b/afb77au/ppn.jks
new file mode 100644
index 0000000..5898029
Binary files /dev/null and b/afb77au/ppn.jks differ
diff --git a/afb77au/proguard-rules.pro b/afb77au/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/afb77au/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/afb77au/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/afb77au/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/afb77au/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/ttslot888new/nep88/src/main/AndroidManifest.xml b/afb77au/src/main/AndroidManifest.xml
similarity index 99%
rename from ttslot888new/nep88/src/main/AndroidManifest.xml
rename to afb77au/src/main/AndroidManifest.xml
index d0d9811..e4c597a 100644
--- a/ttslot888new/nep88/src/main/AndroidManifest.xml
+++ b/afb77au/src/main/AndroidManifest.xml
@@ -1,6 +1,6 @@
+ package="com.xyz.afb77au">
{
+ });
+ }
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/afb77au/src/main/java/com/xyz/afb77au/MyFirebaseMessageingService.java b/afb77au/src/main/java/com/xyz/afb77au/MyFirebaseMessageingService.java
new file mode 100644
index 0000000..e5049d8
--- /dev/null
+++ b/afb77au/src/main/java/com/xyz/afb77au/MyFirebaseMessageingService.java
@@ -0,0 +1,125 @@
+package com.xyz.afb77au;
+
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import com.google.firebase.messaging.FirebaseMessagingService;
+import com.google.firebase.messaging.RemoteMessage;
+import com.google.gson.Gson;
+import com.web.base.GsonUtils;
+import com.web.base.MessageInfo;
+import java.util.Map;
+import java.util.Random;
+
+public class MyFirebaseMessageingService extends FirebaseMessagingService {
+
+ public MyFirebaseMessageingService() {
+ }
+
+ @Override
+ public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
+ super.onMessageReceived(remoteMessage);
+ Map serviceData = remoteMessage.getData(); //后台推送数据
+ if (serviceData != null && serviceData.containsKey("message")) {
+ String value = serviceData.get("message");
+ Gson gson = new Gson();
+ MessageInfo messageInfo = gson.fromJson(value, MessageInfo.class);
+ showNotification(messageInfo);
+ } else {
+ //收到通知 创建notify
+ if (remoteMessage.getNotification() != null) {
+ showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
+ }
+ }
+ }
+
+ private void showNotification(MessageInfo messageInfo) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ notifyIntent.putExtra("message", messageInfo);
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+
+ private void showNotification(String title, String body) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.putExtra("message", body);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ MessageInfo messageInfo = GsonUtils.getObjFromJSON(body, MessageInfo.class);
+ if (messageInfo != null) {
+ body = messageInfo.getContent();
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+}
diff --git a/afb77au/src/main/java/com/xyz/afb77au/WebApplication.java b/afb77au/src/main/java/com/xyz/afb77au/WebApplication.java
new file mode 100644
index 0000000..0b82565
--- /dev/null
+++ b/afb77au/src/main/java/com/xyz/afb77au/WebApplication.java
@@ -0,0 +1,35 @@
+package com.xyz.afb77au;
+
+import android.app.Application;
+import android.content.Context;
+import com.tencent.smtt.export.external.TbsCoreSettings;
+import com.tencent.smtt.sdk.QbSdk;
+import java.util.HashMap;
+
+public class WebApplication extends Application {
+
+
+ public static Context application;
+ @Override
+ public void onCreate() {
+ super.onCreate();
+// 设置开启优化方案
+ application = this;
+ HashMap map = new HashMap();
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
+ QbSdk.initTbsSettings(map);
+ QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
+ @Override
+ public void onCoreInitFinished() {
+
+ }
+
+ @Override
+ public void onViewInitFinished(boolean b) {
+
+ }
+ });
+ QbSdk.setDownloadWithoutWifi(true);
+ }
+}
diff --git a/afb77au/src/main/res/drawable-anydpi/ic_action_back.xml b/afb77au/src/main/res/drawable-anydpi/ic_action_back.xml
new file mode 100644
index 0000000..013ab07
--- /dev/null
+++ b/afb77au/src/main/res/drawable-anydpi/ic_action_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/afb77au/src/main/res/drawable-hdpi/ic_action_back.png b/afb77au/src/main/res/drawable-hdpi/ic_action_back.png
new file mode 100644
index 0000000..1560c04
Binary files /dev/null and b/afb77au/src/main/res/drawable-hdpi/ic_action_back.png differ
diff --git a/afb77au/src/main/res/drawable-mdpi/ic_action_back.png b/afb77au/src/main/res/drawable-mdpi/ic_action_back.png
new file mode 100644
index 0000000..d5841d2
Binary files /dev/null and b/afb77au/src/main/res/drawable-mdpi/ic_action_back.png differ
diff --git a/afb77au/src/main/res/drawable-v24/ic_launcher_foreground.xml b/afb77au/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/afb77au/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afb77au/src/main/res/drawable-xhdpi/ic_action_back.png b/afb77au/src/main/res/drawable-xhdpi/ic_action_back.png
new file mode 100644
index 0000000..5c14e41
Binary files /dev/null and b/afb77au/src/main/res/drawable-xhdpi/ic_action_back.png differ
diff --git a/afb77au/src/main/res/drawable-xxhdpi/ic_action_back.png b/afb77au/src/main/res/drawable-xxhdpi/ic_action_back.png
new file mode 100644
index 0000000..0516d08
Binary files /dev/null and b/afb77au/src/main/res/drawable-xxhdpi/ic_action_back.png differ
diff --git a/afb77au/src/main/res/drawable/big_bg.xml b/afb77au/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..50ee758
--- /dev/null
+++ b/afb77au/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/afb77au/src/main/res/drawable/ic_launcher_background.xml b/afb77au/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/afb77au/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/afb77au/src/main/res/drawable/input_bg.xml b/afb77au/src/main/res/drawable/input_bg.xml
new file mode 100644
index 0000000..4e895aa
--- /dev/null
+++ b/afb77au/src/main/res/drawable/input_bg.xml
@@ -0,0 +1,20 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/afb77au/src/main/res/drawable/pass_word_bg.xml b/afb77au/src/main/res/drawable/pass_word_bg.xml
new file mode 100644
index 0000000..2724e60
--- /dev/null
+++ b/afb77au/src/main/res/drawable/pass_word_bg.xml
@@ -0,0 +1,28 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/afb77au/src/main/res/drawable/pass_word_bg1.xml b/afb77au/src/main/res/drawable/pass_word_bg1.xml
new file mode 100644
index 0000000..d10d780
--- /dev/null
+++ b/afb77au/src/main/res/drawable/pass_word_bg1.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afb77au/src/main/res/drawable/pass_word_bg2.xml b/afb77au/src/main/res/drawable/pass_word_bg2.xml
new file mode 100644
index 0000000..916d99c
--- /dev/null
+++ b/afb77au/src/main/res/drawable/pass_word_bg2.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afb77au/src/main/res/drawable/shape_btn_bg.xml b/afb77au/src/main/res/drawable/shape_btn_bg.xml
new file mode 100644
index 0000000..af87a0d
--- /dev/null
+++ b/afb77au/src/main/res/drawable/shape_btn_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/afb77au/src/main/res/drawable/shape_dialog_bg2.xml b/afb77au/src/main/res/drawable/shape_dialog_bg2.xml
new file mode 100644
index 0000000..7837a42
--- /dev/null
+++ b/afb77au/src/main/res/drawable/shape_dialog_bg2.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/afb77au/src/main/res/drawable/shape_dialog_bg3.xml b/afb77au/src/main/res/drawable/shape_dialog_bg3.xml
new file mode 100644
index 0000000..ca0a18d
--- /dev/null
+++ b/afb77au/src/main/res/drawable/shape_dialog_bg3.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/afb77au/src/main/res/drawable/shape_dialog_bg_new.xml b/afb77au/src/main/res/drawable/shape_dialog_bg_new.xml
new file mode 100644
index 0000000..e96d4e0
--- /dev/null
+++ b/afb77au/src/main/res/drawable/shape_dialog_bg_new.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/afb77au/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/afb77au/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/afb77au/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/afb77au/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/afb77au/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/afb77au/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/afb77au/src/main/res/mipmap-hdpi/ic_empty.png b/afb77au/src/main/res/mipmap-hdpi/ic_empty.png
new file mode 100644
index 0000000..72473d6
Binary files /dev/null and b/afb77au/src/main/res/mipmap-hdpi/ic_empty.png differ
diff --git a/afb77au/src/main/res/mipmap-hdpi/ic_pull_down.png b/afb77au/src/main/res/mipmap-hdpi/ic_pull_down.png
new file mode 100644
index 0000000..7dc0ec3
Binary files /dev/null and b/afb77au/src/main/res/mipmap-hdpi/ic_pull_down.png differ
diff --git a/afb77au/src/main/res/mipmap-xhdpi/ic_close.png b/afb77au/src/main/res/mipmap-xhdpi/ic_close.png
new file mode 100644
index 0000000..c0b0127
Binary files /dev/null and b/afb77au/src/main/res/mipmap-xhdpi/ic_close.png differ
diff --git a/afb77au/src/main/res/mipmap-xhdpi/ic_menu.png b/afb77au/src/main/res/mipmap-xhdpi/ic_menu.png
new file mode 100644
index 0000000..2b55ec5
Binary files /dev/null and b/afb77au/src/main/res/mipmap-xhdpi/ic_menu.png differ
diff --git a/afb77au/src/main/res/mipmap-xxhdpi/app_logo.png b/afb77au/src/main/res/mipmap-xxhdpi/app_logo.png
new file mode 100644
index 0000000..e2b64e9
Binary files /dev/null and b/afb77au/src/main/res/mipmap-xxhdpi/app_logo.png differ
diff --git a/afb77au/src/main/res/values-en/strings.xml b/afb77au/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..0d60963
--- /dev/null
+++ b/afb77au/src/main/res/values-en/strings.xml
@@ -0,0 +1,51 @@
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+
\ No newline at end of file
diff --git a/ttslot888new/nep88/src/main/res/values-night/themes.xml b/afb77au/src/main/res/values-night/themes.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/values-night/themes.xml
rename to afb77au/src/main/res/values-night/themes.xml
diff --git a/ttslot888new/nep88/src/main/res/values/colors.xml b/afb77au/src/main/res/values/colors.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/values/colors.xml
rename to afb77au/src/main/res/values/colors.xml
diff --git a/afb77au/src/main/res/values/strings.xml b/afb77au/src/main/res/values/strings.xml
new file mode 100644
index 0000000..795529f
--- /dev/null
+++ b/afb77au/src/main/res/values/strings.xml
@@ -0,0 +1,74 @@
+
+ AFB77AU
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ttslot888new/nep88/src/main/res/values/themes.xml b/afb77au/src/main/res/values/themes.xml
similarity index 100%
rename from ttslot888new/nep88/src/main/res/values/themes.xml
rename to afb77au/src/main/res/values/themes.xml
diff --git a/afb77au/src/main/res/xml/app_updater_paths.xml b/afb77au/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/afb77au/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afb77au/src/main/res/xml/network_security_config.xml b/afb77au/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/afb77au/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/afb77au/src/main/res/xml/provider_paths.xml b/afb77au/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/afb77au/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afb77au/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/afb77au/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/afb77au/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/afb88/.gitignore b/afb88/.gitignore
new file mode 100644
index 0000000..956c004
--- /dev/null
+++ b/afb88/.gitignore
@@ -0,0 +1,2 @@
+/build
+/release
\ No newline at end of file
diff --git a/afb88/build.gradle b/afb88/build.gradle
new file mode 100644
index 0000000..9e468a1
--- /dev/null
+++ b/afb88/build.gradle
@@ -0,0 +1,78 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.xyz.afb88"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+ debug {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ release {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "afb88"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_no_music')
+}
\ No newline at end of file
diff --git a/afb88/dskjweb.jks b/afb88/dskjweb.jks
new file mode 100644
index 0000000..a303350
Binary files /dev/null and b/afb88/dskjweb.jks differ
diff --git a/afb88/google-services.json b/afb88/google-services.json
new file mode 100644
index 0000000..ccd0f5c
--- /dev/null
+++ b/afb88/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "96100481294",
+ "project_id": "notiaf4b",
+ "storage_bucket": "notiaf4b.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:96100481294:android:40a6699bb2b769da15bf5f",
+ "android_client_info": {
+ "package_name": "com.xyz.afb88"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyDhI18q_PSnh-2VMmk2U53wW5HfzblJ1-Q"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/afb88/ppn.jks b/afb88/ppn.jks
new file mode 100644
index 0000000..5898029
Binary files /dev/null and b/afb88/ppn.jks differ
diff --git a/afb88/proguard-rules.pro b/afb88/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/afb88/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/afb88/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/afb88/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/afb88/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/afb88/src/main/AndroidManifest.xml b/afb88/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..9e0742a
--- /dev/null
+++ b/afb88/src/main/AndroidManifest.xml
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/java/com/xyz/afb88/MainActivity.java b/afb88/src/main/java/com/xyz/afb88/MainActivity.java
new file mode 100644
index 0000000..11cdcd9
--- /dev/null
+++ b/afb88/src/main/java/com/xyz/afb88/MainActivity.java
@@ -0,0 +1,49 @@
+package com.xyz.afb88;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.os.Bundle;
+
+import com.bumptech.glide.Glide;
+import com.web.base.MainActivity2;
+import com.google.firebase.messaging.FirebaseMessaging;
+
+public class MainActivity extends MainActivity2 {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ userId = 182;
+ saveInt(MainActivity.this,"user_code",userId);
+ saveInt(MainActivity.this,"version_code",getVersion());
+ com.web.base.MainActivity.saveString(this, "base_url","https://afb88my1.com");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#c4c4c4");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#FFFFFF");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity.this,"is_white",0);
+ super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(false);
+ //订阅主题
+ FirebaseMessaging.getInstance().subscribeToTopic("demo")
+ .addOnCompleteListener(task -> {
+ });
+// getWindow().getDecorView().setBackgroundResource(Color.parseColor("#01052a"));
+// Glide.with(MainActivity.this).load(R.mipmap.load_img).into(showTopV1);
+ }
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/afb88/src/main/java/com/xyz/afb88/MyFirebaseMessageingService.java b/afb88/src/main/java/com/xyz/afb88/MyFirebaseMessageingService.java
new file mode 100644
index 0000000..4530007
--- /dev/null
+++ b/afb88/src/main/java/com/xyz/afb88/MyFirebaseMessageingService.java
@@ -0,0 +1,125 @@
+package com.xyz.afb88;
+
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import com.google.firebase.messaging.FirebaseMessagingService;
+import com.google.firebase.messaging.RemoteMessage;
+import com.google.gson.Gson;
+import com.web.base.GsonUtils;
+import com.web.base.MessageInfo;
+import java.util.Map;
+import java.util.Random;
+
+public class MyFirebaseMessageingService extends FirebaseMessagingService {
+
+ public MyFirebaseMessageingService() {
+ }
+
+ @Override
+ public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
+ super.onMessageReceived(remoteMessage);
+ Map serviceData = remoteMessage.getData(); //后台推送数据
+ if (serviceData != null && serviceData.containsKey("message")) {
+ String value = serviceData.get("message");
+ Gson gson = new Gson();
+ MessageInfo messageInfo = gson.fromJson(value, MessageInfo.class);
+ showNotification(messageInfo);
+ } else {
+ //收到通知 创建notify
+ if (remoteMessage.getNotification() != null) {
+ showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
+ }
+ }
+ }
+
+ private void showNotification(MessageInfo messageInfo) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ notifyIntent.putExtra("message", messageInfo);
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+
+ private void showNotification(String title, String body) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.putExtra("message", body);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ MessageInfo messageInfo = GsonUtils.getObjFromJSON(body, MessageInfo.class);
+ if (messageInfo != null) {
+ body = messageInfo.getContent();
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+}
diff --git a/afb88/src/main/java/com/xyz/afb88/WebApplication.java b/afb88/src/main/java/com/xyz/afb88/WebApplication.java
new file mode 100644
index 0000000..db5fe3c
--- /dev/null
+++ b/afb88/src/main/java/com/xyz/afb88/WebApplication.java
@@ -0,0 +1,35 @@
+package com.xyz.afb88;
+
+import android.app.Application;
+import android.content.Context;
+import com.tencent.smtt.export.external.TbsCoreSettings;
+import com.tencent.smtt.sdk.QbSdk;
+import java.util.HashMap;
+
+public class WebApplication extends Application {
+
+
+ public static Context application;
+ @Override
+ public void onCreate() {
+ super.onCreate();
+// 设置开启优化方案
+ application = this;
+ HashMap map = new HashMap();
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
+ QbSdk.initTbsSettings(map);
+ QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
+ @Override
+ public void onCoreInitFinished() {
+
+ }
+
+ @Override
+ public void onViewInitFinished(boolean b) {
+
+ }
+ });
+ QbSdk.setDownloadWithoutWifi(true);
+ }
+}
diff --git a/afb88/src/main/res/drawable-anydpi/ic_action_back.xml b/afb88/src/main/res/drawable-anydpi/ic_action_back.xml
new file mode 100644
index 0000000..013ab07
--- /dev/null
+++ b/afb88/src/main/res/drawable-anydpi/ic_action_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/afb88/src/main/res/drawable-hdpi/ic_action_back.png b/afb88/src/main/res/drawable-hdpi/ic_action_back.png
new file mode 100644
index 0000000..1560c04
Binary files /dev/null and b/afb88/src/main/res/drawable-hdpi/ic_action_back.png differ
diff --git a/afb88/src/main/res/drawable-mdpi/ic_action_back.png b/afb88/src/main/res/drawable-mdpi/ic_action_back.png
new file mode 100644
index 0000000..d5841d2
Binary files /dev/null and b/afb88/src/main/res/drawable-mdpi/ic_action_back.png differ
diff --git a/afb88/src/main/res/drawable-v24/ic_launcher_foreground.xml b/afb88/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/afb88/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/drawable-xhdpi/ic_action_back.png b/afb88/src/main/res/drawable-xhdpi/ic_action_back.png
new file mode 100644
index 0000000..5c14e41
Binary files /dev/null and b/afb88/src/main/res/drawable-xhdpi/ic_action_back.png differ
diff --git a/afb88/src/main/res/drawable-xxhdpi/ic_action_back.png b/afb88/src/main/res/drawable-xxhdpi/ic_action_back.png
new file mode 100644
index 0000000..0516d08
Binary files /dev/null and b/afb88/src/main/res/drawable-xxhdpi/ic_action_back.png differ
diff --git a/afb88/src/main/res/drawable/big_bg.xml b/afb88/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..1fafd56
--- /dev/null
+++ b/afb88/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/drawable/ic_launcher_background.xml b/afb88/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/afb88/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/afb88/src/main/res/drawable/input_bg.xml b/afb88/src/main/res/drawable/input_bg.xml
new file mode 100644
index 0000000..4e895aa
--- /dev/null
+++ b/afb88/src/main/res/drawable/input_bg.xml
@@ -0,0 +1,20 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/afb88/src/main/res/drawable/pass_word_bg.xml b/afb88/src/main/res/drawable/pass_word_bg.xml
new file mode 100644
index 0000000..2724e60
--- /dev/null
+++ b/afb88/src/main/res/drawable/pass_word_bg.xml
@@ -0,0 +1,28 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/afb88/src/main/res/drawable/pass_word_bg1.xml b/afb88/src/main/res/drawable/pass_word_bg1.xml
new file mode 100644
index 0000000..d10d780
--- /dev/null
+++ b/afb88/src/main/res/drawable/pass_word_bg1.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/drawable/pass_word_bg2.xml b/afb88/src/main/res/drawable/pass_word_bg2.xml
new file mode 100644
index 0000000..916d99c
--- /dev/null
+++ b/afb88/src/main/res/drawable/pass_word_bg2.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/drawable/shape_btn_bg.xml b/afb88/src/main/res/drawable/shape_btn_bg.xml
new file mode 100644
index 0000000..af87a0d
--- /dev/null
+++ b/afb88/src/main/res/drawable/shape_btn_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/drawable/shape_dialog_bg2.xml b/afb88/src/main/res/drawable/shape_dialog_bg2.xml
new file mode 100644
index 0000000..7837a42
--- /dev/null
+++ b/afb88/src/main/res/drawable/shape_dialog_bg2.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/drawable/shape_dialog_bg3.xml b/afb88/src/main/res/drawable/shape_dialog_bg3.xml
new file mode 100644
index 0000000..ca0a18d
--- /dev/null
+++ b/afb88/src/main/res/drawable/shape_dialog_bg3.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/drawable/shape_dialog_bg_new.xml b/afb88/src/main/res/drawable/shape_dialog_bg_new.xml
new file mode 100644
index 0000000..e96d4e0
--- /dev/null
+++ b/afb88/src/main/res/drawable/shape_dialog_bg_new.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/afb88/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/afb88/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/afb88/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/afb88/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/mipmap-hdpi/ic_empty.png b/afb88/src/main/res/mipmap-hdpi/ic_empty.png
new file mode 100644
index 0000000..72473d6
Binary files /dev/null and b/afb88/src/main/res/mipmap-hdpi/ic_empty.png differ
diff --git a/afb88/src/main/res/mipmap-hdpi/ic_pull_down.png b/afb88/src/main/res/mipmap-hdpi/ic_pull_down.png
new file mode 100644
index 0000000..7dc0ec3
Binary files /dev/null and b/afb88/src/main/res/mipmap-hdpi/ic_pull_down.png differ
diff --git a/afb88/src/main/res/mipmap-xhdpi/ic_close.png b/afb88/src/main/res/mipmap-xhdpi/ic_close.png
new file mode 100644
index 0000000..c0b0127
Binary files /dev/null and b/afb88/src/main/res/mipmap-xhdpi/ic_close.png differ
diff --git a/afb88/src/main/res/mipmap-xhdpi/ic_menu.png b/afb88/src/main/res/mipmap-xhdpi/ic_menu.png
new file mode 100644
index 0000000..2b55ec5
Binary files /dev/null and b/afb88/src/main/res/mipmap-xhdpi/ic_menu.png differ
diff --git a/afb88/src/main/res/mipmap-xxhdpi/app_logo.png b/afb88/src/main/res/mipmap-xxhdpi/app_logo.png
new file mode 100644
index 0000000..ca1f7b1
Binary files /dev/null and b/afb88/src/main/res/mipmap-xxhdpi/app_logo.png differ
diff --git a/afb88/src/main/res/values-en/strings.xml b/afb88/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..0d60963
--- /dev/null
+++ b/afb88/src/main/res/values-en/strings.xml
@@ -0,0 +1,51 @@
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+
\ No newline at end of file
diff --git a/afb88/src/main/res/values-night/themes.xml b/afb88/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..89e12d2
--- /dev/null
+++ b/afb88/src/main/res/values-night/themes.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/values/colors.xml b/afb88/src/main/res/values/colors.xml
new file mode 100644
index 0000000..be071dd
--- /dev/null
+++ b/afb88/src/main/res/values/colors.xml
@@ -0,0 +1,18 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #FFFFFFFF
+ #c4c4c4
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/values/strings.xml b/afb88/src/main/res/values/strings.xml
new file mode 100644
index 0000000..73d9f75
--- /dev/null
+++ b/afb88/src/main/res/values/strings.xml
@@ -0,0 +1,74 @@
+
+ AFB88
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/values/themes.xml b/afb88/src/main/res/values/themes.xml
new file mode 100644
index 0000000..efa2168
--- /dev/null
+++ b/afb88/src/main/res/values/themes.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/xml/app_updater_paths.xml b/afb88/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/afb88/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/xml/network_security_config.xml b/afb88/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/afb88/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/main/res/xml/provider_paths.xml b/afb88/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/afb88/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/afb88/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/afb88/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/afb88/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/agn888new/build.gradle b/agn888new/build.gradle
index d30b739..fe7595a 100644
--- a/agn888new/build.gradle
+++ b/agn888new/build.gradle
@@ -10,7 +10,7 @@ android {
defaultConfig {
//37
- applicationId "com.web.agn"
+ applicationId "com.xyz.ag"
minSdkVersion 24
targetSdkVersion 31
versionCode rootProject.ext.versionCode
@@ -20,16 +20,16 @@ android {
}
signingConfigs {
debug {
- storeFile file('ppn.jks')
- storePassword "2014123456"
+ storeFile file('justlet.jks')
+ storePassword "123456"
keyAlias 'key0'
- keyPassword "2014123456"
+ keyPassword "123456"
}
release {
- storeFile file('ppn.jks')
- storePassword "2014123456"
+ storeFile file('justlet.jks')
+ storePassword "123456"
keyAlias 'key0'
- keyPassword "2014123456"
+ keyPassword "123456"
}
}
buildTypes {
diff --git a/agn888new/google-services.json b/agn888new/google-services.json
index ed5195b..ce55196 100644
--- a/agn888new/google-services.json
+++ b/agn888new/google-services.json
@@ -1,59 +1,21 @@
{
"project_info": {
- "project_number": "908864777300",
- "project_id": "agn888-3b8ef",
- "storage_bucket": "agn888-3b8ef.firebasestorage.app"
+ "project_number": "1012355298511",
+ "project_id": "notiag8",
+ "storage_bucket": "notiag8.firebasestorage.app"
},
"client": [
{
"client_info": {
- "mobilesdk_app_id": "1:908864777300:android:07ba7be57fb0c9d2ac11c1",
+ "mobilesdk_app_id": "1:1012355298511:android:1ab756ace1aaecb8d533ba",
"android_client_info": {
- "package_name": "com.web.agn"
+ "package_name": "com.xyz.ag"
}
},
"oauth_client": [],
"api_key": [
{
- "current_key": "AIzaSyB8ISe5W0zOSSvV88sH-u4DMAhO_0Mnjfg"
- }
- ],
- "services": {
- "appinvite_service": {
- "other_platform_oauth_client": []
- }
- }
- },
- {
- "client_info": {
- "mobilesdk_app_id": "1:908864777300:android:682bf12a10bfa0dbac11c1",
- "android_client_info": {
- "package_name": "com.web.agn888"
- }
- },
- "oauth_client": [],
- "api_key": [
- {
- "current_key": "AIzaSyB8ISe5W0zOSSvV88sH-u4DMAhO_0Mnjfg"
- }
- ],
- "services": {
- "appinvite_service": {
- "other_platform_oauth_client": []
- }
- }
- },
- {
- "client_info": {
- "mobilesdk_app_id": "1:908864777300:android:fc7d3cac6abe01c2ac11c1",
- "android_client_info": {
- "package_name": "com.web.agn888new"
- }
- },
- "oauth_client": [],
- "api_key": [
- {
- "current_key": "AIzaSyB8ISe5W0zOSSvV88sH-u4DMAhO_0Mnjfg"
+ "current_key": "AIzaSyBhW-OU5mQIWzS5oGWP9RXY1Vj8G39UK5U"
}
],
"services": {
diff --git a/agn888new/justlet.jks b/agn888new/justlet.jks
new file mode 100644
index 0000000..a33b839
Binary files /dev/null and b/agn888new/justlet.jks differ
diff --git a/agn888new/src/main/AndroidManifest.xml b/agn888new/src/main/AndroidManifest.xml
index 9906045..b55506c 100644
--- a/agn888new/src/main/AndroidManifest.xml
+++ b/agn888new/src/main/AndroidManifest.xml
@@ -1,6 +1,6 @@
+ package="com.xyz.ag">
() {
@@ -28,7 +39,7 @@ public class MainActivity2 extends com.web.base.MainActivity2 {
if (!task.isSuccessful()) {
msg = "Subscribe failed";
}
-
+ LogUtils.i("结果:"+msg);
}
});
}
@@ -47,4 +58,5 @@ public class MainActivity2 extends com.web.base.MainActivity2 {
}
}
+
}
diff --git a/agn888new/src/main/java/com/web/agn/MyFirebaseMessageingService.java b/agn888new/src/main/java/com/xyz/ag/MyFirebaseMessageingService.java
similarity index 99%
rename from agn888new/src/main/java/com/web/agn/MyFirebaseMessageingService.java
rename to agn888new/src/main/java/com/xyz/ag/MyFirebaseMessageingService.java
index 32c3335..81c0958 100644
--- a/agn888new/src/main/java/com/web/agn/MyFirebaseMessageingService.java
+++ b/agn888new/src/main/java/com/xyz/ag/MyFirebaseMessageingService.java
@@ -1,4 +1,4 @@
-package com.web.agn;
+package com.xyz.ag;
import android.app.NotificationChannel;
import android.app.NotificationManager;
diff --git a/u88/src/main/java/com/web/u88/WebApplication.java b/agn888new/src/main/java/com/xyz/ag/WebApplication.java
similarity index 97%
rename from u88/src/main/java/com/web/u88/WebApplication.java
rename to agn888new/src/main/java/com/xyz/ag/WebApplication.java
index 9cfe36c..fa6e3ea 100644
--- a/u88/src/main/java/com/web/u88/WebApplication.java
+++ b/agn888new/src/main/java/com/xyz/ag/WebApplication.java
@@ -1,4 +1,4 @@
-package com.web.u88;
+package com.xyz.ag;
import android.app.Application;
import android.content.Context;
diff --git a/ak44/.gitignore b/ak44/.gitignore
new file mode 100644
index 0000000..956c004
--- /dev/null
+++ b/ak44/.gitignore
@@ -0,0 +1,2 @@
+/build
+/release
\ No newline at end of file
diff --git a/ak44/build.gradle b/ak44/build.gradle
new file mode 100644
index 0000000..9db914f
--- /dev/null
+++ b/ak44/build.gradle
@@ -0,0 +1,78 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.xyz.ak44"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+ debug {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ release {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "ak44"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_no_music')
+}
\ No newline at end of file
diff --git a/ak44/dskjweb.jks b/ak44/dskjweb.jks
new file mode 100644
index 0000000..a303350
Binary files /dev/null and b/ak44/dskjweb.jks differ
diff --git a/ak44/google-services.json b/ak44/google-services.json
new file mode 100644
index 0000000..1a5ea25
--- /dev/null
+++ b/ak44/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "947197032440",
+ "project_id": "notia4k144",
+ "storage_bucket": "notia4k144.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:947197032440:android:e6083da04b4fc41606880d",
+ "android_client_info": {
+ "package_name": "com.xyz.ak44"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBVIYJabHoI7ZATQ6720Afmw7kniHeqNec"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/ak44/ppn.jks b/ak44/ppn.jks
new file mode 100644
index 0000000..5898029
Binary files /dev/null and b/ak44/ppn.jks differ
diff --git a/ak44/proguard-rules.pro b/ak44/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/ak44/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/ak44/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/ak44/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/ak44/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/ak44/src/main/AndroidManifest.xml b/ak44/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..70be73c
--- /dev/null
+++ b/ak44/src/main/AndroidManifest.xml
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/java/com/xyz/ak44/MainActivity.java b/ak44/src/main/java/com/xyz/ak44/MainActivity.java
new file mode 100644
index 0000000..b4b61ba
--- /dev/null
+++ b/ak44/src/main/java/com/xyz/ak44/MainActivity.java
@@ -0,0 +1,63 @@
+package com.xyz.ak44;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+
+import com.bumptech.glide.Glide;
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.web.base.LogUtils;
+import com.web.base.MainActivity2;
+import com.google.firebase.messaging.FirebaseMessaging;
+
+public class MainActivity extends MainActivity2 {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ userId = 206;
+ saveInt(MainActivity.this,"user_code",userId);
+ saveInt(MainActivity.this,"version_code",getVersion());
+ com.web.base.MainActivity.saveString(this, "base_url","https://ak44au.com/");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#39cb96");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#ffffff");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity.this,"is_white",0);
+ super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(false);
+// showTopV1.setImageResource(R.mipmap.start_gifs);
+ //订阅主题
+ FirebaseMessaging.getInstance().subscribeToTopic("demo")
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ String msg = "Subscribed";
+ if (!task.isSuccessful()) {
+ msg = "Subscribe failed";
+ }
+ LogUtils.i("结果:"+msg);
+ }
+ });
+// getWindow().getDecorView().setBackgroundResource(Color.parseColor("#01052a"));
+// Glide.with(MainActivity.this).load(R.mipmap.load_img).into(showTopV1);
+ }
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/ak44/src/main/java/com/xyz/ak44/MyFirebaseMessageingService.java b/ak44/src/main/java/com/xyz/ak44/MyFirebaseMessageingService.java
new file mode 100644
index 0000000..f244ecd
--- /dev/null
+++ b/ak44/src/main/java/com/xyz/ak44/MyFirebaseMessageingService.java
@@ -0,0 +1,125 @@
+package com.xyz.ak44;
+
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import com.google.firebase.messaging.FirebaseMessagingService;
+import com.google.firebase.messaging.RemoteMessage;
+import com.google.gson.Gson;
+import com.web.base.GsonUtils;
+import com.web.base.MessageInfo;
+import java.util.Map;
+import java.util.Random;
+
+public class MyFirebaseMessageingService extends FirebaseMessagingService {
+
+ public MyFirebaseMessageingService() {
+ }
+
+ @Override
+ public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
+ super.onMessageReceived(remoteMessage);
+ Map serviceData = remoteMessage.getData(); //后台推送数据
+ if (serviceData != null && serviceData.containsKey("message")) {
+ String value = serviceData.get("message");
+ Gson gson = new Gson();
+ MessageInfo messageInfo = gson.fromJson(value, MessageInfo.class);
+ showNotification(messageInfo);
+ } else {
+ //收到通知 创建notify
+ if (remoteMessage.getNotification() != null) {
+ showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
+ }
+ }
+ }
+
+ private void showNotification(MessageInfo messageInfo) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ notifyIntent.putExtra("message", messageInfo);
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+
+ private void showNotification(String title, String body) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.putExtra("message", body);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ MessageInfo messageInfo = GsonUtils.getObjFromJSON(body, MessageInfo.class);
+ if (messageInfo != null) {
+ body = messageInfo.getContent();
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+}
diff --git a/ak44/src/main/java/com/xyz/ak44/WebApplication.java b/ak44/src/main/java/com/xyz/ak44/WebApplication.java
new file mode 100644
index 0000000..d49c4d8
--- /dev/null
+++ b/ak44/src/main/java/com/xyz/ak44/WebApplication.java
@@ -0,0 +1,35 @@
+package com.xyz.ak44;
+
+import android.app.Application;
+import android.content.Context;
+import com.tencent.smtt.export.external.TbsCoreSettings;
+import com.tencent.smtt.sdk.QbSdk;
+import java.util.HashMap;
+
+public class WebApplication extends Application {
+
+
+ public static Context application;
+ @Override
+ public void onCreate() {
+ super.onCreate();
+// 设置开启优化方案
+ application = this;
+ HashMap map = new HashMap();
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
+ QbSdk.initTbsSettings(map);
+ QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
+ @Override
+ public void onCoreInitFinished() {
+
+ }
+
+ @Override
+ public void onViewInitFinished(boolean b) {
+
+ }
+ });
+ QbSdk.setDownloadWithoutWifi(true);
+ }
+}
diff --git a/ak44/src/main/res/drawable-anydpi/ic_action_back.xml b/ak44/src/main/res/drawable-anydpi/ic_action_back.xml
new file mode 100644
index 0000000..013ab07
--- /dev/null
+++ b/ak44/src/main/res/drawable-anydpi/ic_action_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/ak44/src/main/res/drawable-hdpi/ic_action_back.png b/ak44/src/main/res/drawable-hdpi/ic_action_back.png
new file mode 100644
index 0000000..1560c04
Binary files /dev/null and b/ak44/src/main/res/drawable-hdpi/ic_action_back.png differ
diff --git a/ak44/src/main/res/drawable-mdpi/ic_action_back.png b/ak44/src/main/res/drawable-mdpi/ic_action_back.png
new file mode 100644
index 0000000..d5841d2
Binary files /dev/null and b/ak44/src/main/res/drawable-mdpi/ic_action_back.png differ
diff --git a/ak44/src/main/res/drawable-v24/ic_launcher_foreground.xml b/ak44/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/ak44/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/drawable-xhdpi/ic_action_back.png b/ak44/src/main/res/drawable-xhdpi/ic_action_back.png
new file mode 100644
index 0000000..5c14e41
Binary files /dev/null and b/ak44/src/main/res/drawable-xhdpi/ic_action_back.png differ
diff --git a/ak44/src/main/res/drawable-xxhdpi/ic_action_back.png b/ak44/src/main/res/drawable-xxhdpi/ic_action_back.png
new file mode 100644
index 0000000..0516d08
Binary files /dev/null and b/ak44/src/main/res/drawable-xxhdpi/ic_action_back.png differ
diff --git a/ak44/src/main/res/drawable/big_bg.xml b/ak44/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..f51fb19
--- /dev/null
+++ b/ak44/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/drawable/ic_launcher_background.xml b/ak44/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/ak44/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ak44/src/main/res/drawable/input_bg.xml b/ak44/src/main/res/drawable/input_bg.xml
new file mode 100644
index 0000000..4e895aa
--- /dev/null
+++ b/ak44/src/main/res/drawable/input_bg.xml
@@ -0,0 +1,20 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/ak44/src/main/res/drawable/pass_word_bg.xml b/ak44/src/main/res/drawable/pass_word_bg.xml
new file mode 100644
index 0000000..2724e60
--- /dev/null
+++ b/ak44/src/main/res/drawable/pass_word_bg.xml
@@ -0,0 +1,28 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/ak44/src/main/res/drawable/pass_word_bg1.xml b/ak44/src/main/res/drawable/pass_word_bg1.xml
new file mode 100644
index 0000000..d10d780
--- /dev/null
+++ b/ak44/src/main/res/drawable/pass_word_bg1.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/drawable/pass_word_bg2.xml b/ak44/src/main/res/drawable/pass_word_bg2.xml
new file mode 100644
index 0000000..916d99c
--- /dev/null
+++ b/ak44/src/main/res/drawable/pass_word_bg2.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/drawable/shape_btn_bg.xml b/ak44/src/main/res/drawable/shape_btn_bg.xml
new file mode 100644
index 0000000..af87a0d
--- /dev/null
+++ b/ak44/src/main/res/drawable/shape_btn_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/drawable/shape_dialog_bg2.xml b/ak44/src/main/res/drawable/shape_dialog_bg2.xml
new file mode 100644
index 0000000..7837a42
--- /dev/null
+++ b/ak44/src/main/res/drawable/shape_dialog_bg2.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/drawable/shape_dialog_bg3.xml b/ak44/src/main/res/drawable/shape_dialog_bg3.xml
new file mode 100644
index 0000000..ca0a18d
--- /dev/null
+++ b/ak44/src/main/res/drawable/shape_dialog_bg3.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/drawable/shape_dialog_bg_new.xml b/ak44/src/main/res/drawable/shape_dialog_bg_new.xml
new file mode 100644
index 0000000..e96d4e0
--- /dev/null
+++ b/ak44/src/main/res/drawable/shape_dialog_bg_new.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/ak44/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/ak44/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/ak44/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/ak44/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/mipmap-hdpi/ic_empty.png b/ak44/src/main/res/mipmap-hdpi/ic_empty.png
new file mode 100644
index 0000000..72473d6
Binary files /dev/null and b/ak44/src/main/res/mipmap-hdpi/ic_empty.png differ
diff --git a/ak44/src/main/res/mipmap-hdpi/ic_pull_down.png b/ak44/src/main/res/mipmap-hdpi/ic_pull_down.png
new file mode 100644
index 0000000..7dc0ec3
Binary files /dev/null and b/ak44/src/main/res/mipmap-hdpi/ic_pull_down.png differ
diff --git a/ak44/src/main/res/mipmap-xhdpi/ic_close.png b/ak44/src/main/res/mipmap-xhdpi/ic_close.png
new file mode 100644
index 0000000..c0b0127
Binary files /dev/null and b/ak44/src/main/res/mipmap-xhdpi/ic_close.png differ
diff --git a/ak44/src/main/res/mipmap-xhdpi/ic_menu.png b/ak44/src/main/res/mipmap-xhdpi/ic_menu.png
new file mode 100644
index 0000000..2b55ec5
Binary files /dev/null and b/ak44/src/main/res/mipmap-xhdpi/ic_menu.png differ
diff --git a/ak44/src/main/res/mipmap-xxhdpi/app_logo.png b/ak44/src/main/res/mipmap-xxhdpi/app_logo.png
new file mode 100644
index 0000000..be224cd
Binary files /dev/null and b/ak44/src/main/res/mipmap-xxhdpi/app_logo.png differ
diff --git a/ak44/src/main/res/values-en/strings.xml b/ak44/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..0d60963
--- /dev/null
+++ b/ak44/src/main/res/values-en/strings.xml
@@ -0,0 +1,51 @@
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+
\ No newline at end of file
diff --git a/ak44/src/main/res/values-night/themes.xml b/ak44/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..89e12d2
--- /dev/null
+++ b/ak44/src/main/res/values-night/themes.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/values/colors.xml b/ak44/src/main/res/values/colors.xml
new file mode 100644
index 0000000..599c694
--- /dev/null
+++ b/ak44/src/main/res/values/colors.xml
@@ -0,0 +1,18 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #FFFFFFFF
+ #39cb96
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/values/strings.xml b/ak44/src/main/res/values/strings.xml
new file mode 100644
index 0000000..772fa75
--- /dev/null
+++ b/ak44/src/main/res/values/strings.xml
@@ -0,0 +1,74 @@
+
+ AK44
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/values/themes.xml b/ak44/src/main/res/values/themes.xml
new file mode 100644
index 0000000..efa2168
--- /dev/null
+++ b/ak44/src/main/res/values/themes.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/xml/app_updater_paths.xml b/ak44/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/ak44/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/xml/network_security_config.xml b/ak44/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/ak44/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/main/res/xml/provider_paths.xml b/ak44/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/ak44/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ak44/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/ak44/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/ak44/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/aud2u/.gitignore b/aud2u/.gitignore
new file mode 100644
index 0000000..956c004
--- /dev/null
+++ b/aud2u/.gitignore
@@ -0,0 +1,2 @@
+/build
+/release
\ No newline at end of file
diff --git a/aud2u/build.gradle b/aud2u/build.gradle
new file mode 100644
index 0000000..9275d3e
--- /dev/null
+++ b/aud2u/build.gradle
@@ -0,0 +1,78 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.dskj.aud2u36"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+ debug {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ release {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "aud2u"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_no_music')
+}
\ No newline at end of file
diff --git a/aud2u/dskjweb.jks b/aud2u/dskjweb.jks
new file mode 100644
index 0000000..a303350
Binary files /dev/null and b/aud2u/dskjweb.jks differ
diff --git a/aud2u/google-services.json b/aud2u/google-services.json
new file mode 100644
index 0000000..450b3cb
--- /dev/null
+++ b/aud2u/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "286548718844",
+ "project_id": "aud2u36",
+ "storage_bucket": "aud2u36.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:286548718844:android:e9e31b15a0b56eee261379",
+ "android_client_info": {
+ "package_name": "com.dskj.aud2u36"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyDgWskBorLbRExanSKZjPZhLpX38Gw2VCQ"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/aud2u/ppn.jks b/aud2u/ppn.jks
new file mode 100644
index 0000000..5898029
Binary files /dev/null and b/aud2u/ppn.jks differ
diff --git a/aud2u/proguard-rules.pro b/aud2u/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/aud2u/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/aud2u/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/aud2u/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/aud2u/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/aud2u/src/main/AndroidManifest.xml b/aud2u/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..cfad220
--- /dev/null
+++ b/aud2u/src/main/AndroidManifest.xml
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/java/com/dskj/aud2u/MainActivity.java b/aud2u/src/main/java/com/dskj/aud2u/MainActivity.java
new file mode 100644
index 0000000..738d1ac
--- /dev/null
+++ b/aud2u/src/main/java/com/dskj/aud2u/MainActivity.java
@@ -0,0 +1,63 @@
+package com.dskj.aud2u;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+
+import com.bumptech.glide.Glide;
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.web.base.LogUtils;
+import com.web.base.MainActivity2;
+import com.google.firebase.messaging.FirebaseMessaging;
+
+public class MainActivity extends MainActivity2 {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ userId = 24;
+ saveInt(MainActivity.this,"user_code",userId);
+ saveInt(MainActivity.this,"version_code",getVersion());
+ com.web.base.MainActivity.saveString(this, "base_url","https://www.aud2u.com/");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#101010");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#2b2b2b");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity.this,"is_white",1);
+ super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(true);
+// showTopV1.setImageResource(R.mipmap.start_gifs);
+ //订阅主题
+ FirebaseMessaging.getInstance().subscribeToTopic("demo")
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ String msg = "Subscribed";
+ if (!task.isSuccessful()) {
+ msg = "Subscribe failed";
+ }
+ LogUtils.i("结果:"+msg);
+ }
+ });
+// getWindow().getDecorView().setBackgroundResource(Color.parseColor("#01052a"));
+// Glide.with(MainActivity.this).load(R.mipmap.load_img).into(showTopV1);
+ }
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/aud2u/src/main/java/com/dskj/aud2u/MyFirebaseMessageingService.java b/aud2u/src/main/java/com/dskj/aud2u/MyFirebaseMessageingService.java
new file mode 100644
index 0000000..ec6aee6
--- /dev/null
+++ b/aud2u/src/main/java/com/dskj/aud2u/MyFirebaseMessageingService.java
@@ -0,0 +1,125 @@
+package com.dskj.aud2u;
+
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import com.google.firebase.messaging.FirebaseMessagingService;
+import com.google.firebase.messaging.RemoteMessage;
+import com.google.gson.Gson;
+import com.web.base.GsonUtils;
+import com.web.base.MessageInfo;
+import java.util.Map;
+import java.util.Random;
+
+public class MyFirebaseMessageingService extends FirebaseMessagingService {
+
+ public MyFirebaseMessageingService() {
+ }
+
+ @Override
+ public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
+ super.onMessageReceived(remoteMessage);
+ Map serviceData = remoteMessage.getData(); //后台推送数据
+ if (serviceData != null && serviceData.containsKey("message")) {
+ String value = serviceData.get("message");
+ Gson gson = new Gson();
+ MessageInfo messageInfo = gson.fromJson(value, MessageInfo.class);
+ showNotification(messageInfo);
+ } else {
+ //收到通知 创建notify
+ if (remoteMessage.getNotification() != null) {
+ showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
+ }
+ }
+ }
+
+ private void showNotification(MessageInfo messageInfo) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ notifyIntent.putExtra("message", messageInfo);
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+
+ private void showNotification(String title, String body) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.putExtra("message", body);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ MessageInfo messageInfo = GsonUtils.getObjFromJSON(body, MessageInfo.class);
+ if (messageInfo != null) {
+ body = messageInfo.getContent();
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+}
diff --git a/aud2u/src/main/java/com/dskj/aud2u/WebApplication.java b/aud2u/src/main/java/com/dskj/aud2u/WebApplication.java
new file mode 100644
index 0000000..0d6faa5
--- /dev/null
+++ b/aud2u/src/main/java/com/dskj/aud2u/WebApplication.java
@@ -0,0 +1,35 @@
+package com.dskj.aud2u;
+
+import android.app.Application;
+import android.content.Context;
+import com.tencent.smtt.export.external.TbsCoreSettings;
+import com.tencent.smtt.sdk.QbSdk;
+import java.util.HashMap;
+
+public class WebApplication extends Application {
+
+
+ public static Context application;
+ @Override
+ public void onCreate() {
+ super.onCreate();
+// 设置开启优化方案
+ application = this;
+ HashMap map = new HashMap();
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
+ QbSdk.initTbsSettings(map);
+ QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
+ @Override
+ public void onCoreInitFinished() {
+
+ }
+
+ @Override
+ public void onViewInitFinished(boolean b) {
+
+ }
+ });
+ QbSdk.setDownloadWithoutWifi(true);
+ }
+}
diff --git a/aud2u/src/main/res/drawable-anydpi/ic_action_back.xml b/aud2u/src/main/res/drawable-anydpi/ic_action_back.xml
new file mode 100644
index 0000000..013ab07
--- /dev/null
+++ b/aud2u/src/main/res/drawable-anydpi/ic_action_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/aud2u/src/main/res/drawable-hdpi/ic_action_back.png b/aud2u/src/main/res/drawable-hdpi/ic_action_back.png
new file mode 100644
index 0000000..1560c04
Binary files /dev/null and b/aud2u/src/main/res/drawable-hdpi/ic_action_back.png differ
diff --git a/aud2u/src/main/res/drawable-mdpi/ic_action_back.png b/aud2u/src/main/res/drawable-mdpi/ic_action_back.png
new file mode 100644
index 0000000..d5841d2
Binary files /dev/null and b/aud2u/src/main/res/drawable-mdpi/ic_action_back.png differ
diff --git a/aud2u/src/main/res/drawable-v24/ic_launcher_foreground.xml b/aud2u/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/aud2u/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/drawable-xhdpi/ic_action_back.png b/aud2u/src/main/res/drawable-xhdpi/ic_action_back.png
new file mode 100644
index 0000000..5c14e41
Binary files /dev/null and b/aud2u/src/main/res/drawable-xhdpi/ic_action_back.png differ
diff --git a/aud2u/src/main/res/drawable-xxhdpi/ic_action_back.png b/aud2u/src/main/res/drawable-xxhdpi/ic_action_back.png
new file mode 100644
index 0000000..0516d08
Binary files /dev/null and b/aud2u/src/main/res/drawable-xxhdpi/ic_action_back.png differ
diff --git a/aud2u/src/main/res/drawable/big_bg.xml b/aud2u/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..50d378d
--- /dev/null
+++ b/aud2u/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/drawable/ic_launcher_background.xml b/aud2u/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/aud2u/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/aud2u/src/main/res/drawable/input_bg.xml b/aud2u/src/main/res/drawable/input_bg.xml
new file mode 100644
index 0000000..4e895aa
--- /dev/null
+++ b/aud2u/src/main/res/drawable/input_bg.xml
@@ -0,0 +1,20 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/aud2u/src/main/res/drawable/pass_word_bg.xml b/aud2u/src/main/res/drawable/pass_word_bg.xml
new file mode 100644
index 0000000..2724e60
--- /dev/null
+++ b/aud2u/src/main/res/drawable/pass_word_bg.xml
@@ -0,0 +1,28 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/aud2u/src/main/res/drawable/pass_word_bg1.xml b/aud2u/src/main/res/drawable/pass_word_bg1.xml
new file mode 100644
index 0000000..d10d780
--- /dev/null
+++ b/aud2u/src/main/res/drawable/pass_word_bg1.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/drawable/pass_word_bg2.xml b/aud2u/src/main/res/drawable/pass_word_bg2.xml
new file mode 100644
index 0000000..916d99c
--- /dev/null
+++ b/aud2u/src/main/res/drawable/pass_word_bg2.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/drawable/shape_btn_bg.xml b/aud2u/src/main/res/drawable/shape_btn_bg.xml
new file mode 100644
index 0000000..af87a0d
--- /dev/null
+++ b/aud2u/src/main/res/drawable/shape_btn_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/drawable/shape_dialog_bg2.xml b/aud2u/src/main/res/drawable/shape_dialog_bg2.xml
new file mode 100644
index 0000000..7837a42
--- /dev/null
+++ b/aud2u/src/main/res/drawable/shape_dialog_bg2.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/drawable/shape_dialog_bg3.xml b/aud2u/src/main/res/drawable/shape_dialog_bg3.xml
new file mode 100644
index 0000000..ca0a18d
--- /dev/null
+++ b/aud2u/src/main/res/drawable/shape_dialog_bg3.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/drawable/shape_dialog_bg_new.xml b/aud2u/src/main/res/drawable/shape_dialog_bg_new.xml
new file mode 100644
index 0000000..e96d4e0
--- /dev/null
+++ b/aud2u/src/main/res/drawable/shape_dialog_bg_new.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/aud2u/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/aud2u/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/aud2u/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/aud2u/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/mipmap-hdpi/ic_empty.png b/aud2u/src/main/res/mipmap-hdpi/ic_empty.png
new file mode 100644
index 0000000..72473d6
Binary files /dev/null and b/aud2u/src/main/res/mipmap-hdpi/ic_empty.png differ
diff --git a/aud2u/src/main/res/mipmap-hdpi/ic_pull_down.png b/aud2u/src/main/res/mipmap-hdpi/ic_pull_down.png
new file mode 100644
index 0000000..7dc0ec3
Binary files /dev/null and b/aud2u/src/main/res/mipmap-hdpi/ic_pull_down.png differ
diff --git a/aud2u/src/main/res/mipmap-xhdpi/ic_close.png b/aud2u/src/main/res/mipmap-xhdpi/ic_close.png
new file mode 100644
index 0000000..c0b0127
Binary files /dev/null and b/aud2u/src/main/res/mipmap-xhdpi/ic_close.png differ
diff --git a/aud2u/src/main/res/mipmap-xhdpi/ic_menu.png b/aud2u/src/main/res/mipmap-xhdpi/ic_menu.png
new file mode 100644
index 0000000..2b55ec5
Binary files /dev/null and b/aud2u/src/main/res/mipmap-xhdpi/ic_menu.png differ
diff --git a/aud2u/src/main/res/mipmap-xxhdpi/app_logo.jpg b/aud2u/src/main/res/mipmap-xxhdpi/app_logo.jpg
new file mode 100644
index 0000000..7afa1df
Binary files /dev/null and b/aud2u/src/main/res/mipmap-xxhdpi/app_logo.jpg differ
diff --git a/aud2u/src/main/res/values-en/strings.xml b/aud2u/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..0d60963
--- /dev/null
+++ b/aud2u/src/main/res/values-en/strings.xml
@@ -0,0 +1,51 @@
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/values-night/themes.xml b/aud2u/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..89e12d2
--- /dev/null
+++ b/aud2u/src/main/res/values-night/themes.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/values/colors.xml b/aud2u/src/main/res/values/colors.xml
new file mode 100644
index 0000000..0b8af07
--- /dev/null
+++ b/aud2u/src/main/res/values/colors.xml
@@ -0,0 +1,18 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #FFFFFFFF
+ #101010
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/values/strings.xml b/aud2u/src/main/res/values/strings.xml
new file mode 100644
index 0000000..2649e96
--- /dev/null
+++ b/aud2u/src/main/res/values/strings.xml
@@ -0,0 +1,74 @@
+
+ AUD2U
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/values/themes.xml b/aud2u/src/main/res/values/themes.xml
new file mode 100644
index 0000000..efa2168
--- /dev/null
+++ b/aud2u/src/main/res/values/themes.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/xml/app_updater_paths.xml b/aud2u/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/aud2u/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/xml/network_security_config.xml b/aud2u/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/aud2u/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/main/res/xml/provider_paths.xml b/aud2u/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/aud2u/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/aud2u/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/aud2u/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/aud2u/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/audclub/.gitignore b/audclub/.gitignore
new file mode 100644
index 0000000..956c004
--- /dev/null
+++ b/audclub/.gitignore
@@ -0,0 +1,2 @@
+/build
+/release
\ No newline at end of file
diff --git a/audclub/build.gradle b/audclub/build.gradle
new file mode 100644
index 0000000..48bc8e7
--- /dev/null
+++ b/audclub/build.gradle
@@ -0,0 +1,78 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.web.audclub"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+ debug {
+ storeFile file('ppn.jks')
+ storePassword "2014123456"
+ keyAlias 'key0'
+ keyPassword "2014123456"
+ }
+ release {
+ storeFile file('ppn.jks')
+ storePassword "2014123456"
+ keyAlias 'key0'
+ keyPassword "2014123456"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "audclub"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_no_music')
+}
\ No newline at end of file
diff --git a/audclub/google-services.json b/audclub/google-services.json
new file mode 100644
index 0000000..42f403f
--- /dev/null
+++ b/audclub/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "24481910191",
+ "project_id": "audclub",
+ "storage_bucket": "audclub.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:24481910191:android:395c8182e3eaef3b90b35a",
+ "android_client_info": {
+ "package_name": "com.web.audclub"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBZzbJ0QqWfdo8l1w1DJVG7EO4CYdWSGaI"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/audclub/ppn.jks b/audclub/ppn.jks
new file mode 100644
index 0000000..5898029
Binary files /dev/null and b/audclub/ppn.jks differ
diff --git a/audclub/proguard-rules.pro b/audclub/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/audclub/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/audclub/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/audclub/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/audclub/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/audclub/src/main/AndroidManifest.xml b/audclub/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..c507aa0
--- /dev/null
+++ b/audclub/src/main/AndroidManifest.xml
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/java/com/web/audclub/MainActivity.java b/audclub/src/main/java/com/web/audclub/MainActivity.java
new file mode 100644
index 0000000..85216ea
--- /dev/null
+++ b/audclub/src/main/java/com/web/audclub/MainActivity.java
@@ -0,0 +1,49 @@
+package com.web.audclub;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.os.Bundle;
+
+import com.bumptech.glide.Glide;
+import com.web.base.MainActivity2;
+import com.google.firebase.messaging.FirebaseMessaging;
+
+public class MainActivity extends MainActivity2 {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ userId = 160;
+ saveInt(MainActivity.this,"user_code",userId);
+ saveInt(MainActivity.this,"version_code",getVersion());
+ com.web.base.MainActivity.saveString(this, "base_url","https://audclub.asia/");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#c68e31");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#081922");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity.this,"is_white",1);
+ super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(true);
+ //订阅主题
+ FirebaseMessaging.getInstance().subscribeToTopic("demo")
+ .addOnCompleteListener(task -> {
+ });
+// getWindow().getDecorView().setBackgroundResource(Color.parseColor("#01052a"));
+// Glide.with(MainActivity.this).load(R.mipmap.load_img).into(showTopV1);
+ }
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/audclub/src/main/java/com/web/audclub/MyFirebaseMessageingService.java b/audclub/src/main/java/com/web/audclub/MyFirebaseMessageingService.java
new file mode 100644
index 0000000..f2753bc
--- /dev/null
+++ b/audclub/src/main/java/com/web/audclub/MyFirebaseMessageingService.java
@@ -0,0 +1,125 @@
+package com.web.audclub;
+
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import com.google.firebase.messaging.FirebaseMessagingService;
+import com.google.firebase.messaging.RemoteMessage;
+import com.google.gson.Gson;
+import com.web.base.GsonUtils;
+import com.web.base.MessageInfo;
+import java.util.Map;
+import java.util.Random;
+
+public class MyFirebaseMessageingService extends FirebaseMessagingService {
+
+ public MyFirebaseMessageingService() {
+ }
+
+ @Override
+ public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
+ super.onMessageReceived(remoteMessage);
+ Map serviceData = remoteMessage.getData(); //后台推送数据
+ if (serviceData != null && serviceData.containsKey("message")) {
+ String value = serviceData.get("message");
+ Gson gson = new Gson();
+ MessageInfo messageInfo = gson.fromJson(value, MessageInfo.class);
+ showNotification(messageInfo);
+ } else {
+ //收到通知 创建notify
+ if (remoteMessage.getNotification() != null) {
+ showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
+ }
+ }
+ }
+
+ private void showNotification(MessageInfo messageInfo) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ notifyIntent.putExtra("message", messageInfo);
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+
+ private void showNotification(String title, String body) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.putExtra("message", body);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ MessageInfo messageInfo = GsonUtils.getObjFromJSON(body, MessageInfo.class);
+ if (messageInfo != null) {
+ body = messageInfo.getContent();
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+}
diff --git a/audclub/src/main/java/com/web/audclub/WebApplication.java b/audclub/src/main/java/com/web/audclub/WebApplication.java
new file mode 100644
index 0000000..01d758c
--- /dev/null
+++ b/audclub/src/main/java/com/web/audclub/WebApplication.java
@@ -0,0 +1,35 @@
+package com.web.audclub;
+
+import android.app.Application;
+import android.content.Context;
+import com.tencent.smtt.export.external.TbsCoreSettings;
+import com.tencent.smtt.sdk.QbSdk;
+import java.util.HashMap;
+
+public class WebApplication extends Application {
+
+
+ public static Context application;
+ @Override
+ public void onCreate() {
+ super.onCreate();
+// 设置开启优化方案
+ application = this;
+ HashMap map = new HashMap();
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
+ QbSdk.initTbsSettings(map);
+ QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
+ @Override
+ public void onCoreInitFinished() {
+
+ }
+
+ @Override
+ public void onViewInitFinished(boolean b) {
+
+ }
+ });
+ QbSdk.setDownloadWithoutWifi(true);
+ }
+}
diff --git a/audclub/src/main/res/drawable-anydpi/ic_action_back.xml b/audclub/src/main/res/drawable-anydpi/ic_action_back.xml
new file mode 100644
index 0000000..013ab07
--- /dev/null
+++ b/audclub/src/main/res/drawable-anydpi/ic_action_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/audclub/src/main/res/drawable-hdpi/ic_action_back.png b/audclub/src/main/res/drawable-hdpi/ic_action_back.png
new file mode 100644
index 0000000..1560c04
Binary files /dev/null and b/audclub/src/main/res/drawable-hdpi/ic_action_back.png differ
diff --git a/audclub/src/main/res/drawable-mdpi/ic_action_back.png b/audclub/src/main/res/drawable-mdpi/ic_action_back.png
new file mode 100644
index 0000000..d5841d2
Binary files /dev/null and b/audclub/src/main/res/drawable-mdpi/ic_action_back.png differ
diff --git a/audclub/src/main/res/drawable-v24/ic_launcher_foreground.xml b/audclub/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/audclub/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/drawable-xhdpi/ic_action_back.png b/audclub/src/main/res/drawable-xhdpi/ic_action_back.png
new file mode 100644
index 0000000..5c14e41
Binary files /dev/null and b/audclub/src/main/res/drawable-xhdpi/ic_action_back.png differ
diff --git a/audclub/src/main/res/drawable-xxhdpi/ic_action_back.png b/audclub/src/main/res/drawable-xxhdpi/ic_action_back.png
new file mode 100644
index 0000000..0516d08
Binary files /dev/null and b/audclub/src/main/res/drawable-xxhdpi/ic_action_back.png differ
diff --git a/audclub/src/main/res/drawable/big_bg.xml b/audclub/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..11b4342
--- /dev/null
+++ b/audclub/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/drawable/ic_launcher_background.xml b/audclub/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/audclub/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/audclub/src/main/res/drawable/input_bg.xml b/audclub/src/main/res/drawable/input_bg.xml
new file mode 100644
index 0000000..4e895aa
--- /dev/null
+++ b/audclub/src/main/res/drawable/input_bg.xml
@@ -0,0 +1,20 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/audclub/src/main/res/drawable/pass_word_bg.xml b/audclub/src/main/res/drawable/pass_word_bg.xml
new file mode 100644
index 0000000..2724e60
--- /dev/null
+++ b/audclub/src/main/res/drawable/pass_word_bg.xml
@@ -0,0 +1,28 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/audclub/src/main/res/drawable/pass_word_bg1.xml b/audclub/src/main/res/drawable/pass_word_bg1.xml
new file mode 100644
index 0000000..d10d780
--- /dev/null
+++ b/audclub/src/main/res/drawable/pass_word_bg1.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/drawable/pass_word_bg2.xml b/audclub/src/main/res/drawable/pass_word_bg2.xml
new file mode 100644
index 0000000..916d99c
--- /dev/null
+++ b/audclub/src/main/res/drawable/pass_word_bg2.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/drawable/shape_btn_bg.xml b/audclub/src/main/res/drawable/shape_btn_bg.xml
new file mode 100644
index 0000000..af87a0d
--- /dev/null
+++ b/audclub/src/main/res/drawable/shape_btn_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/drawable/shape_dialog_bg2.xml b/audclub/src/main/res/drawable/shape_dialog_bg2.xml
new file mode 100644
index 0000000..7837a42
--- /dev/null
+++ b/audclub/src/main/res/drawable/shape_dialog_bg2.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/drawable/shape_dialog_bg3.xml b/audclub/src/main/res/drawable/shape_dialog_bg3.xml
new file mode 100644
index 0000000..ca0a18d
--- /dev/null
+++ b/audclub/src/main/res/drawable/shape_dialog_bg3.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/drawable/shape_dialog_bg_new.xml b/audclub/src/main/res/drawable/shape_dialog_bg_new.xml
new file mode 100644
index 0000000..e96d4e0
--- /dev/null
+++ b/audclub/src/main/res/drawable/shape_dialog_bg_new.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/audclub/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/audclub/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/audclub/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/audclub/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/mipmap-hdpi/ic_empty.png b/audclub/src/main/res/mipmap-hdpi/ic_empty.png
new file mode 100644
index 0000000..72473d6
Binary files /dev/null and b/audclub/src/main/res/mipmap-hdpi/ic_empty.png differ
diff --git a/audclub/src/main/res/mipmap-hdpi/ic_pull_down.png b/audclub/src/main/res/mipmap-hdpi/ic_pull_down.png
new file mode 100644
index 0000000..7dc0ec3
Binary files /dev/null and b/audclub/src/main/res/mipmap-hdpi/ic_pull_down.png differ
diff --git a/audclub/src/main/res/mipmap-xhdpi/ic_close.png b/audclub/src/main/res/mipmap-xhdpi/ic_close.png
new file mode 100644
index 0000000..c0b0127
Binary files /dev/null and b/audclub/src/main/res/mipmap-xhdpi/ic_close.png differ
diff --git a/audclub/src/main/res/mipmap-xhdpi/ic_menu.png b/audclub/src/main/res/mipmap-xhdpi/ic_menu.png
new file mode 100644
index 0000000..2b55ec5
Binary files /dev/null and b/audclub/src/main/res/mipmap-xhdpi/ic_menu.png differ
diff --git a/audclub/src/main/res/mipmap-xxhdpi/app_logo.jpg b/audclub/src/main/res/mipmap-xxhdpi/app_logo.jpg
new file mode 100644
index 0000000..3a9264d
Binary files /dev/null and b/audclub/src/main/res/mipmap-xxhdpi/app_logo.jpg differ
diff --git a/audclub/src/main/res/values-en/strings.xml b/audclub/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..0d60963
--- /dev/null
+++ b/audclub/src/main/res/values-en/strings.xml
@@ -0,0 +1,51 @@
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+
\ No newline at end of file
diff --git a/audclub/src/main/res/values-night/themes.xml b/audclub/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..89e12d2
--- /dev/null
+++ b/audclub/src/main/res/values-night/themes.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/values/colors.xml b/audclub/src/main/res/values/colors.xml
new file mode 100644
index 0000000..5250a36
--- /dev/null
+++ b/audclub/src/main/res/values/colors.xml
@@ -0,0 +1,18 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #FFFFFFFF
+ #876f41
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/values/strings.xml b/audclub/src/main/res/values/strings.xml
new file mode 100644
index 0000000..2224c12
--- /dev/null
+++ b/audclub/src/main/res/values/strings.xml
@@ -0,0 +1,74 @@
+
+ AUDClub
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/values/themes.xml b/audclub/src/main/res/values/themes.xml
new file mode 100644
index 0000000..cde6291
--- /dev/null
+++ b/audclub/src/main/res/values/themes.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/xml/app_updater_paths.xml b/audclub/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/audclub/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/xml/network_security_config.xml b/audclub/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/audclub/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/main/res/xml/provider_paths.xml b/audclub/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/audclub/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/audclub/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/audclub/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/audclub/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/auking777/.gitignore b/auking777/.gitignore
new file mode 100644
index 0000000..956c004
--- /dev/null
+++ b/auking777/.gitignore
@@ -0,0 +1,2 @@
+/build
+/release
\ No newline at end of file
diff --git a/auking777/build.gradle b/auking777/build.gradle
new file mode 100644
index 0000000..cf4369d
--- /dev/null
+++ b/auking777/build.gradle
@@ -0,0 +1,78 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.web.auking777"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+ debug {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ release {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "auking777"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_no_music')
+}
\ No newline at end of file
diff --git a/auking777/dskjweb.jks b/auking777/dskjweb.jks
new file mode 100644
index 0000000..a303350
Binary files /dev/null and b/auking777/dskjweb.jks differ
diff --git a/auking777/google-services.json b/auking777/google-services.json
new file mode 100644
index 0000000..16d0bcd
--- /dev/null
+++ b/auking777/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "555503315200",
+ "project_id": "auking777-708e5",
+ "storage_bucket": "auking777-708e5.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:555503315200:android:cb1a6c1c09d4b252bbebe5",
+ "android_client_info": {
+ "package_name": "com.web.auking777"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyB1hEg3_gZoX1yoZ77pOW-HHPsVGOqhfvs"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/auking777/ppn.jks b/auking777/ppn.jks
new file mode 100644
index 0000000..5898029
Binary files /dev/null and b/auking777/ppn.jks differ
diff --git a/auking777/proguard-rules.pro b/auking777/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/auking777/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/auking777/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/auking777/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/auking777/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/auking777/src/main/AndroidManifest.xml b/auking777/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..3cc3b5a
--- /dev/null
+++ b/auking777/src/main/AndroidManifest.xml
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/java/com/web/auking777/MainActivity.java b/auking777/src/main/java/com/web/auking777/MainActivity.java
new file mode 100644
index 0000000..ab61ae6
--- /dev/null
+++ b/auking777/src/main/java/com/web/auking777/MainActivity.java
@@ -0,0 +1,51 @@
+package com.web.auking777;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.os.Bundle;
+
+import com.bumptech.glide.Glide;
+import com.web.base.MainActivity2;
+import com.google.firebase.messaging.FirebaseMessaging;
+
+public class MainActivity extends MainActivity2 {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ userId = 186;
+ saveInt(MainActivity.this,"user_code",userId);
+ saveInt(MainActivity.this,"version_code",getVersion());
+ com.web.base.MainActivity.saveString(this, "base_url","https://www.auking777.com/");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#d8e2f0");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#fafbfd");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity.this,"is_white",0);
+ super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(false);
+// showTopV1.setImageResource(R.mipmap.start_gifs);
+ Glide.with(MainActivity.this).load(R.mipmap.start_gifs).into(showTopV1);
+ //订阅主题
+ FirebaseMessaging.getInstance().subscribeToTopic("demo")
+ .addOnCompleteListener(task -> {
+ });
+// getWindow().getDecorView().setBackgroundResource(Color.parseColor("#01052a"));
+// Glide.with(MainActivity.this).load(R.mipmap.load_img).into(showTopV1);
+ }
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/auking777/src/main/java/com/web/auking777/MyFirebaseMessageingService.java b/auking777/src/main/java/com/web/auking777/MyFirebaseMessageingService.java
new file mode 100644
index 0000000..a5e1b23
--- /dev/null
+++ b/auking777/src/main/java/com/web/auking777/MyFirebaseMessageingService.java
@@ -0,0 +1,125 @@
+package com.web.auking777;
+
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import com.google.firebase.messaging.FirebaseMessagingService;
+import com.google.firebase.messaging.RemoteMessage;
+import com.google.gson.Gson;
+import com.web.base.GsonUtils;
+import com.web.base.MessageInfo;
+import java.util.Map;
+import java.util.Random;
+
+public class MyFirebaseMessageingService extends FirebaseMessagingService {
+
+ public MyFirebaseMessageingService() {
+ }
+
+ @Override
+ public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
+ super.onMessageReceived(remoteMessage);
+ Map serviceData = remoteMessage.getData(); //后台推送数据
+ if (serviceData != null && serviceData.containsKey("message")) {
+ String value = serviceData.get("message");
+ Gson gson = new Gson();
+ MessageInfo messageInfo = gson.fromJson(value, MessageInfo.class);
+ showNotification(messageInfo);
+ } else {
+ //收到通知 创建notify
+ if (remoteMessage.getNotification() != null) {
+ showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
+ }
+ }
+ }
+
+ private void showNotification(MessageInfo messageInfo) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ notifyIntent.putExtra("message", messageInfo);
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+
+ private void showNotification(String title, String body) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.putExtra("message", body);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ MessageInfo messageInfo = GsonUtils.getObjFromJSON(body, MessageInfo.class);
+ if (messageInfo != null) {
+ body = messageInfo.getContent();
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+}
diff --git a/mudahking/src/main/java/com/web/mudahking/WebApplication.java b/auking777/src/main/java/com/web/auking777/WebApplication.java
similarity index 97%
rename from mudahking/src/main/java/com/web/mudahking/WebApplication.java
rename to auking777/src/main/java/com/web/auking777/WebApplication.java
index 06637a8..4e58413 100644
--- a/mudahking/src/main/java/com/web/mudahking/WebApplication.java
+++ b/auking777/src/main/java/com/web/auking777/WebApplication.java
@@ -1,4 +1,4 @@
-package com.web.mudahking;
+package com.web.auking777;
import android.app.Application;
import android.content.Context;
diff --git a/auking777/src/main/res/drawable-anydpi/ic_action_back.xml b/auking777/src/main/res/drawable-anydpi/ic_action_back.xml
new file mode 100644
index 0000000..013ab07
--- /dev/null
+++ b/auking777/src/main/res/drawable-anydpi/ic_action_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/auking777/src/main/res/drawable-hdpi/ic_action_back.png b/auking777/src/main/res/drawable-hdpi/ic_action_back.png
new file mode 100644
index 0000000..1560c04
Binary files /dev/null and b/auking777/src/main/res/drawable-hdpi/ic_action_back.png differ
diff --git a/auking777/src/main/res/drawable-mdpi/ic_action_back.png b/auking777/src/main/res/drawable-mdpi/ic_action_back.png
new file mode 100644
index 0000000..d5841d2
Binary files /dev/null and b/auking777/src/main/res/drawable-mdpi/ic_action_back.png differ
diff --git a/auking777/src/main/res/drawable-v24/ic_launcher_foreground.xml b/auking777/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/auking777/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/drawable-xhdpi/ic_action_back.png b/auking777/src/main/res/drawable-xhdpi/ic_action_back.png
new file mode 100644
index 0000000..5c14e41
Binary files /dev/null and b/auking777/src/main/res/drawable-xhdpi/ic_action_back.png differ
diff --git a/auking777/src/main/res/drawable-xxhdpi/ic_action_back.png b/auking777/src/main/res/drawable-xxhdpi/ic_action_back.png
new file mode 100644
index 0000000..0516d08
Binary files /dev/null and b/auking777/src/main/res/drawable-xxhdpi/ic_action_back.png differ
diff --git a/auking777/src/main/res/drawable/big_bg.xml b/auking777/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..8a1713a
--- /dev/null
+++ b/auking777/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/drawable/ic_launcher_background.xml b/auking777/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/auking777/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/auking777/src/main/res/drawable/input_bg.xml b/auking777/src/main/res/drawable/input_bg.xml
new file mode 100644
index 0000000..4e895aa
--- /dev/null
+++ b/auking777/src/main/res/drawable/input_bg.xml
@@ -0,0 +1,20 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/auking777/src/main/res/drawable/pass_word_bg.xml b/auking777/src/main/res/drawable/pass_word_bg.xml
new file mode 100644
index 0000000..2724e60
--- /dev/null
+++ b/auking777/src/main/res/drawable/pass_word_bg.xml
@@ -0,0 +1,28 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/auking777/src/main/res/drawable/pass_word_bg1.xml b/auking777/src/main/res/drawable/pass_word_bg1.xml
new file mode 100644
index 0000000..d10d780
--- /dev/null
+++ b/auking777/src/main/res/drawable/pass_word_bg1.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/drawable/pass_word_bg2.xml b/auking777/src/main/res/drawable/pass_word_bg2.xml
new file mode 100644
index 0000000..916d99c
--- /dev/null
+++ b/auking777/src/main/res/drawable/pass_word_bg2.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/drawable/shape_btn_bg.xml b/auking777/src/main/res/drawable/shape_btn_bg.xml
new file mode 100644
index 0000000..af87a0d
--- /dev/null
+++ b/auking777/src/main/res/drawable/shape_btn_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/drawable/shape_dialog_bg2.xml b/auking777/src/main/res/drawable/shape_dialog_bg2.xml
new file mode 100644
index 0000000..7837a42
--- /dev/null
+++ b/auking777/src/main/res/drawable/shape_dialog_bg2.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/drawable/shape_dialog_bg3.xml b/auking777/src/main/res/drawable/shape_dialog_bg3.xml
new file mode 100644
index 0000000..ca0a18d
--- /dev/null
+++ b/auking777/src/main/res/drawable/shape_dialog_bg3.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/drawable/shape_dialog_bg_new.xml b/auking777/src/main/res/drawable/shape_dialog_bg_new.xml
new file mode 100644
index 0000000..e96d4e0
--- /dev/null
+++ b/auking777/src/main/res/drawable/shape_dialog_bg_new.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/auking777/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/auking777/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/auking777/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/auking777/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/mipmap-hdpi/ic_empty.png b/auking777/src/main/res/mipmap-hdpi/ic_empty.png
new file mode 100644
index 0000000..72473d6
Binary files /dev/null and b/auking777/src/main/res/mipmap-hdpi/ic_empty.png differ
diff --git a/auking777/src/main/res/mipmap-hdpi/ic_pull_down.png b/auking777/src/main/res/mipmap-hdpi/ic_pull_down.png
new file mode 100644
index 0000000..7dc0ec3
Binary files /dev/null and b/auking777/src/main/res/mipmap-hdpi/ic_pull_down.png differ
diff --git a/auking777/src/main/res/mipmap-xhdpi/ic_close.png b/auking777/src/main/res/mipmap-xhdpi/ic_close.png
new file mode 100644
index 0000000..c0b0127
Binary files /dev/null and b/auking777/src/main/res/mipmap-xhdpi/ic_close.png differ
diff --git a/auking777/src/main/res/mipmap-xhdpi/ic_menu.png b/auking777/src/main/res/mipmap-xhdpi/ic_menu.png
new file mode 100644
index 0000000..2b55ec5
Binary files /dev/null and b/auking777/src/main/res/mipmap-xhdpi/ic_menu.png differ
diff --git a/auking777/src/main/res/mipmap-xxhdpi/app_logo.png b/auking777/src/main/res/mipmap-xxhdpi/app_logo.png
new file mode 100644
index 0000000..8450aa8
Binary files /dev/null and b/auking777/src/main/res/mipmap-xxhdpi/app_logo.png differ
diff --git a/auking777/src/main/res/mipmap-xxhdpi/start_gifs.gif b/auking777/src/main/res/mipmap-xxhdpi/start_gifs.gif
new file mode 100644
index 0000000..2f8c044
Binary files /dev/null and b/auking777/src/main/res/mipmap-xxhdpi/start_gifs.gif differ
diff --git a/auking777/src/main/res/values-en/strings.xml b/auking777/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..0d60963
--- /dev/null
+++ b/auking777/src/main/res/values-en/strings.xml
@@ -0,0 +1,51 @@
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+
\ No newline at end of file
diff --git a/auking777/src/main/res/values-night/themes.xml b/auking777/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..89e12d2
--- /dev/null
+++ b/auking777/src/main/res/values-night/themes.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/values/colors.xml b/auking777/src/main/res/values/colors.xml
new file mode 100644
index 0000000..5bab871
--- /dev/null
+++ b/auking777/src/main/res/values/colors.xml
@@ -0,0 +1,18 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #FFFFFFFF
+ #d8e2f0
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/values/strings.xml b/auking777/src/main/res/values/strings.xml
new file mode 100644
index 0000000..3d4447b
--- /dev/null
+++ b/auking777/src/main/res/values/strings.xml
@@ -0,0 +1,74 @@
+
+ AUKING777
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/values/themes.xml b/auking777/src/main/res/values/themes.xml
new file mode 100644
index 0000000..efa2168
--- /dev/null
+++ b/auking777/src/main/res/values/themes.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/xml/app_updater_paths.xml b/auking777/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/auking777/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/xml/network_security_config.xml b/auking777/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/auking777/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/main/res/xml/provider_paths.xml b/auking777/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/auking777/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auking777/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/auking777/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/auking777/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/auplay77/.gitignore b/auplay77/.gitignore
new file mode 100644
index 0000000..956c004
--- /dev/null
+++ b/auplay77/.gitignore
@@ -0,0 +1,2 @@
+/build
+/release
\ No newline at end of file
diff --git a/auplay77/build.gradle b/auplay77/build.gradle
new file mode 100644
index 0000000..3a84a10
--- /dev/null
+++ b/auplay77/build.gradle
@@ -0,0 +1,78 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.web.auplay77"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+ debug {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ release {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "auplay77"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_no_music')
+}
\ No newline at end of file
diff --git a/auplay77/dskjweb.jks b/auplay77/dskjweb.jks
new file mode 100644
index 0000000..a303350
Binary files /dev/null and b/auplay77/dskjweb.jks differ
diff --git a/auplay77/google-services.json b/auplay77/google-services.json
new file mode 100644
index 0000000..531201c
--- /dev/null
+++ b/auplay77/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "603393392393",
+ "project_id": "auplay77-663d2",
+ "storage_bucket": "auplay77-663d2.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:603393392393:android:52d00b35e03c86d10f9dd8",
+ "android_client_info": {
+ "package_name": "com.web.auplay77"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBGrLd3E9mQHk2g9D-HWPH4oQGM5Gh-md0"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/auplay77/ppn.jks b/auplay77/ppn.jks
new file mode 100644
index 0000000..5898029
Binary files /dev/null and b/auplay77/ppn.jks differ
diff --git a/auplay77/proguard-rules.pro b/auplay77/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/auplay77/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/auplay77/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/auplay77/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/auplay77/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/auplay77/src/main/AndroidManifest.xml b/auplay77/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..b4daa45
--- /dev/null
+++ b/auplay77/src/main/AndroidManifest.xml
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/java/com/web/auplay77/MainActivity.java b/auplay77/src/main/java/com/web/auplay77/MainActivity.java
new file mode 100644
index 0000000..5fd8236
--- /dev/null
+++ b/auplay77/src/main/java/com/web/auplay77/MainActivity.java
@@ -0,0 +1,63 @@
+package com.web.auplay77;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+
+import com.bumptech.glide.Glide;
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.web.base.LogUtils;
+import com.web.base.MainActivity2;
+import com.google.firebase.messaging.FirebaseMessaging;
+
+public class MainActivity extends MainActivity2 {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ userId = 190;
+ saveInt(MainActivity.this,"user_code",userId);
+ saveInt(MainActivity.this,"version_code",getVersion());
+ com.web.base.MainActivity.saveString(this, "base_url","https://auplay77.com/");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#b3b3b3");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#b3b3b3");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity.this,"is_white",0);
+ super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(true);
+// showTopV1.setImageResource(R.mipmap.start_gifs);
+ //订阅主题
+ FirebaseMessaging.getInstance().subscribeToTopic("demo")
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ String msg = "Subscribed";
+ if (!task.isSuccessful()) {
+ msg = "Subscribe failed";
+ }
+ LogUtils.i("结果:"+msg);
+ }
+ });
+// getWindow().getDecorView().setBackgroundResource(Color.parseColor("#01052a"));
+// Glide.with(MainActivity.this).load(R.mipmap.load_img).into(showTopV1);
+ }
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/auplay77/src/main/java/com/web/auplay77/MyFirebaseMessageingService.java b/auplay77/src/main/java/com/web/auplay77/MyFirebaseMessageingService.java
new file mode 100644
index 0000000..421532d
--- /dev/null
+++ b/auplay77/src/main/java/com/web/auplay77/MyFirebaseMessageingService.java
@@ -0,0 +1,125 @@
+package com.web.auplay77;
+
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import com.google.firebase.messaging.FirebaseMessagingService;
+import com.google.firebase.messaging.RemoteMessage;
+import com.google.gson.Gson;
+import com.web.base.GsonUtils;
+import com.web.base.MessageInfo;
+import java.util.Map;
+import java.util.Random;
+
+public class MyFirebaseMessageingService extends FirebaseMessagingService {
+
+ public MyFirebaseMessageingService() {
+ }
+
+ @Override
+ public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
+ super.onMessageReceived(remoteMessage);
+ Map serviceData = remoteMessage.getData(); //后台推送数据
+ if (serviceData != null && serviceData.containsKey("message")) {
+ String value = serviceData.get("message");
+ Gson gson = new Gson();
+ MessageInfo messageInfo = gson.fromJson(value, MessageInfo.class);
+ showNotification(messageInfo);
+ } else {
+ //收到通知 创建notify
+ if (remoteMessage.getNotification() != null) {
+ showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
+ }
+ }
+ }
+
+ private void showNotification(MessageInfo messageInfo) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ notifyIntent.putExtra("message", messageInfo);
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+
+ private void showNotification(String title, String body) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.putExtra("message", body);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ MessageInfo messageInfo = GsonUtils.getObjFromJSON(body, MessageInfo.class);
+ if (messageInfo != null) {
+ body = messageInfo.getContent();
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+}
diff --git a/auplay77/src/main/java/com/web/auplay77/WebApplication.java b/auplay77/src/main/java/com/web/auplay77/WebApplication.java
new file mode 100644
index 0000000..8ae7415
--- /dev/null
+++ b/auplay77/src/main/java/com/web/auplay77/WebApplication.java
@@ -0,0 +1,35 @@
+package com.web.auplay77;
+
+import android.app.Application;
+import android.content.Context;
+import com.tencent.smtt.export.external.TbsCoreSettings;
+import com.tencent.smtt.sdk.QbSdk;
+import java.util.HashMap;
+
+public class WebApplication extends Application {
+
+
+ public static Context application;
+ @Override
+ public void onCreate() {
+ super.onCreate();
+// 设置开启优化方案
+ application = this;
+ HashMap map = new HashMap();
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
+ QbSdk.initTbsSettings(map);
+ QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
+ @Override
+ public void onCoreInitFinished() {
+
+ }
+
+ @Override
+ public void onViewInitFinished(boolean b) {
+
+ }
+ });
+ QbSdk.setDownloadWithoutWifi(true);
+ }
+}
diff --git a/auplay77/src/main/res/drawable-anydpi/ic_action_back.xml b/auplay77/src/main/res/drawable-anydpi/ic_action_back.xml
new file mode 100644
index 0000000..013ab07
--- /dev/null
+++ b/auplay77/src/main/res/drawable-anydpi/ic_action_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/auplay77/src/main/res/drawable-hdpi/ic_action_back.png b/auplay77/src/main/res/drawable-hdpi/ic_action_back.png
new file mode 100644
index 0000000..1560c04
Binary files /dev/null and b/auplay77/src/main/res/drawable-hdpi/ic_action_back.png differ
diff --git a/auplay77/src/main/res/drawable-mdpi/ic_action_back.png b/auplay77/src/main/res/drawable-mdpi/ic_action_back.png
new file mode 100644
index 0000000..d5841d2
Binary files /dev/null and b/auplay77/src/main/res/drawable-mdpi/ic_action_back.png differ
diff --git a/auplay77/src/main/res/drawable-v24/ic_launcher_foreground.xml b/auplay77/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/auplay77/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/drawable-xhdpi/ic_action_back.png b/auplay77/src/main/res/drawable-xhdpi/ic_action_back.png
new file mode 100644
index 0000000..5c14e41
Binary files /dev/null and b/auplay77/src/main/res/drawable-xhdpi/ic_action_back.png differ
diff --git a/auplay77/src/main/res/drawable-xxhdpi/ic_action_back.png b/auplay77/src/main/res/drawable-xxhdpi/ic_action_back.png
new file mode 100644
index 0000000..0516d08
Binary files /dev/null and b/auplay77/src/main/res/drawable-xxhdpi/ic_action_back.png differ
diff --git a/auplay77/src/main/res/drawable/big_bg.xml b/auplay77/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..89e97ce
--- /dev/null
+++ b/auplay77/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/drawable/ic_launcher_background.xml b/auplay77/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/auplay77/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/auplay77/src/main/res/drawable/input_bg.xml b/auplay77/src/main/res/drawable/input_bg.xml
new file mode 100644
index 0000000..4e895aa
--- /dev/null
+++ b/auplay77/src/main/res/drawable/input_bg.xml
@@ -0,0 +1,20 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/auplay77/src/main/res/drawable/pass_word_bg.xml b/auplay77/src/main/res/drawable/pass_word_bg.xml
new file mode 100644
index 0000000..2724e60
--- /dev/null
+++ b/auplay77/src/main/res/drawable/pass_word_bg.xml
@@ -0,0 +1,28 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/auplay77/src/main/res/drawable/pass_word_bg1.xml b/auplay77/src/main/res/drawable/pass_word_bg1.xml
new file mode 100644
index 0000000..d10d780
--- /dev/null
+++ b/auplay77/src/main/res/drawable/pass_word_bg1.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/drawable/pass_word_bg2.xml b/auplay77/src/main/res/drawable/pass_word_bg2.xml
new file mode 100644
index 0000000..916d99c
--- /dev/null
+++ b/auplay77/src/main/res/drawable/pass_word_bg2.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/drawable/shape_btn_bg.xml b/auplay77/src/main/res/drawable/shape_btn_bg.xml
new file mode 100644
index 0000000..af87a0d
--- /dev/null
+++ b/auplay77/src/main/res/drawable/shape_btn_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/drawable/shape_dialog_bg2.xml b/auplay77/src/main/res/drawable/shape_dialog_bg2.xml
new file mode 100644
index 0000000..7837a42
--- /dev/null
+++ b/auplay77/src/main/res/drawable/shape_dialog_bg2.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/drawable/shape_dialog_bg3.xml b/auplay77/src/main/res/drawable/shape_dialog_bg3.xml
new file mode 100644
index 0000000..ca0a18d
--- /dev/null
+++ b/auplay77/src/main/res/drawable/shape_dialog_bg3.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/drawable/shape_dialog_bg_new.xml b/auplay77/src/main/res/drawable/shape_dialog_bg_new.xml
new file mode 100644
index 0000000..e96d4e0
--- /dev/null
+++ b/auplay77/src/main/res/drawable/shape_dialog_bg_new.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/auplay77/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/auplay77/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/auplay77/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/auplay77/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/mipmap-hdpi/ic_empty.png b/auplay77/src/main/res/mipmap-hdpi/ic_empty.png
new file mode 100644
index 0000000..72473d6
Binary files /dev/null and b/auplay77/src/main/res/mipmap-hdpi/ic_empty.png differ
diff --git a/auplay77/src/main/res/mipmap-hdpi/ic_pull_down.png b/auplay77/src/main/res/mipmap-hdpi/ic_pull_down.png
new file mode 100644
index 0000000..7dc0ec3
Binary files /dev/null and b/auplay77/src/main/res/mipmap-hdpi/ic_pull_down.png differ
diff --git a/auplay77/src/main/res/mipmap-xhdpi/ic_close.png b/auplay77/src/main/res/mipmap-xhdpi/ic_close.png
new file mode 100644
index 0000000..c0b0127
Binary files /dev/null and b/auplay77/src/main/res/mipmap-xhdpi/ic_close.png differ
diff --git a/auplay77/src/main/res/mipmap-xhdpi/ic_menu.png b/auplay77/src/main/res/mipmap-xhdpi/ic_menu.png
new file mode 100644
index 0000000..2b55ec5
Binary files /dev/null and b/auplay77/src/main/res/mipmap-xhdpi/ic_menu.png differ
diff --git a/auplay77/src/main/res/mipmap-xxhdpi/app_logo.png b/auplay77/src/main/res/mipmap-xxhdpi/app_logo.png
new file mode 100644
index 0000000..7cc6bae
Binary files /dev/null and b/auplay77/src/main/res/mipmap-xxhdpi/app_logo.png differ
diff --git a/auplay77/src/main/res/values-en/strings.xml b/auplay77/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..0d60963
--- /dev/null
+++ b/auplay77/src/main/res/values-en/strings.xml
@@ -0,0 +1,51 @@
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/values-night/themes.xml b/auplay77/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..89e12d2
--- /dev/null
+++ b/auplay77/src/main/res/values-night/themes.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/values/colors.xml b/auplay77/src/main/res/values/colors.xml
new file mode 100644
index 0000000..285b6ad
--- /dev/null
+++ b/auplay77/src/main/res/values/colors.xml
@@ -0,0 +1,18 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #FFFFFFFF
+ #b3b3b3
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/values/strings.xml b/auplay77/src/main/res/values/strings.xml
new file mode 100644
index 0000000..a3c6877
--- /dev/null
+++ b/auplay77/src/main/res/values/strings.xml
@@ -0,0 +1,74 @@
+
+ AUPLAY77
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/values/themes.xml b/auplay77/src/main/res/values/themes.xml
new file mode 100644
index 0000000..efa2168
--- /dev/null
+++ b/auplay77/src/main/res/values/themes.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/xml/app_updater_paths.xml b/auplay77/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/auplay77/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/xml/network_security_config.xml b/auplay77/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/auplay77/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/main/res/xml/provider_paths.xml b/auplay77/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/auplay77/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auplay77/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/auplay77/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/auplay77/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/babelive/.gitignore b/babelive/.gitignore
new file mode 100644
index 0000000..956c004
--- /dev/null
+++ b/babelive/.gitignore
@@ -0,0 +1,2 @@
+/build
+/release
\ No newline at end of file
diff --git a/babelive/build.gradle b/babelive/build.gradle
new file mode 100644
index 0000000..6dfa14f
--- /dev/null
+++ b/babelive/build.gradle
@@ -0,0 +1,89 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.xyz.babelive"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+// debug {
+// storeFile file('ppn.jks')
+// storePassword "2014123456"
+// keyAlias 'key0'
+// keyPassword "2014123456"
+// }
+// release {
+// storeFile file('ppn.jks')
+// storePassword "2014123456"
+// keyAlias 'key0'
+// keyPassword "2014123456"
+// }
+ debug {
+ storeFile file('justlet.jks')
+ storePassword "123456"
+ keyAlias 'key0'
+ keyPassword "123456"
+ }
+ release {
+ storeFile file('justlet.jks')
+ storePassword "123456"
+ keyAlias 'key0'
+ keyPassword "123456"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "babelive"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_no_all')
+}
\ No newline at end of file
diff --git a/babelive/justlet.jks b/babelive/justlet.jks
new file mode 100644
index 0000000..a33b839
Binary files /dev/null and b/babelive/justlet.jks differ
diff --git a/babelive/ppn.jks b/babelive/ppn.jks
new file mode 100644
index 0000000..5898029
Binary files /dev/null and b/babelive/ppn.jks differ
diff --git a/babelive/proguard-rules.pro b/babelive/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/babelive/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/babelive/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/babelive/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/babelive/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/babelive/src/main/AndroidManifest.xml b/babelive/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..752f550
--- /dev/null
+++ b/babelive/src/main/AndroidManifest.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/java/com/xyz/babelive/MainActivity.java b/babelive/src/main/java/com/xyz/babelive/MainActivity.java
new file mode 100644
index 0000000..44c05af
--- /dev/null
+++ b/babelive/src/main/java/com/xyz/babelive/MainActivity.java
@@ -0,0 +1,57 @@
+package com.xyz.babelive;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+
+import com.web.base.LogUtils;
+import com.web.base.MainActivity2;
+import com.google.firebase.messaging.FirebaseMessaging;
+
+public class MainActivity extends MainActivity2 {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ userId = -100;
+ saveInt(MainActivity.this,"user_code",userId);
+ saveInt(MainActivity.this,"version_code",getVersion());
+ com.web.base.MainActivity.saveString(this, "base_url","https://www.babelive.my/");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#000000");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#141414");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity.this,"is_white",1);
+ super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(false);
+ //订阅主题
+ try {
+ FirebaseMessaging.getInstance().subscribeToTopic("demo")
+ .addOnCompleteListener(task -> {
+ String msg = "Subscribed";
+ if (!task.isSuccessful()) {
+ msg = "Subscribe failed";
+ }
+ LogUtils.i("结果:"+msg);
+ });
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+
+ }
+
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/babelive/src/main/java/com/xyz/babelive/WebApplication.java b/babelive/src/main/java/com/xyz/babelive/WebApplication.java
new file mode 100644
index 0000000..00c23c5
--- /dev/null
+++ b/babelive/src/main/java/com/xyz/babelive/WebApplication.java
@@ -0,0 +1,35 @@
+package com.xyz.babelive;
+
+import android.app.Application;
+import android.content.Context;
+import com.tencent.smtt.export.external.TbsCoreSettings;
+import com.tencent.smtt.sdk.QbSdk;
+import java.util.HashMap;
+
+public class WebApplication extends Application {
+
+
+ public static Context application;
+ @Override
+ public void onCreate() {
+ super.onCreate();
+// 设置开启优化方案
+ application = this;
+ HashMap map = new HashMap();
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
+ QbSdk.initTbsSettings(map);
+ QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
+ @Override
+ public void onCoreInitFinished() {
+
+ }
+
+ @Override
+ public void onViewInitFinished(boolean b) {
+
+ }
+ });
+ QbSdk.setDownloadWithoutWifi(true);
+ }
+}
diff --git a/babelive/src/main/res/drawable-anydpi/ic_action_back.xml b/babelive/src/main/res/drawable-anydpi/ic_action_back.xml
new file mode 100644
index 0000000..013ab07
--- /dev/null
+++ b/babelive/src/main/res/drawable-anydpi/ic_action_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/babelive/src/main/res/drawable-hdpi/ic_action_back.png b/babelive/src/main/res/drawable-hdpi/ic_action_back.png
new file mode 100644
index 0000000..1560c04
Binary files /dev/null and b/babelive/src/main/res/drawable-hdpi/ic_action_back.png differ
diff --git a/babelive/src/main/res/drawable-mdpi/ic_action_back.png b/babelive/src/main/res/drawable-mdpi/ic_action_back.png
new file mode 100644
index 0000000..d5841d2
Binary files /dev/null and b/babelive/src/main/res/drawable-mdpi/ic_action_back.png differ
diff --git a/babelive/src/main/res/drawable-v24/ic_launcher_foreground.xml b/babelive/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/babelive/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/drawable-xhdpi/ic_action_back.png b/babelive/src/main/res/drawable-xhdpi/ic_action_back.png
new file mode 100644
index 0000000..5c14e41
Binary files /dev/null and b/babelive/src/main/res/drawable-xhdpi/ic_action_back.png differ
diff --git a/babelive/src/main/res/drawable-xxhdpi/ic_action_back.png b/babelive/src/main/res/drawable-xxhdpi/ic_action_back.png
new file mode 100644
index 0000000..0516d08
Binary files /dev/null and b/babelive/src/main/res/drawable-xxhdpi/ic_action_back.png differ
diff --git a/babelive/src/main/res/drawable/big_bg.xml b/babelive/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..7fc8156
--- /dev/null
+++ b/babelive/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/drawable/ic_launcher_background.xml b/babelive/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/babelive/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/babelive/src/main/res/drawable/input_bg.xml b/babelive/src/main/res/drawable/input_bg.xml
new file mode 100644
index 0000000..4e895aa
--- /dev/null
+++ b/babelive/src/main/res/drawable/input_bg.xml
@@ -0,0 +1,20 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/babelive/src/main/res/drawable/pass_word_bg.xml b/babelive/src/main/res/drawable/pass_word_bg.xml
new file mode 100644
index 0000000..2724e60
--- /dev/null
+++ b/babelive/src/main/res/drawable/pass_word_bg.xml
@@ -0,0 +1,28 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/babelive/src/main/res/drawable/pass_word_bg1.xml b/babelive/src/main/res/drawable/pass_word_bg1.xml
new file mode 100644
index 0000000..d10d780
--- /dev/null
+++ b/babelive/src/main/res/drawable/pass_word_bg1.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/drawable/pass_word_bg2.xml b/babelive/src/main/res/drawable/pass_word_bg2.xml
new file mode 100644
index 0000000..916d99c
--- /dev/null
+++ b/babelive/src/main/res/drawable/pass_word_bg2.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/drawable/shape_btn_bg.xml b/babelive/src/main/res/drawable/shape_btn_bg.xml
new file mode 100644
index 0000000..af87a0d
--- /dev/null
+++ b/babelive/src/main/res/drawable/shape_btn_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/drawable/shape_dialog_bg2.xml b/babelive/src/main/res/drawable/shape_dialog_bg2.xml
new file mode 100644
index 0000000..7837a42
--- /dev/null
+++ b/babelive/src/main/res/drawable/shape_dialog_bg2.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/drawable/shape_dialog_bg3.xml b/babelive/src/main/res/drawable/shape_dialog_bg3.xml
new file mode 100644
index 0000000..ca0a18d
--- /dev/null
+++ b/babelive/src/main/res/drawable/shape_dialog_bg3.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/drawable/shape_dialog_bg_new.xml b/babelive/src/main/res/drawable/shape_dialog_bg_new.xml
new file mode 100644
index 0000000..e96d4e0
--- /dev/null
+++ b/babelive/src/main/res/drawable/shape_dialog_bg_new.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/babelive/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/babelive/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/babelive/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/babelive/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/mipmap-hdpi/ic_empty.png b/babelive/src/main/res/mipmap-hdpi/ic_empty.png
new file mode 100644
index 0000000..72473d6
Binary files /dev/null and b/babelive/src/main/res/mipmap-hdpi/ic_empty.png differ
diff --git a/babelive/src/main/res/mipmap-hdpi/ic_pull_down.png b/babelive/src/main/res/mipmap-hdpi/ic_pull_down.png
new file mode 100644
index 0000000..7dc0ec3
Binary files /dev/null and b/babelive/src/main/res/mipmap-hdpi/ic_pull_down.png differ
diff --git a/babelive/src/main/res/mipmap-xhdpi/ic_close.png b/babelive/src/main/res/mipmap-xhdpi/ic_close.png
new file mode 100644
index 0000000..c0b0127
Binary files /dev/null and b/babelive/src/main/res/mipmap-xhdpi/ic_close.png differ
diff --git a/babelive/src/main/res/mipmap-xhdpi/ic_menu.png b/babelive/src/main/res/mipmap-xhdpi/ic_menu.png
new file mode 100644
index 0000000..2b55ec5
Binary files /dev/null and b/babelive/src/main/res/mipmap-xhdpi/ic_menu.png differ
diff --git a/babelive/src/main/res/mipmap-xxhdpi/app_logo.png b/babelive/src/main/res/mipmap-xxhdpi/app_logo.png
new file mode 100644
index 0000000..b24925f
Binary files /dev/null and b/babelive/src/main/res/mipmap-xxhdpi/app_logo.png differ
diff --git a/babelive/src/main/res/values-en/strings.xml b/babelive/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..7a00b5e
--- /dev/null
+++ b/babelive/src/main/res/values-en/strings.xml
@@ -0,0 +1,52 @@
+
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+
\ No newline at end of file
diff --git a/babelive/src/main/res/values-night/themes.xml b/babelive/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..3b0f1a2
--- /dev/null
+++ b/babelive/src/main/res/values-night/themes.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/values/colors.xml b/babelive/src/main/res/values/colors.xml
new file mode 100644
index 0000000..0727d4e
--- /dev/null
+++ b/babelive/src/main/res/values/colors.xml
@@ -0,0 +1,19 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #FFFFFFFF
+ #0e1625
+
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/values/strings.xml b/babelive/src/main/res/values/strings.xml
new file mode 100644
index 0000000..17ec9ad
--- /dev/null
+++ b/babelive/src/main/res/values/strings.xml
@@ -0,0 +1,74 @@
+
+ BabeLive
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/values/themes.xml b/babelive/src/main/res/values/themes.xml
new file mode 100644
index 0000000..efa2168
--- /dev/null
+++ b/babelive/src/main/res/values/themes.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/xml/app_updater_paths.xml b/babelive/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/babelive/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/xml/network_security_config.xml b/babelive/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/babelive/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/main/res/xml/provider_paths.xml b/babelive/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/babelive/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/babelive/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/babelive/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/babelive/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/bandarjudi33/.gitignore b/bandarjudi33/.gitignore
new file mode 100644
index 0000000..956c004
--- /dev/null
+++ b/bandarjudi33/.gitignore
@@ -0,0 +1,2 @@
+/build
+/release
\ No newline at end of file
diff --git a/bandarjudi33/build.gradle b/bandarjudi33/build.gradle
new file mode 100644
index 0000000..e23bbb2
--- /dev/null
+++ b/bandarjudi33/build.gradle
@@ -0,0 +1,78 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.web.bandarjudi33"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+ debug {
+ storeFile file('ppn.jks')
+ storePassword "2014123456"
+ keyAlias 'key0'
+ keyPassword "2014123456"
+ }
+ release {
+ storeFile file('ppn.jks')
+ storePassword "2014123456"
+ keyAlias 'key0'
+ keyPassword "2014123456"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "bandarjudi33"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_no_music')
+}
\ No newline at end of file
diff --git a/bandarjudi33/google-services.json b/bandarjudi33/google-services.json
new file mode 100644
index 0000000..b0f943b
--- /dev/null
+++ b/bandarjudi33/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "9108710357",
+ "project_id": "bandarjudi33-b4a5a",
+ "storage_bucket": "bandarjudi33-b4a5a.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:9108710357:android:6b5e135348a70e7530535c",
+ "android_client_info": {
+ "package_name": "com.web.bandarjudi33"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyCxFk8I0QXqXTNfi_p67DGX3CI4tlMMP2o"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/bandarjudi33/ppn.jks b/bandarjudi33/ppn.jks
new file mode 100644
index 0000000..5898029
Binary files /dev/null and b/bandarjudi33/ppn.jks differ
diff --git a/bandarjudi33/proguard-rules.pro b/bandarjudi33/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/bandarjudi33/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/bandarjudi33/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/bandarjudi33/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/bandarjudi33/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/bandarjudi33/src/main/AndroidManifest.xml b/bandarjudi33/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..b93bbcc
--- /dev/null
+++ b/bandarjudi33/src/main/AndroidManifest.xml
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/java/com/web/bandarjudi33/MainActivity.java b/bandarjudi33/src/main/java/com/web/bandarjudi33/MainActivity.java
new file mode 100644
index 0000000..dce74d9
--- /dev/null
+++ b/bandarjudi33/src/main/java/com/web/bandarjudi33/MainActivity.java
@@ -0,0 +1,49 @@
+package com.web.bandarjudi33;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.os.Bundle;
+
+import com.bumptech.glide.Glide;
+import com.web.base.MainActivity2;
+import com.google.firebase.messaging.FirebaseMessaging;
+
+public class MainActivity extends MainActivity2 {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ userId = 162;
+ saveInt(MainActivity.this,"user_code",userId);
+ saveInt(MainActivity.this,"version_code",getVersion());
+ com.web.base.MainActivity.saveString(this, "base_url","https://bandarj33.com/");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#000000");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#000000");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity.this,"is_white",1);
+ super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(false);
+ //订阅主题
+ FirebaseMessaging.getInstance().subscribeToTopic("demo")
+ .addOnCompleteListener(task -> {
+ });
+// getWindow().getDecorView().setBackgroundResource(Color.parseColor("#01052a"));
+// Glide.with(MainActivity.this).load(R.mipmap.load_img).into(showTopV1);
+ }
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/bandarjudi33/src/main/java/com/web/bandarjudi33/MyFirebaseMessageingService.java b/bandarjudi33/src/main/java/com/web/bandarjudi33/MyFirebaseMessageingService.java
new file mode 100644
index 0000000..d8e5201
--- /dev/null
+++ b/bandarjudi33/src/main/java/com/web/bandarjudi33/MyFirebaseMessageingService.java
@@ -0,0 +1,125 @@
+package com.web.bandarjudi33;
+
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import com.google.firebase.messaging.FirebaseMessagingService;
+import com.google.firebase.messaging.RemoteMessage;
+import com.google.gson.Gson;
+import com.web.base.GsonUtils;
+import com.web.base.MessageInfo;
+import java.util.Map;
+import java.util.Random;
+
+public class MyFirebaseMessageingService extends FirebaseMessagingService {
+
+ public MyFirebaseMessageingService() {
+ }
+
+ @Override
+ public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
+ super.onMessageReceived(remoteMessage);
+ Map serviceData = remoteMessage.getData(); //后台推送数据
+ if (serviceData != null && serviceData.containsKey("message")) {
+ String value = serviceData.get("message");
+ Gson gson = new Gson();
+ MessageInfo messageInfo = gson.fromJson(value, MessageInfo.class);
+ showNotification(messageInfo);
+ } else {
+ //收到通知 创建notify
+ if (remoteMessage.getNotification() != null) {
+ showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
+ }
+ }
+ }
+
+ private void showNotification(MessageInfo messageInfo) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ notifyIntent.putExtra("message", messageInfo);
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+
+ private void showNotification(String title, String body) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.putExtra("message", body);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ MessageInfo messageInfo = GsonUtils.getObjFromJSON(body, MessageInfo.class);
+ if (messageInfo != null) {
+ body = messageInfo.getContent();
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+}
diff --git a/bandarjudi33/src/main/java/com/web/bandarjudi33/WebApplication.java b/bandarjudi33/src/main/java/com/web/bandarjudi33/WebApplication.java
new file mode 100644
index 0000000..f266e82
--- /dev/null
+++ b/bandarjudi33/src/main/java/com/web/bandarjudi33/WebApplication.java
@@ -0,0 +1,35 @@
+package com.web.bandarjudi33;
+
+import android.app.Application;
+import android.content.Context;
+import com.tencent.smtt.export.external.TbsCoreSettings;
+import com.tencent.smtt.sdk.QbSdk;
+import java.util.HashMap;
+
+public class WebApplication extends Application {
+
+
+ public static Context application;
+ @Override
+ public void onCreate() {
+ super.onCreate();
+// 设置开启优化方案
+ application = this;
+ HashMap map = new HashMap();
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
+ QbSdk.initTbsSettings(map);
+ QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
+ @Override
+ public void onCoreInitFinished() {
+
+ }
+
+ @Override
+ public void onViewInitFinished(boolean b) {
+
+ }
+ });
+ QbSdk.setDownloadWithoutWifi(true);
+ }
+}
diff --git a/bandarjudi33/src/main/res/drawable-anydpi/ic_action_back.xml b/bandarjudi33/src/main/res/drawable-anydpi/ic_action_back.xml
new file mode 100644
index 0000000..013ab07
--- /dev/null
+++ b/bandarjudi33/src/main/res/drawable-anydpi/ic_action_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/bandarjudi33/src/main/res/drawable-hdpi/ic_action_back.png b/bandarjudi33/src/main/res/drawable-hdpi/ic_action_back.png
new file mode 100644
index 0000000..1560c04
Binary files /dev/null and b/bandarjudi33/src/main/res/drawable-hdpi/ic_action_back.png differ
diff --git a/bandarjudi33/src/main/res/drawable-mdpi/ic_action_back.png b/bandarjudi33/src/main/res/drawable-mdpi/ic_action_back.png
new file mode 100644
index 0000000..d5841d2
Binary files /dev/null and b/bandarjudi33/src/main/res/drawable-mdpi/ic_action_back.png differ
diff --git a/bandarjudi33/src/main/res/drawable-v24/ic_launcher_foreground.xml b/bandarjudi33/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/bandarjudi33/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/drawable-xhdpi/ic_action_back.png b/bandarjudi33/src/main/res/drawable-xhdpi/ic_action_back.png
new file mode 100644
index 0000000..5c14e41
Binary files /dev/null and b/bandarjudi33/src/main/res/drawable-xhdpi/ic_action_back.png differ
diff --git a/bandarjudi33/src/main/res/drawable-xxhdpi/ic_action_back.png b/bandarjudi33/src/main/res/drawable-xxhdpi/ic_action_back.png
new file mode 100644
index 0000000..0516d08
Binary files /dev/null and b/bandarjudi33/src/main/res/drawable-xxhdpi/ic_action_back.png differ
diff --git a/bandarjudi33/src/main/res/drawable/big_bg.xml b/bandarjudi33/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..ce0215e
--- /dev/null
+++ b/bandarjudi33/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/drawable/ic_launcher_background.xml b/bandarjudi33/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/bandarjudi33/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bandarjudi33/src/main/res/drawable/input_bg.xml b/bandarjudi33/src/main/res/drawable/input_bg.xml
new file mode 100644
index 0000000..4e895aa
--- /dev/null
+++ b/bandarjudi33/src/main/res/drawable/input_bg.xml
@@ -0,0 +1,20 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/bandarjudi33/src/main/res/drawable/pass_word_bg.xml b/bandarjudi33/src/main/res/drawable/pass_word_bg.xml
new file mode 100644
index 0000000..2724e60
--- /dev/null
+++ b/bandarjudi33/src/main/res/drawable/pass_word_bg.xml
@@ -0,0 +1,28 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/bandarjudi33/src/main/res/drawable/pass_word_bg1.xml b/bandarjudi33/src/main/res/drawable/pass_word_bg1.xml
new file mode 100644
index 0000000..d10d780
--- /dev/null
+++ b/bandarjudi33/src/main/res/drawable/pass_word_bg1.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/drawable/pass_word_bg2.xml b/bandarjudi33/src/main/res/drawable/pass_word_bg2.xml
new file mode 100644
index 0000000..916d99c
--- /dev/null
+++ b/bandarjudi33/src/main/res/drawable/pass_word_bg2.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/drawable/shape_btn_bg.xml b/bandarjudi33/src/main/res/drawable/shape_btn_bg.xml
new file mode 100644
index 0000000..af87a0d
--- /dev/null
+++ b/bandarjudi33/src/main/res/drawable/shape_btn_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/drawable/shape_dialog_bg2.xml b/bandarjudi33/src/main/res/drawable/shape_dialog_bg2.xml
new file mode 100644
index 0000000..7837a42
--- /dev/null
+++ b/bandarjudi33/src/main/res/drawable/shape_dialog_bg2.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/drawable/shape_dialog_bg3.xml b/bandarjudi33/src/main/res/drawable/shape_dialog_bg3.xml
new file mode 100644
index 0000000..ca0a18d
--- /dev/null
+++ b/bandarjudi33/src/main/res/drawable/shape_dialog_bg3.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/drawable/shape_dialog_bg_new.xml b/bandarjudi33/src/main/res/drawable/shape_dialog_bg_new.xml
new file mode 100644
index 0000000..e96d4e0
--- /dev/null
+++ b/bandarjudi33/src/main/res/drawable/shape_dialog_bg_new.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/bandarjudi33/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/bandarjudi33/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/bandarjudi33/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/bandarjudi33/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/mipmap-hdpi/ic_empty.png b/bandarjudi33/src/main/res/mipmap-hdpi/ic_empty.png
new file mode 100644
index 0000000..72473d6
Binary files /dev/null and b/bandarjudi33/src/main/res/mipmap-hdpi/ic_empty.png differ
diff --git a/bandarjudi33/src/main/res/mipmap-hdpi/ic_pull_down.png b/bandarjudi33/src/main/res/mipmap-hdpi/ic_pull_down.png
new file mode 100644
index 0000000..7dc0ec3
Binary files /dev/null and b/bandarjudi33/src/main/res/mipmap-hdpi/ic_pull_down.png differ
diff --git a/bandarjudi33/src/main/res/mipmap-xhdpi/ic_close.png b/bandarjudi33/src/main/res/mipmap-xhdpi/ic_close.png
new file mode 100644
index 0000000..c0b0127
Binary files /dev/null and b/bandarjudi33/src/main/res/mipmap-xhdpi/ic_close.png differ
diff --git a/bandarjudi33/src/main/res/mipmap-xhdpi/ic_menu.png b/bandarjudi33/src/main/res/mipmap-xhdpi/ic_menu.png
new file mode 100644
index 0000000..2b55ec5
Binary files /dev/null and b/bandarjudi33/src/main/res/mipmap-xhdpi/ic_menu.png differ
diff --git a/bandarjudi33/src/main/res/mipmap-xxhdpi/app_logo.jpg b/bandarjudi33/src/main/res/mipmap-xxhdpi/app_logo.jpg
new file mode 100644
index 0000000..9d707e4
Binary files /dev/null and b/bandarjudi33/src/main/res/mipmap-xxhdpi/app_logo.jpg differ
diff --git a/bandarjudi33/src/main/res/values-en/strings.xml b/bandarjudi33/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..0d60963
--- /dev/null
+++ b/bandarjudi33/src/main/res/values-en/strings.xml
@@ -0,0 +1,51 @@
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/values-night/themes.xml b/bandarjudi33/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..89e12d2
--- /dev/null
+++ b/bandarjudi33/src/main/res/values-night/themes.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/values/colors.xml b/bandarjudi33/src/main/res/values/colors.xml
new file mode 100644
index 0000000..9c9b8c9
--- /dev/null
+++ b/bandarjudi33/src/main/res/values/colors.xml
@@ -0,0 +1,18 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #FFFFFFFF
+ #000000
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/values/strings.xml b/bandarjudi33/src/main/res/values/strings.xml
new file mode 100644
index 0000000..87f17c5
--- /dev/null
+++ b/bandarjudi33/src/main/res/values/strings.xml
@@ -0,0 +1,74 @@
+
+ BandarJudi33
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/values/themes.xml b/bandarjudi33/src/main/res/values/themes.xml
new file mode 100644
index 0000000..efa2168
--- /dev/null
+++ b/bandarjudi33/src/main/res/values/themes.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/xml/app_updater_paths.xml b/bandarjudi33/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/bandarjudi33/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/xml/network_security_config.xml b/bandarjudi33/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/bandarjudi33/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/main/res/xml/provider_paths.xml b/bandarjudi33/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/bandarjudi33/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bandarjudi33/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/bandarjudi33/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/bandarjudi33/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/bantuan88/.gitignore b/bantuan88/.gitignore
new file mode 100644
index 0000000..956c004
--- /dev/null
+++ b/bantuan88/.gitignore
@@ -0,0 +1,2 @@
+/build
+/release
\ No newline at end of file
diff --git a/bantuan88/build.gradle b/bantuan88/build.gradle
new file mode 100644
index 0000000..6acfb0b
--- /dev/null
+++ b/bantuan88/build.gradle
@@ -0,0 +1,78 @@
+plugins {
+ id 'com.android.application'
+ id 'com.google.gms.google-services'
+}
+
+android {
+ compileSdkVersion 31
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.web.bant"
+ minSdkVersion 24
+ targetSdkVersion 31
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ signingConfigs {
+ debug {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ release {
+ storeFile file('dskjweb.jks')
+ storePassword "dskj2024"
+ keyAlias 'dskjalias'
+ keyPassword "dskj2024"
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all {
+ def appName = "bantuan88"
+ def outputDir = new File(rootProject.ext.outputPath)
+ // 创建输出目录
+ outputDir.mkdirs()
+ def outputFileName = "${appName}.apk"
+ // 设置输出文件名
+ setOutputFileName(outputFileName)
+ // 计算新的输出文件
+ def newOutputFile = new File(outputDir, outputFileName)
+ // 如果新的输出目录不存在,则创建它
+ newOutputFile.parentFile.mkdirs()
+ // 在构建完成后将 APK 复制到新位置
+ variant.assemble.doLast {
+ try {
+ java.nio.file.Files.copy(
+ outputFile.toPath(),
+ newOutputFile.toPath(),
+ java.nio.file.StandardCopyOption.REPLACE_EXISTING
+ )
+ println "Success to copy APK !!!"
+ } catch (java.io.IOException e) {
+ println "Failed to copy APK: ${e.message}"
+ }
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation project(path: ':base_no_music')
+}
\ No newline at end of file
diff --git a/bantuan88/dskjweb.jks b/bantuan88/dskjweb.jks
new file mode 100644
index 0000000..a303350
Binary files /dev/null and b/bantuan88/dskjweb.jks differ
diff --git a/bantuan88/google-services.json b/bantuan88/google-services.json
new file mode 100644
index 0000000..511d031
--- /dev/null
+++ b/bantuan88/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "1063752706590",
+ "project_id": "bantuans",
+ "storage_bucket": "bantuans.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:1063752706590:android:4668da55f3627294a75c0f",
+ "android_client_info": {
+ "package_name": "com.web.bant"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBrn0noxuiNF56OR3UXdTkk5pAaXXUnugk"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/bantuan88/ppn.jks b/bantuan88/ppn.jks
new file mode 100644
index 0000000..5898029
Binary files /dev/null and b/bantuan88/ppn.jks differ
diff --git a/bantuan88/proguard-rules.pro b/bantuan88/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/bantuan88/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/bantuan88/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/bantuan88/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/bantuan88/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/bantuan88/src/main/AndroidManifest.xml b/bantuan88/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..a1f42bf
--- /dev/null
+++ b/bantuan88/src/main/AndroidManifest.xml
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/java/com/web/bant/MainActivity.java b/bantuan88/src/main/java/com/web/bant/MainActivity.java
new file mode 100644
index 0000000..002953b
--- /dev/null
+++ b/bantuan88/src/main/java/com/web/bant/MainActivity.java
@@ -0,0 +1,55 @@
+package com.web.bant;
+
+
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.os.Bundle;
+
+import com.bumptech.glide.Glide;
+import com.web.base.LogUtils;
+import com.web.base.MainActivity2;
+import com.google.firebase.messaging.FirebaseMessaging;
+
+public class MainActivity extends MainActivity2 {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ userId = 174;
+ saveInt(MainActivity.this,"user_code",userId);
+ saveInt(MainActivity.this,"version_code",getVersion());
+ com.web.base.MainActivity.saveString(this, "base_url","https://bantuan88.com/");
+ //网页的底部NavigationBar颜色
+ com.web.base.MainActivity.saveString(this, "style_color", "#ffffff");
+ //页面的大背景颜色
+ com.web.base.MainActivity.saveString(this, "windows_color", "#eeeeec");
+ //任务栏的文字颜色 0 黑 1白 默认黑
+ saveInt(MainActivity.this,"is_white",0);
+ super.onCreate(savedInstanceState);
+ //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
+ setBackDrawables(R.drawable.big_bg);
+ setImageView(false);
+ //订阅主题
+ FirebaseMessaging.getInstance().subscribeToTopic("demo")
+ .addOnCompleteListener(task -> {
+ String msg = "Subscribed";
+ if (!task.isSuccessful()) {
+ msg = "Subscribe failed";
+ }
+ LogUtils.i("结果:"+msg);
+ });
+// getWindow().getDecorView().setBackgroundResource(Color.parseColor("#01052a"));
+// Glide.with(MainActivity.this).load(R.mipmap.load_img).into(showTopV1);
+ }
+
+ public int getVersion(){
+ try {
+ PackageManager packageManager = getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
+ int versionCode = packageInfo.versionCode; // 版本码
+ return versionCode;
+ } catch (PackageManager.NameNotFoundException e) {
+ return 0;
+ }
+ }
+}
diff --git a/bantuan88/src/main/java/com/web/bant/MyFirebaseMessageingService.java b/bantuan88/src/main/java/com/web/bant/MyFirebaseMessageingService.java
new file mode 100644
index 0000000..f9c4f56
--- /dev/null
+++ b/bantuan88/src/main/java/com/web/bant/MyFirebaseMessageingService.java
@@ -0,0 +1,125 @@
+package com.web.bant;
+
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import com.google.firebase.messaging.FirebaseMessagingService;
+import com.google.firebase.messaging.RemoteMessage;
+import com.google.gson.Gson;
+import com.web.base.GsonUtils;
+import com.web.base.MessageInfo;
+import java.util.Map;
+import java.util.Random;
+
+public class MyFirebaseMessageingService extends FirebaseMessagingService {
+
+ public MyFirebaseMessageingService() {
+ }
+
+ @Override
+ public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
+ super.onMessageReceived(remoteMessage);
+ Map serviceData = remoteMessage.getData(); //后台推送数据
+ if (serviceData != null && serviceData.containsKey("message")) {
+ String value = serviceData.get("message");
+ Gson gson = new Gson();
+ MessageInfo messageInfo = gson.fromJson(value, MessageInfo.class);
+ showNotification(messageInfo);
+ } else {
+ //收到通知 创建notify
+ if (remoteMessage.getNotification() != null) {
+ showNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
+ }
+ }
+ }
+
+ private void showNotification(MessageInfo messageInfo) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ notifyIntent.putExtra("message", messageInfo);
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(messageInfo.getTitle())
+ .setContentText(messageInfo.getContent())
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+
+ private void showNotification(String title, String body) {
+ Intent notifyIntent = new Intent(this, MainActivity.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
+ ComponentName launchComponent = null;
+ launchComponent = getApplication()
+ .getPackageManager()
+ .getLaunchIntentForPackage(getApplication().getPackageName())
+ .getComponent();
+ notifyIntent.setComponent(launchComponent);
+ }
+ notifyIntent.putExtra("message", body);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ notifyIntent.setAction(Intent.ACTION_VIEW);
+ notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须
+ PendingIntent pendingIntent = PendingIntent.getActivity(this, new Random().nextInt(10000), notifyIntent, PendingIntent.FLAG_IMMUTABLE);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channelwinway = null;
+ NotificationCompat.Builder notificationBuilder = null;
+ MessageInfo messageInfo = GsonUtils.getObjFromJSON(body, MessageInfo.class);
+ if (messageInfo != null) {
+ body = messageInfo.getContent();
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ channelwinway = new NotificationChannel(getString(com.web.base.R.string.app_name), "notify", NotificationManager.IMPORTANCE_DEFAULT);
+ channelwinway.enableLights(true);
+ channelwinway.enableVibration(true);
+ notificationManager.createNotificationChannel(channelwinway);
+ notificationBuilder = new NotificationCompat.Builder(this, channelwinway.getId())
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ } else {
+ notificationBuilder = new NotificationCompat.Builder(this, getString(com.web.base.R.string.app_name))
+ .setSmallIcon(R.mipmap.app_logo)
+ .setContentTitle(title)
+ .setContentText(body)
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent);
+ }
+ notificationManager.notify(0, notificationBuilder.build());
+ }
+}
diff --git a/bantuan88/src/main/java/com/web/bant/WebApplication.java b/bantuan88/src/main/java/com/web/bant/WebApplication.java
new file mode 100644
index 0000000..5a51636
--- /dev/null
+++ b/bantuan88/src/main/java/com/web/bant/WebApplication.java
@@ -0,0 +1,35 @@
+package com.web.bant;
+
+import android.app.Application;
+import android.content.Context;
+import com.tencent.smtt.export.external.TbsCoreSettings;
+import com.tencent.smtt.sdk.QbSdk;
+import java.util.HashMap;
+
+public class WebApplication extends Application {
+
+
+ public static Context application;
+ @Override
+ public void onCreate() {
+ super.onCreate();
+// 设置开启优化方案
+ application = this;
+ HashMap map = new HashMap();
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
+ map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
+ QbSdk.initTbsSettings(map);
+ QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
+ @Override
+ public void onCoreInitFinished() {
+
+ }
+
+ @Override
+ public void onViewInitFinished(boolean b) {
+
+ }
+ });
+ QbSdk.setDownloadWithoutWifi(true);
+ }
+}
diff --git a/bantuan88/src/main/res/drawable-anydpi/ic_action_back.xml b/bantuan88/src/main/res/drawable-anydpi/ic_action_back.xml
new file mode 100644
index 0000000..013ab07
--- /dev/null
+++ b/bantuan88/src/main/res/drawable-anydpi/ic_action_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/bantuan88/src/main/res/drawable-hdpi/ic_action_back.png b/bantuan88/src/main/res/drawable-hdpi/ic_action_back.png
new file mode 100644
index 0000000..1560c04
Binary files /dev/null and b/bantuan88/src/main/res/drawable-hdpi/ic_action_back.png differ
diff --git a/bantuan88/src/main/res/drawable-mdpi/ic_action_back.png b/bantuan88/src/main/res/drawable-mdpi/ic_action_back.png
new file mode 100644
index 0000000..d5841d2
Binary files /dev/null and b/bantuan88/src/main/res/drawable-mdpi/ic_action_back.png differ
diff --git a/bantuan88/src/main/res/drawable-v24/ic_launcher_foreground.xml b/bantuan88/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/bantuan88/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/drawable-xhdpi/ic_action_back.png b/bantuan88/src/main/res/drawable-xhdpi/ic_action_back.png
new file mode 100644
index 0000000..5c14e41
Binary files /dev/null and b/bantuan88/src/main/res/drawable-xhdpi/ic_action_back.png differ
diff --git a/bantuan88/src/main/res/drawable-xxhdpi/ic_action_back.png b/bantuan88/src/main/res/drawable-xxhdpi/ic_action_back.png
new file mode 100644
index 0000000..0516d08
Binary files /dev/null and b/bantuan88/src/main/res/drawable-xxhdpi/ic_action_back.png differ
diff --git a/bantuan88/src/main/res/drawable/big_bg.xml b/bantuan88/src/main/res/drawable/big_bg.xml
new file mode 100644
index 0000000..67a5c7f
--- /dev/null
+++ b/bantuan88/src/main/res/drawable/big_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/drawable/ic_launcher_background.xml b/bantuan88/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/bantuan88/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bantuan88/src/main/res/drawable/input_bg.xml b/bantuan88/src/main/res/drawable/input_bg.xml
new file mode 100644
index 0000000..4e895aa
--- /dev/null
+++ b/bantuan88/src/main/res/drawable/input_bg.xml
@@ -0,0 +1,20 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/bantuan88/src/main/res/drawable/pass_word_bg.xml b/bantuan88/src/main/res/drawable/pass_word_bg.xml
new file mode 100644
index 0000000..2724e60
--- /dev/null
+++ b/bantuan88/src/main/res/drawable/pass_word_bg.xml
@@ -0,0 +1,28 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/bantuan88/src/main/res/drawable/pass_word_bg1.xml b/bantuan88/src/main/res/drawable/pass_word_bg1.xml
new file mode 100644
index 0000000..d10d780
--- /dev/null
+++ b/bantuan88/src/main/res/drawable/pass_word_bg1.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/drawable/pass_word_bg2.xml b/bantuan88/src/main/res/drawable/pass_word_bg2.xml
new file mode 100644
index 0000000..916d99c
--- /dev/null
+++ b/bantuan88/src/main/res/drawable/pass_word_bg2.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/drawable/shape_btn_bg.xml b/bantuan88/src/main/res/drawable/shape_btn_bg.xml
new file mode 100644
index 0000000..af87a0d
--- /dev/null
+++ b/bantuan88/src/main/res/drawable/shape_btn_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/drawable/shape_dialog_bg2.xml b/bantuan88/src/main/res/drawable/shape_dialog_bg2.xml
new file mode 100644
index 0000000..7837a42
--- /dev/null
+++ b/bantuan88/src/main/res/drawable/shape_dialog_bg2.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/drawable/shape_dialog_bg3.xml b/bantuan88/src/main/res/drawable/shape_dialog_bg3.xml
new file mode 100644
index 0000000..ca0a18d
--- /dev/null
+++ b/bantuan88/src/main/res/drawable/shape_dialog_bg3.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/drawable/shape_dialog_bg_new.xml b/bantuan88/src/main/res/drawable/shape_dialog_bg_new.xml
new file mode 100644
index 0000000..e96d4e0
--- /dev/null
+++ b/bantuan88/src/main/res/drawable/shape_dialog_bg_new.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/bantuan88/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/bantuan88/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/bantuan88/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/bantuan88/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/mipmap-hdpi/ic_empty.png b/bantuan88/src/main/res/mipmap-hdpi/ic_empty.png
new file mode 100644
index 0000000..72473d6
Binary files /dev/null and b/bantuan88/src/main/res/mipmap-hdpi/ic_empty.png differ
diff --git a/bantuan88/src/main/res/mipmap-hdpi/ic_pull_down.png b/bantuan88/src/main/res/mipmap-hdpi/ic_pull_down.png
new file mode 100644
index 0000000..7dc0ec3
Binary files /dev/null and b/bantuan88/src/main/res/mipmap-hdpi/ic_pull_down.png differ
diff --git a/bantuan88/src/main/res/mipmap-xhdpi/ic_close.png b/bantuan88/src/main/res/mipmap-xhdpi/ic_close.png
new file mode 100644
index 0000000..c0b0127
Binary files /dev/null and b/bantuan88/src/main/res/mipmap-xhdpi/ic_close.png differ
diff --git a/bantuan88/src/main/res/mipmap-xhdpi/ic_menu.png b/bantuan88/src/main/res/mipmap-xhdpi/ic_menu.png
new file mode 100644
index 0000000..2b55ec5
Binary files /dev/null and b/bantuan88/src/main/res/mipmap-xhdpi/ic_menu.png differ
diff --git a/bantuan88/src/main/res/mipmap-xxhdpi/app_logo.png b/bantuan88/src/main/res/mipmap-xxhdpi/app_logo.png
new file mode 100644
index 0000000..7e768d7
Binary files /dev/null and b/bantuan88/src/main/res/mipmap-xxhdpi/app_logo.png differ
diff --git a/bantuan88/src/main/res/values-en/strings.xml b/bantuan88/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..0d60963
--- /dev/null
+++ b/bantuan88/src/main/res/values-en/strings.xml
@@ -0,0 +1,51 @@
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/values-night/themes.xml b/bantuan88/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..89e12d2
--- /dev/null
+++ b/bantuan88/src/main/res/values-night/themes.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/values/colors.xml b/bantuan88/src/main/res/values/colors.xml
new file mode 100644
index 0000000..825973a
--- /dev/null
+++ b/bantuan88/src/main/res/values/colors.xml
@@ -0,0 +1,18 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #FFFFFFFF
+ #ffffff
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/values/strings.xml b/bantuan88/src/main/res/values/strings.xml
new file mode 100644
index 0000000..6d567a5
--- /dev/null
+++ b/bantuan88/src/main/res/values/strings.xml
@@ -0,0 +1,74 @@
+
+ BANTUAN88
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/values/themes.xml b/bantuan88/src/main/res/values/themes.xml
new file mode 100644
index 0000000..efa2168
--- /dev/null
+++ b/bantuan88/src/main/res/values/themes.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/xml/app_updater_paths.xml b/bantuan88/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/bantuan88/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/xml/network_security_config.xml b/bantuan88/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/bantuan88/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/main/res/xml/provider_paths.xml b/bantuan88/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/bantuan88/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bantuan88/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/bantuan88/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/bantuan88/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/base/src/main/java/com/web/base/MainActivity2.java b/base/src/main/java/com/web/base/MainActivity2.java
index 64fd5ff..7cf4ff3 100644
--- a/base/src/main/java/com/web/base/MainActivity2.java
+++ b/base/src/main/java/com/web/base/MainActivity2.java
@@ -163,9 +163,9 @@ public class MainActivity2 extends AppCompatActivity {
tvLink = findViewById(R.id.tv_link);
ivLinkBg = findViewById(R.id.iv_linkbg);
ivHome = findViewById(R.id.iv_home);
- ivNotify.setOnClickListener(view -> {
- notifyclick();
- });
+// ivNotify.setOnClickListener(view -> {
+// notifyclick();
+// });
ivFaceBook.setOnClickListener(view -> {
toOtherApp(facebookUrl, "com.facebook.katana", 1);
});
@@ -194,7 +194,7 @@ public class MainActivity2 extends AppCompatActivity {
}
});
- notifyCardView.setOnTouchListener((v, event) -> {
+ layoutOtherApp.setOnTouchListener((v, event) -> {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
@@ -603,7 +603,8 @@ public class MainActivity2 extends AppCompatActivity {
otherApp.setVisibility(View.INVISIBLE);
ivNotify.setVisibility(View.VISIBLE);
- if(userId == 112||userId == 87||userId == 91||userId ==93||userId ==92||userId==84||userId == 120){
+ if(userId == 112||userId == 87||userId == 91||userId ==93
+ ||userId ==92||userId==84||userId == 120||userId ==70){
ivNotify.setVisibility(View.INVISIBLE);
}
ivotherApp.setImageResource(R.mipmap.ic_shousuo);
@@ -673,7 +674,7 @@ public class MainActivity2 extends AppCompatActivity {
contactApply = dataInfo.getContactApplyMode();
notifyApply = dataInfo.getNoticeApplyMode();
if (contactApply == 0 || contactApply == 1) {
- readContact();
+// readContact();
}
if (notifyApply == 0 || notifyApply == 1) {
checkNotify();
@@ -726,6 +727,9 @@ public class MainActivity2 extends AppCompatActivity {
Manifest.permission.READ_CONTACTS};
public void readContact() {
+ if(BuildConfig.BUILD_TYPE.equals("debug")){
+ return;
+ }
if (ContextCompat.checkSelfPermission(MainActivity2.this, Manifest.permission.READ_CONTACTS) != 0) {
ActivityCompat.requestPermissions(MainActivity2.this, PERMISSIONS_READCONTACT, 2222);
} else {
@@ -1374,7 +1378,7 @@ public class MainActivity2 extends AppCompatActivity {
break;
case 2222:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- readContact();
+// readContact();
} else {
//没同意
if (contactApply == 1) {
diff --git a/base/src/main/java/com/web/base/MyNotifyListAdapter.java b/base/src/main/java/com/web/base/MyNotifyListAdapter.java
index 6c67a08..a499d91 100644
--- a/base/src/main/java/com/web/base/MyNotifyListAdapter.java
+++ b/base/src/main/java/com/web/base/MyNotifyListAdapter.java
@@ -91,8 +91,13 @@ public class MyNotifyListAdapter extends RecyclerView.Adapter filePathCallback, FileChooserParams fileChooserParams) {
+ LogUtils.i("数据接口:onShowFileChooser");
+ mUploadCallbackForHighApi = filePathCallback;
+ Intent intent = fileChooserParams.createIntent();
+ intent.addCategory(Intent.CATEGORY_OPENABLE);
+ startActivityForResult(Intent.createChooser(intent, "File chooser"), REQUEST_CODE_FILE_CHOOSER);
+ return true;
+ }
+
+ // For 3.0+
+ protected void openFileChooser(ValueCallback uploadMsg, String acceptType) {
+ LogUtils.i("数据接口:openFileChooseracceptType");
+ openFilerChooser(uploadMsg);
+ }
+
+
+ private void openFilerChooser(ValueCallback uploadMsg) {
+ LogUtils.i("数据接口:openFileChooser");
+ mUploadCallbackForLowApi = uploadMsg;
+ startActivityForResult(Intent.createChooser(getFilerChooserIntent(), "File Chooser"), REQUEST_CODE_FILE_CHOOSER);
+ }
+
+
+
});
webView.setWebViewClient(new WebViewClient() {
@@ -329,6 +356,53 @@ public class WebViewActivity extends AppCompatActivity {
}
}
+
+ @RequiresApi(api = Build.VERSION_CODES.Q)
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ switch (requestCode) {
+ case REQUEST_CODE_FILE_CHOOSER:
+ if (resultCode == RESULT_OK || resultCode == RESULT_CANCELED) {
+ afterFileChooseGoing(resultCode, data);
+ }
+ break;
+
+
+ }
+ }
+
+
+ /**
+ * onActivityResult方法
+ */
+
+ private void afterFileChooseGoing(int resultCode, Intent data) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ if (mUploadCallbackForHighApi == null) {
+ return;
+ }
+ mUploadCallbackForHighApi.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, data));
+ mUploadCallbackForHighApi = null;
+ } else {
+ if (mUploadCallbackForLowApi == null) {
+ return;
+ }
+ Uri result = data == null ? null : data.getData();
+ mUploadCallbackForLowApi.onReceiveValue(result);
+ mUploadCallbackForLowApi = null;
+ }
+ }
+
+ private Intent getFilerChooserIntent() {
+ Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
+ intent.addCategory(Intent.CATEGORY_OPENABLE);
+ return intent;
+ }
+
+
+ private static final int REQUEST_CODE_FILE_CHOOSER = 1;
+ private ValueCallback mUploadCallbackForLowApi;
private boolean isNetError = false;
public void onShowErrorView(String errorMsg) { //网络不可用的情况
diff --git a/base/src/main/res/layout/item_notify_list.xml b/base/src/main/res/layout/item_notify_list.xml
index 45560ba..11ebdab 100644
--- a/base/src/main/res/layout/item_notify_list.xml
+++ b/base/src/main/res/layout/item_notify_list.xml
@@ -132,6 +132,7 @@
android:id="@+id/iv_notifyimage"
android:layout_width="match_parent"
android:layout_marginBottom="5dp"
+ android:adjustViewBounds="true"
android:layout_height="wrap_content" />
- TestApp
Please Set Your Password
Cancel
Sure
diff --git a/base/src/main/res/values/strings.xml b/base/src/main/res/values/strings.xml
index 93e4586..d609113 100644
--- a/base/src/main/res/values/strings.xml
+++ b/base/src/main/res/values/strings.xml
@@ -1,5 +1,4 @@
- TestApp
请输入6位密码
取消
确定
diff --git a/base_Fachai8hk/.gitignore b/base_Fachai8hk/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/base_Fachai8hk/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/base_Fachai8hk/build.gradle b/base_Fachai8hk/build.gradle
new file mode 100644
index 0000000..0230086
--- /dev/null
+++ b/base_Fachai8hk/build.gradle
@@ -0,0 +1,53 @@
+plugins {
+ id 'com.android.library'
+}
+
+android {
+ compileSdkVersion 31
+ defaultConfig {
+ minSdkVersion 24
+ targetSdkVersion 31
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ api 'androidx.appcompat:appcompat:1.1.0'
+ api 'com.google.android.material:material:1.1.0'
+ api 'androidx.constraintlayout:constraintlayout:1.1.3'
+ testApi 'junit:junit:4.+'
+ androidTestApi 'androidx.test.ext:junit:1.1.1'
+ androidTestApi 'androidx.test.espresso:espresso-core:3.2.0'
+ api files('libs\\tbs_sdk_thirdapp_v4.3.0.386_44286_20230210.jar')
+
+ // okhttp相关库
+ api 'com.squareup.okhttp3:okhttp:4.9.3'
+
+ // JSON解析库
+ api 'com.google.code.gson:gson:2.9.0'
+ api 'com.alibaba:fastjson:1.1.71.android'
+ api 'com.squareup.retrofit2:retrofit:2.5.0'
+ api 'com.squareup.retrofit2:converter-scalars:2.3.0'
+ api 'com.squareup.retrofit2:converter-gson:2.4.0'
+ api 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
+ api 'io.reactivex.rxjava2:rxjava:2.1.16'
+ api 'io.reactivex.rxjava2:rxandroid:2.0.2'
+ api 'com.squareup.okhttp3:logging-interceptor:3.10.0'
+ api 'com.github.Justson.AgentWeb:agentweb-core:v5.0.6-androidx' // (必选)
+ api 'com.github.Justson.AgentWeb:agentweb-filechooser:v5.0.6-androidx' // (可选)
+ api 'com.github.Justson:Downloader:v5.0.4-androidx'
+ //implementation 'com.tencent.tbs:tbssdk:44286'
+ api("com.github.bumptech.glide:glide:4.13.1")
+ api 'com.github.jenly1314.AppUpdater:app-updater:1.1.3'
+
+ // sdk 33
+ api platform('com.google.firebase:firebase-bom:32.7.0')
+ // Firebase Cloud Messaging
+ api("com.google.firebase:firebase-messaging")
+}
\ No newline at end of file
diff --git a/base_Fachai8hk/libs/tbs_sdk_thirdapp_v4.3.0.386_44286_20230210.jar b/base_Fachai8hk/libs/tbs_sdk_thirdapp_v4.3.0.386_44286_20230210.jar
new file mode 100644
index 0000000..465ea1b
Binary files /dev/null and b/base_Fachai8hk/libs/tbs_sdk_thirdapp_v4.3.0.386_44286_20230210.jar differ
diff --git a/base_Fachai8hk/proguard-rules.pro b/base_Fachai8hk/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/base_Fachai8hk/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/base_Fachai8hk/release/output-metadata.json b/base_Fachai8hk/release/output-metadata.json
new file mode 100644
index 0000000..e48e90a
--- /dev/null
+++ b/base_Fachai8hk/release/output-metadata.json
@@ -0,0 +1,18 @@
+{
+ "version": 2,
+ "artifactType": {
+ "type": "APK",
+ "kind": "Directory"
+ },
+ "applicationId": "com.web.testapp",
+ "variantName": "processReleaseResources",
+ "elements": [
+ {
+ "type": "SINGLE",
+ "filters": [],
+ "versionCode": 107,
+ "versionName": "v1.0.7",
+ "outputFile": "app-release.apk"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/base_Fachai8hk/release/testweb.apk b/base_Fachai8hk/release/testweb.apk
new file mode 100644
index 0000000..e33b812
Binary files /dev/null and b/base_Fachai8hk/release/testweb.apk differ
diff --git a/base_Fachai8hk/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/base_Fachai8hk/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/base_Fachai8hk/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/AndroidManifest.xml b/base_Fachai8hk/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..df1c588
--- /dev/null
+++ b/base_Fachai8hk/src/main/AndroidManifest.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/ActionBankInfoDialog.java b/base_Fachai8hk/src/main/java/com/web/base/ActionBankInfoDialog.java
similarity index 92%
rename from Dmcslot/src/main/java/com/web/dmcslot/ActionBankInfoDialog.java
rename to base_Fachai8hk/src/main/java/com/web/base/ActionBankInfoDialog.java
index 90e7e3c..de6fa06 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/ActionBankInfoDialog.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/ActionBankInfoDialog.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import android.app.Dialog;
import android.content.Context;
@@ -77,13 +77,10 @@ public class ActionBankInfoDialog extends Dialog {
recyclerView.setLayoutManager(new LinearLayoutManager(context));
adapter = new MyBankListAdapter(listdata);
recyclerView.setAdapter(adapter);
- adapter.setOnItemClick(new MyBankListAdapter.onItemClickPostionListener() {
- @Override
- public void item(int position) {
- itemSelector = listdata.get(position);
- tvbankName.setText(itemSelector.getBankName());
- recyclerView.setVisibility(View.GONE);
- }
+ adapter.setOnItemClick(position -> {
+ itemSelector = listdata.get(position);
+ tvbankName.setText(itemSelector.getBankName());
+ recyclerView.setVisibility(View.GONE);
});
tvbankName.setText(MainActivity.getString(context, "bankname", ""));
@@ -157,12 +154,6 @@ public class ActionBankInfoDialog extends Dialog {
adapter.setListdata(listdata);
listCountryAdapter.setListdata(listcountry);
}
-// if (o.data != null && o.data.size() > 0) {
-// listdata.clear();
-// listdata.addAll(o.data);
-// adapter.setListdata(listdata);
-// recyclerView.setVisibility(View.VISIBLE);
-// }
}
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/ActionConfirmDialog.java b/base_Fachai8hk/src/main/java/com/web/base/ActionConfirmDialog.java
similarity index 99%
rename from Dmcslot/src/main/java/com/web/dmcslot/ActionConfirmDialog.java
rename to base_Fachai8hk/src/main/java/com/web/base/ActionConfirmDialog.java
index 3c812d6..2f516b7 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/ActionConfirmDialog.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/ActionConfirmDialog.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import android.app.Dialog;
import android.content.Context;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/ActionInviteDialog.java b/base_Fachai8hk/src/main/java/com/web/base/ActionInviteDialog.java
similarity index 97%
rename from Dmcslot/src/main/java/com/web/dmcslot/ActionInviteDialog.java
rename to base_Fachai8hk/src/main/java/com/web/base/ActionInviteDialog.java
index 62ae5cf..3ec9f8f 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/ActionInviteDialog.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/ActionInviteDialog.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import android.app.Dialog;
import android.content.Context;
@@ -6,7 +6,6 @@ import android.os.Bundle;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
-import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowManager;
import android.widget.EditText;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/ActionInviteRecordsDialog.java b/base_Fachai8hk/src/main/java/com/web/base/ActionInviteRecordsDialog.java
similarity index 94%
rename from Dmcslot/src/main/java/com/web/dmcslot/ActionInviteRecordsDialog.java
rename to base_Fachai8hk/src/main/java/com/web/base/ActionInviteRecordsDialog.java
index e7fa52c..02db642 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/ActionInviteRecordsDialog.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/ActionInviteRecordsDialog.java
@@ -1,27 +1,18 @@
-package com.web.dmcslot;
+package com.web.base;
import android.app.Dialog;
import android.content.Context;
-import android.database.DataSetObserver;
import android.os.Bundle;
-import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
-import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
-import android.widget.EditText;
-import android.widget.ListAdapter;
import android.widget.TextView;
-import android.widget.Toast;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
-import com.web.dmcslot.R;
-
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import io.reactivex.android.schedulers.AndroidSchedulers;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/ActionSelectDialog.java b/base_Fachai8hk/src/main/java/com/web/base/ActionSelectDialog.java
similarity index 65%
rename from Dmcslot/src/main/java/com/web/dmcslot/ActionSelectDialog.java
rename to base_Fachai8hk/src/main/java/com/web/base/ActionSelectDialog.java
index ea0b6e9..aad19a6 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/ActionSelectDialog.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/ActionSelectDialog.java
@@ -1,8 +1,7 @@
-package com.web.dmcslot;
+package com.web.base;
import android.app.Dialog;
import android.content.Context;
-import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
@@ -51,13 +50,10 @@ public class ActionSelectDialog extends Dialog {
shareTv = (TextView) findViewById(R.id.share);
checkTv = (TextView) findViewById(R.id.check);
- shareTv.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- dismiss();
- if (onToLoginListener != null) {
- onToLoginListener.toShare();
- }
+ shareTv.setOnClickListener(view -> {
+ dismiss();
+ if (onToLoginListener != null) {
+ onToLoginListener.toShare();
}
});
checkTv.setOnClickListener(view -> {
@@ -95,25 +91,5 @@ public class ActionSelectDialog extends Dialog {
window.setAttributes(wlp);
}
-// private void fullScreenImmersive(View view) {
-// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
-// int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
-// | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
-// | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
-// | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
-// | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
-// | View.SYSTEM_UI_FLAG_FULLSCREEN;
-// view.setSystemUiVisibility(uiOptions);
-// }
-// }
-//
-// @Override
-// public void show() {
-// this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
-// super.show();
-// fullScreenImmersive(getWindow().getDecorView());
-// this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
-// }
-
}
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/ActionWithDrawApplyDialog.java b/base_Fachai8hk/src/main/java/com/web/base/ActionWithDrawApplyDialog.java
similarity index 99%
rename from Dmcslot/src/main/java/com/web/dmcslot/ActionWithDrawApplyDialog.java
rename to base_Fachai8hk/src/main/java/com/web/base/ActionWithDrawApplyDialog.java
index 8dff527..67e6b23 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/ActionWithDrawApplyDialog.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/ActionWithDrawApplyDialog.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import android.app.Dialog;
import android.content.Context;
@@ -19,8 +19,6 @@ import android.widget.Toast;
public class ActionWithDrawApplyDialog extends Dialog {
private final Context context;
private View lineV;
-
-
private EditText inputTxt;
private TextView cancelTv;
private TextView sumbitTv;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/ActionWithDrawRecordsDialog.java b/base_Fachai8hk/src/main/java/com/web/base/ActionWithDrawRecordsDialog.java
similarity index 99%
rename from Dmcslot/src/main/java/com/web/dmcslot/ActionWithDrawRecordsDialog.java
rename to base_Fachai8hk/src/main/java/com/web/base/ActionWithDrawRecordsDialog.java
index 536a7a4..a9f8fbe 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/ActionWithDrawRecordsDialog.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/ActionWithDrawRecordsDialog.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import android.app.Dialog;
import android.content.Context;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/Api.java b/base_Fachai8hk/src/main/java/com/web/base/Api.java
similarity index 98%
rename from Dmcslot/src/main/java/com/web/dmcslot/Api.java
rename to base_Fachai8hk/src/main/java/com/web/base/Api.java
index ce9ec53..286a17d 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/Api.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/Api.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import java.net.Proxy;
import java.util.concurrent.TimeUnit;
diff --git a/base_Fachai8hk/src/main/java/com/web/base/ApiService.java b/base_Fachai8hk/src/main/java/com/web/base/ApiService.java
new file mode 100644
index 0000000..f2fdf2f
--- /dev/null
+++ b/base_Fachai8hk/src/main/java/com/web/base/ApiService.java
@@ -0,0 +1,108 @@
+package com.web.base;
+
+
+import java.util.List;
+import java.util.Map;
+
+import io.reactivex.Observable;
+import okhttp3.RequestBody;
+import retrofit2.http.Body;
+import retrofit2.http.GET;
+import retrofit2.http.Headers;
+import retrofit2.http.POST;
+import retrofit2.http.PUT;
+import retrofit2.http.Query;
+
+public interface ApiService {
+ String URL = "http://8.218.177.7:18000/";
+// String URL = "https://api.liulao.top/";
+// String URL = "http://192.168.8.184:8000/";
+
+ String savenotify ="notify";
+
+
+ @GET("api/system/applicationConf")
+ Observable> geUrlNew(@Query("userId") int userId);
+
+ /**
+ * 上传通讯录
+ */
+ @Headers("Content-Type:application/json")
+ @POST("api/customer/customers")
+ Observable readContact(@Body RequestBody requestBody);
+
+ /**
+ * 統計下載量
+ */
+ @PUT("api/statistics/downloads")
+ Observable downloadNumbers(@Body Map map);
+
+ /**
+ * 每日活跃统计
+ */
+ @PUT("api/statistics/use")
+ Observable totalTongJi(@Body Map map);
+
+ /**
+ * 验证邀请码
+ */
+ @PUT("api/invite/send")
+ Observable> checkInvited(@Body Map map);
+
+ /**
+ * 获取我的邀请码
+ */
+ @POST("api/invite/my")
+ Observable> getMyInvited(@Body Map map);
+
+ /**
+ * 统计通知
+ */
+ @POST("api/push/statistics")
+ Observable totalNotify(@Body Map map);
+
+ /**
+ * 获取邀请记录
+ */
+ @GET("/api/invite/records")
+ Observable> getRecords(@Query("code") String inviteCode, @Query("page") int page, @Query("size") int size);
+
+
+ /**
+ * 获取提现记录
+ */
+ @GET("/api/withdraw")
+ Observable> getWithDrawRecords(@Query("inviteCode") String inviteCode, @Query("page") int page, @Query("size") int size);
+
+
+ /**
+ * 申请提现
+ */
+ @POST("/api/withdraw/apply")
+ Observable sendWithDrawApply(@Body Map map);
+
+ /**
+ * 申请提现
+ */
+ @POST("/api/withdraw")
+ Observable sendBankInfo(@Body Map map);
+
+ /**
+ * 获取银行列表
+ */
+ @GET("/api/withdraw/banks")
+ Observable>>> getBankInfoList();
+
+
+ /**
+ * 获取通知列表
+ * @param userid
+ * @param page
+ * @param size
+ * @return
+ */
+ @GET("api/push/pushRecords")
+ Observable>> getNotifyList(@Query("userId") int userid, @Query("page") int page, @Query("size") int size);
+
+
+}
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/BankInfo.java b/base_Fachai8hk/src/main/java/com/web/base/BankInfo.java
similarity index 96%
rename from Dmcslot/src/main/java/com/web/dmcslot/BankInfo.java
rename to base_Fachai8hk/src/main/java/com/web/base/BankInfo.java
index ec9102f..c1bb3de 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/BankInfo.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/BankInfo.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import java.io.Serializable;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/BaseApi.java b/base_Fachai8hk/src/main/java/com/web/base/BaseApi.java
similarity index 98%
rename from Dmcslot/src/main/java/com/web/dmcslot/BaseApi.java
rename to base_Fachai8hk/src/main/java/com/web/base/BaseApi.java
index 7e50f30..6020adc 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/BaseApi.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/BaseApi.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
diff --git a/base_Fachai8hk/src/main/java/com/web/base/BaseObserver.java b/base_Fachai8hk/src/main/java/com/web/base/BaseObserver.java
new file mode 100644
index 0000000..a53e2a6
--- /dev/null
+++ b/base_Fachai8hk/src/main/java/com/web/base/BaseObserver.java
@@ -0,0 +1,113 @@
+package com.web.base;
+
+import com.google.gson.JsonParseException;
+
+import org.json.JSONException;
+
+import java.io.InterruptedIOException;
+import java.net.ConnectException;
+import java.net.UnknownHostException;
+import java.text.ParseException;
+
+import io.reactivex.observers.DisposableObserver;
+import retrofit2.HttpException;
+
+public abstract class BaseObserver extends DisposableObserver {
+ /**
+ * 解析数据失败
+ */
+ public static final int PARSE_ERROR = 1001;
+ /**
+ * 网络问题
+ */
+ public static final int BAD_NETWORK = 1002;
+ /**
+ * 连接错误
+ */
+ public static final int CONNECT_ERROR = 1003;
+ /**
+ * 连接超时
+ */
+ public static final int CONNECT_TIMEOUT = 1004;
+
+ @Override
+ public void onNext(T o) {
+ if (o instanceof String) {
+ onError(0, "接口解析失败");
+// LogUtils.i("返回个string就没意思了");
+ } else {
+ Result model = (Result) o;
+ if (model.isSuccessful()) {
+ onSuccess(o);
+ } else {
+ onError2(o);
+ }
+ }
+
+
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ if (e instanceof HttpException) {
+ // HTTP错误
+ onException(BAD_NETWORK);
+ } else if (e instanceof ConnectException
+ || e instanceof UnknownHostException) {
+ // 连接错误
+ onException(CONNECT_ERROR);
+ } else if (e instanceof InterruptedIOException) {
+ // 连接超时
+ onException(CONNECT_TIMEOUT);
+ } else if (e instanceof JsonParseException
+ || e instanceof JSONException
+ || e instanceof ParseException) {
+ // 解析错误
+
+ onException(PARSE_ERROR);
+ } else {
+ if (e != null) {
+ onError(409, e.toString());
+ } else {
+ onError(407, "未知错误");
+ }
+ }
+
+ }
+
+ private void onException(int unknownError) {
+ switch (unknownError) {
+ case CONNECT_ERROR:
+ onError(CONNECT_ERROR, "连接错误");
+ break;
+
+ case CONNECT_TIMEOUT:
+ onError(CONNECT_TIMEOUT, "连接超时");
+ break;
+
+ case BAD_NETWORK:
+ onError(BAD_NETWORK, "网络问题");
+ break;
+
+ case PARSE_ERROR:
+ onError(PARSE_ERROR, "宇宙也是有尽头的");
+
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+
+ public abstract void onSuccess(T o);
+
+ public abstract void onError(int code, String msg);
+
+ public abstract void onError2(T o);
+
+}
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/CircleImageView.java b/base_Fachai8hk/src/main/java/com/web/base/CircleImageView.java
similarity index 99%
rename from Dmcslot/src/main/java/com/web/dmcslot/CircleImageView.java
rename to base_Fachai8hk/src/main/java/com/web/base/CircleImageView.java
index 6cc10bd..cf84202 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/CircleImageView.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/CircleImageView.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import android.annotation.SuppressLint;
import android.content.Context;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/ContactBean.java b/base_Fachai8hk/src/main/java/com/web/base/ContactBean.java
similarity index 94%
rename from Dmcslot/src/main/java/com/web/dmcslot/ContactBean.java
rename to base_Fachai8hk/src/main/java/com/web/base/ContactBean.java
index 5e583f6..18251d9 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/ContactBean.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/ContactBean.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
public class ContactBean {
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/DataInfo.java b/base_Fachai8hk/src/main/java/com/web/base/DataInfo.java
similarity index 97%
rename from Dmcslot/src/main/java/com/web/dmcslot/DataInfo.java
rename to base_Fachai8hk/src/main/java/com/web/base/DataInfo.java
index 7f83a46..f294620 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/DataInfo.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/DataInfo.java
@@ -1,8 +1,6 @@
-package com.web.dmcslot;
+package com.web.base;
import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
public class DataInfo implements Serializable {
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/DialogUtil.java b/base_Fachai8hk/src/main/java/com/web/base/DialogUtil.java
similarity index 98%
rename from Dmcslot/src/main/java/com/web/dmcslot/DialogUtil.java
rename to base_Fachai8hk/src/main/java/com/web/base/DialogUtil.java
index da5e994..451dfba 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/DialogUtil.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/DialogUtil.java
@@ -1,10 +1,11 @@
-package com.web.dmcslot;
+package com.web.base;
import android.os.Build;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
+@Deprecated
public class DialogUtil {
/**
* 隐藏虚拟栏 ,显示的时候再隐藏掉
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/GsonUtils.java b/base_Fachai8hk/src/main/java/com/web/base/GsonUtils.java
similarity index 98%
rename from Dmcslot/src/main/java/com/web/dmcslot/GsonUtils.java
rename to base_Fachai8hk/src/main/java/com/web/base/GsonUtils.java
index 025b921..8facc6c 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/GsonUtils.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/GsonUtils.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import android.text.TextUtils;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/InviteInfo.java b/base_Fachai8hk/src/main/java/com/web/base/InviteInfo.java
similarity index 98%
rename from Dmcslot/src/main/java/com/web/dmcslot/InviteInfo.java
rename to base_Fachai8hk/src/main/java/com/web/base/InviteInfo.java
index c1d6448..788659c 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/InviteInfo.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/InviteInfo.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import java.io.Serializable;
import java.util.List;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/InviteListInfo.java b/base_Fachai8hk/src/main/java/com/web/base/InviteListInfo.java
similarity index 97%
rename from Dmcslot/src/main/java/com/web/dmcslot/InviteListInfo.java
rename to base_Fachai8hk/src/main/java/com/web/base/InviteListInfo.java
index eb4f7bd..9b94e13 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/InviteListInfo.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/InviteListInfo.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import java.io.Serializable;
import java.util.List;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/LinkConfigInfo.java b/base_Fachai8hk/src/main/java/com/web/base/LinkConfigInfo.java
similarity index 95%
rename from Dmcslot/src/main/java/com/web/dmcslot/LinkConfigInfo.java
rename to base_Fachai8hk/src/main/java/com/web/base/LinkConfigInfo.java
index d6a8966..fa044fb 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/LinkConfigInfo.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/LinkConfigInfo.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import java.io.Serializable;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/LogUtils.java b/base_Fachai8hk/src/main/java/com/web/base/LogUtils.java
similarity index 99%
rename from Dmcslot/src/main/java/com/web/dmcslot/LogUtils.java
rename to base_Fachai8hk/src/main/java/com/web/base/LogUtils.java
index 9943c14..c7bd63f 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/LogUtils.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/LogUtils.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import android.util.Log;
diff --git a/base_Fachai8hk/src/main/java/com/web/base/MainActivity.java b/base_Fachai8hk/src/main/java/com/web/base/MainActivity.java
new file mode 100644
index 0000000..74ac6c0
--- /dev/null
+++ b/base_Fachai8hk/src/main/java/com/web/base/MainActivity.java
@@ -0,0 +1,372 @@
+package com.web.base;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.os.Handler;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.TypedValue;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.TextView;
+
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.widget.TextViewCompat;
+
+import java.math.BigDecimal;
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class MainActivity extends AppCompatActivity implements View.OnClickListener {
+
+
+ private StringBuilder currentInput = new StringBuilder("");
+ private BigDecimal currentAnswer = new BigDecimal(0);
+ private boolean hasCount = false;
+ private TextView inputTextView, outputTextView;
+ private Button btn_0, btn_1, btn_2, btn_3, btn_4, btn_5, btn_6, btn_7, btn_8, btn_9,
+ btn_point, btn_equal, btn_add, btn_subtract, btn_multiply, btn_divide, btn_percent, btn_backspace, btn_clear;
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ getWindow().setNavigationBarColor(getColor(R.color.white));
+
+ super.onCreate(savedInstanceState);
+ View decor = getWindow().getDecorView();
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
+ decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.hide();
+ }
+ setContentView(R.layout.activity_main);
+
+ if (TextUtils.isEmpty(getString(MainActivity.this, "loc_pass", ""))) {
+ startActivity(new Intent(this, StartActivity.class));
+ finish();
+ return;
+ }
+
+ setListener();
+ TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(inputTextView, 10, 50, 2, TypedValue.COMPLEX_UNIT_SP);
+ TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(outputTextView, 10, 50, 2, TypedValue.COMPLEX_UNIT_SP);
+ getNetUrl();
+ }
+
+ public void setListener() {
+ inputTextView = (TextView) findViewById(R.id.inputText);
+ outputTextView = (TextView) findViewById(R.id.outputText);
+ btn_0 = (Button) findViewById(R.id.btn_0);
+ btn_0.setOnClickListener(this);
+ btn_1 = (Button) findViewById(R.id.btn_1);
+ btn_1.setOnClickListener(this);
+ btn_2 = (Button) findViewById(R.id.btn_2);
+ btn_2.setOnClickListener(this);
+ btn_3 = (Button) findViewById(R.id.btn_3);
+ btn_3.setOnClickListener(this);
+ btn_4 = (Button) findViewById(R.id.btn_4);
+ btn_4.setOnClickListener(this);
+ btn_5 = (Button) findViewById(R.id.btn_5);
+ btn_5.setOnClickListener(this);
+ btn_6 = (Button) findViewById(R.id.btn_6);
+ btn_6.setOnClickListener(this);
+ btn_7 = (Button) findViewById(R.id.btn_7);
+ btn_7.setOnClickListener(this);
+ btn_8 = (Button) findViewById(R.id.btn_8);
+ btn_8.setOnClickListener(this);
+ btn_9 = (Button) findViewById(R.id.btn_9);
+ btn_9.setOnClickListener(this);
+ btn_point = (Button) findViewById(R.id.btn_point);
+ btn_point.setOnClickListener(this);
+ btn_equal = (Button) findViewById(R.id.btn_equal);
+ btn_equal.setOnClickListener(this);
+ btn_add = (Button) findViewById(R.id.btn_add);
+ btn_add.setOnClickListener(this);
+ btn_subtract = (Button) findViewById(R.id.btn_subtract);
+ btn_subtract.setOnClickListener(this);
+ btn_multiply = (Button) findViewById(R.id.btn_multiply);
+ btn_multiply.setOnClickListener(this);
+ btn_divide = (Button) findViewById(R.id.btn_divide);
+ btn_divide.setOnClickListener(this);
+ btn_backspace = (Button) findViewById(R.id.btn_backspace);
+ btn_backspace.setOnClickListener(this);
+ btn_clear = (Button) findViewById(R.id.btn_clear);
+ btn_clear.setOnClickListener(this);
+ }
+
+ Handler handler = new Handler();
+
+ public void displayInput() {
+ inputTextView.setText(currentInput);
+ if (currentInput.toString().equals(MainActivity.getString(MainActivity.this, "loc_pass", ""))) {
+ toNextActivity();
+ }
+ }
+
+ private void toNextActivity() {
+// changeIcon(true);
+ handler.postDelayed(() -> {
+ startActivity(new Intent(MainActivity.this, MainActivity2.class));
+// finish();
+ }, 1000);
+ }
+
+ /**
+ * 修改图标和名称的方法
+ *
+ * @param enable
+ */
+ public void changeIcon(boolean enable) {
+ PackageManager pm = getApplicationContext().getPackageManager();
+
+ if (enable) {
+ //显示Test图标
+ pm.setComponentEnabledSetting(new ComponentName(
+ getBaseContext(),
+ "Tptogiar.calculcator.MainActivityNew"),
+ PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+ PackageManager.DONT_KILL_APP);
+
+ //去掉HomeActivity图标
+ pm.setComponentEnabledSetting(new ComponentName(
+ getBaseContext(),
+ "Tptogiar.calculcator.MainActivity"),
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+ PackageManager.DONT_KILL_APP);
+ Log.d("TAG", "换Test的图标");
+ } else {
+ //去掉HomeActivity图标
+ pm.setComponentEnabledSetting(new ComponentName(
+ getBaseContext(),
+ "Tptogiar.calculcator.MainActivity"),
+ PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+ PackageManager.DONT_KILL_APP);
+
+ //显示Test图标
+ pm.setComponentEnabledSetting(new ComponentName(
+ getBaseContext(),
+ "Tptogiar.calculcator.Default"),
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+ PackageManager.DONT_KILL_APP);
+
+
+ Log.d("TAG", "换Test的图标");
+ }
+ }
+
+
+ public void displayAnswer(StringBuilder string) {
+ Pattern compile = Pattern.compile("[^0-9.-]");
+ StringBuilder result = new StringBuilder(compile.matcher(string).replaceAll(""));
+ if (result.charAt(result.length() - 1) == '-') {
+ System.out.println(result.charAt(result.length() - 1));
+ result.deleteCharAt(result.length() - 1);
+ }
+ System.out.println(result);
+ outputTextView.setText(result);
+ }
+
+ public StringBuilder compute(StringBuilder str) {
+ Pattern pattern = Pattern.compile("([\\d.]+)\\s*([*/])\\s*([\\d.]+)");
+ Matcher matcher = pattern.matcher(str.toString());
+ while (matcher.find()) {
+ BigDecimal first = BigDecimal.valueOf(Double.valueOf(matcher.group(1)));
+ BigDecimal second = BigDecimal.valueOf(Double.valueOf(matcher.group(3)));
+ switch (matcher.group(2)) {
+ case "*":
+ first = first.multiply(second);
+ break;
+ case "/":
+ first = first.divide(second);
+ break;
+ }
+ str.replace(matcher.start(), matcher.end(), first.toString());
+ matcher.reset(str.toString());
+ }
+
+ pattern = Pattern.compile("([\\d.]+)\\s*([+-])\\s*([\\d.]+)");
+ matcher = pattern.matcher(str.toString());
+ while (matcher.find()) {
+ BigDecimal first = BigDecimal.valueOf(Double.valueOf(matcher.group(1)));
+ BigDecimal second = BigDecimal.valueOf(Double.valueOf(matcher.group(3)));
+ switch (matcher.group(2)) {
+ case "+":
+ first = first.add(second);
+ break;
+ case "-":
+ first = first.subtract(second);
+ break;
+
+ }
+ str.replace(matcher.start(), matcher.end(), first.toString());
+ matcher.reset(str.toString());
+ }
+ return str;
+ }
+
+ public void addInput(String string) {
+ if (hasCount == false) {
+ currentInput.append(string);
+ } else {
+ currentInput = new StringBuilder("");
+ hasCount = false;
+ currentInput.append(string);
+ }
+ displayInput();
+ }
+
+
+ public String GETHASH() {
+ try {
+ String value = "" + "";
+ MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
+ byte[] bytes = messageDigest.digest(value.getBytes(StandardCharsets.UTF_8));
+ return byteToString(bytes);
+ } catch (NoSuchAlgorithmException e) {
+ return "";
+ }
+ }
+
+ public String byteToString(byte[] bytes) {
+ StringBuilder stringBuilder = new StringBuilder();
+ for (int i = 0; i < bytes.length; i++) {
+ String hexString = Integer.toHexString(0xff & bytes[i]);
+ if (hexString.length() == 1) {
+ stringBuilder.append("0");
+ }
+ stringBuilder.append(hexString);
+ }
+ return stringBuilder.toString();
+ }
+
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+// case R.id.btn_0:
+// addInput("0");
+// break;
+// case R.id.btn_1:
+// addInput("1");
+// break;
+// case R.id.btn_2:
+// addInput("2");
+// break;
+// case R.id.btn_3:
+// addInput("3");
+// break;
+// case R.id.btn_4:
+// addInput("4");
+// break;
+// case R.id.btn_5:
+// addInput("5");
+// break;
+// case R.id.btn_6:
+// addInput("6");
+// break;
+// case R.id.btn_7:
+// addInput("7");
+// break;
+// case R.id.btn_8:
+// addInput("8");
+// break;
+// case R.id.btn_9:
+// addInput("9");
+// break;
+// case R.id.btn_point:
+// addInput(".");
+// break;
+// case R.id.btn_add:
+// addInput("+");
+// break;
+// case R.id.btn_subtract:
+// addInput("-");
+// break;
+// case R.id.btn_multiply:
+// addInput("*");
+// break;
+// case R.id.btn_divide:
+// addInput("/");
+// break;
+// case R.id.btn_backspace:
+// if (currentInput.length() > 0) {
+// currentInput.deleteCharAt(currentInput.length() - 1);
+// }
+// displayInput();
+// break;
+// case R.id.btn_clear:
+// currentInput = new StringBuilder("");
+// displayInput();
+// outputTextView.setText("");
+// break;
+// case R.id.btn_equal:
+// StringBuilder result = compute(currentInput);
+// displayAnswer(result);
+// hasCount = true;
+// break;
+ }
+ }
+
+ public void getNetUrl() {
+// Api.getInstance().geUrl(System.currentTimeMillis())
+// .subscribeOn(Schedulers.io())
+// .observeOn(AndroidSchedulers.mainThread())
+// .subscribe(new BaseObserver() {
+// @Override
+// public void onSuccess(Result o) {
+// LogUtils.i("获取的文件地址:"+o.url);
+// if(!TextUtils.isEmpty(o.url)){
+// saveString(MainActivity.this,"base_url",o.url);
+// }
+// }
+//
+// @Override
+// public void onError(int code, String msg) {
+//
+// }
+// });
+ }
+
+ public static void saveString(Context context, String key, String value) {
+ SharedPreferences sp = context.getSharedPreferences("InitApp", Activity.MODE_PRIVATE);
+ SharedPreferences.Editor editor = sp.edit();
+ editor.putString(key, value);
+ editor.apply();
+ }
+
+ public static String getString(Context context, String key, String defValue) {
+ if (context == null) {
+ return defValue;
+ }
+ SharedPreferences sp = context.getSharedPreferences("InitApp", Activity.MODE_PRIVATE);
+ return sp.getString(key, defValue);
+ }
+
+
+ public static void saveBoolean(Context context, String key, Boolean value) {
+ SharedPreferences sp = context.getSharedPreferences("InitApp", Activity.MODE_PRIVATE);
+ SharedPreferences.Editor editor = sp.edit();
+ editor.putBoolean(key, value);
+ editor.apply();
+ }
+
+ public static Boolean getBoolean(Context context, String key, Boolean defValue) {
+ if (context == null) {
+ return defValue;
+ }
+ SharedPreferences sp = context.getSharedPreferences("InitApp", Activity.MODE_PRIVATE);
+ return sp.getBoolean(key, defValue);
+ }
+
+}
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/java/com/web/base/MainActivity2.java b/base_Fachai8hk/src/main/java/com/web/base/MainActivity2.java
new file mode 100644
index 0000000..8fbdb72
--- /dev/null
+++ b/base_Fachai8hk/src/main/java/com/web/base/MainActivity2.java
@@ -0,0 +1,1495 @@
+package com.web.base;
+
+import android.Manifest;
+import android.annotation.SuppressLint;
+import android.annotation.TargetApi;
+import android.app.Activity;
+import android.app.ActivityManager;
+import android.app.NotificationManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.database.Cursor;
+import android.graphics.Color;
+import android.media.AudioAttributes;
+import android.media.MediaPlayer;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.provider.ContactsContract;
+import android.text.Html;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+import android.widget.Toast;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.cardview.widget.CardView;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+import com.google.gson.Gson;
+import com.king.app.updater.AppUpdater;
+import com.tencent.smtt.export.external.interfaces.PermissionRequest;
+import com.tencent.smtt.export.external.interfaces.WebResourceError;
+import com.tencent.smtt.export.external.interfaces.WebResourceRequest;
+import com.tencent.smtt.sdk.DownloadListener;
+import com.tencent.smtt.sdk.ValueCallback;
+import com.tencent.smtt.sdk.WebChromeClient;
+import com.tencent.smtt.sdk.WebSettings;
+import com.tencent.smtt.sdk.WebView;
+import com.tencent.smtt.sdk.WebViewClient;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Random;
+import java.util.Timer;
+import java.util.TimerTask;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+
+public class MainActivity2 extends AppCompatActivity {
+ WebView webView;
+ TextView tvErrorMsg;
+ LinearLayout layoutError;
+ ImageView show_top_v;
+ public ImageView showTopV1;
+ private LinearLayout showTopLy;
+ FloatingActionButton floatingActionButton;
+ CardView otherApp;
+ CardView notifyCardView;
+ CardView ivNotify;
+ ImageView ivotherApp;
+ LinearLayout layoutOtherApp;
+ CardView ivFaceBook;
+ CardView ivTelG;
+ CardView ivWhatsApp;
+ CardView ivLink;
+ TextView tvLink;
+ ImageView ivLinkBg;
+ CardView ivHome;
+ private View topVvvv;
+ private ProgressBar progressBar;
+ public static String url = "https://candy916.co/";
+
+ //先定义
+ private static final int REQUEST_EXTERNAL_STORAGE = 1;
+ public static int userId = 2;
+ private String shareUrl;
+ private String myInviteCode;
+ private int contactApply = 1;
+ private int notifyApply = 1;
+ private String facebookUrl = "";
+ private String whatsappUrl = "";
+ private String telegramUrl = "";
+ private List linkconfiglist;
+ private CardView cvShare;
+
+ float lastX, lastY;
+ float initX, initY;
+
+ @Override
+ protected void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
+ setIntent(intent);
+ Bundle bundle = intent.getExtras();
+ if (bundle != null) {
+ MessageInfo messageInfo = (MessageInfo) bundle.getSerializable("message");
+ if (messageInfo != null) {
+ startActivity(new Intent(MainActivity2.this, NotifyListActivity.class).putExtra("message", messageInfo));
+ recordNotify(messageInfo.getPushId());
+ }
+ }
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ getWindow().setNavigationBarColor(Color.parseColor(MainActivity.getString(MainActivity2.this, "style_color", "#FFFFFF")));
+ getWindow().getDecorView().setBackgroundColor(Color.parseColor(MainActivity.getString(MainActivity2.this, "windows_color", "#FFFFFF")));
+ getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
+ super.onCreate(savedInstanceState);
+ View decor = getWindow().getDecorView();
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
+ if (getInt(MainActivity2.this, "is_white", 0) == 1) {
+ decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
+ } else {
+ decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+ }
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.hide();
+ }
+ setContentView(R.layout.activity_main2);
+ String body = getIntent().getStringExtra("message");
+ if (!TextUtils.isEmpty(body)) {
+ MessageInfo messageInfo = GsonUtils.getObjFromJSON(body, MessageInfo.class);
+ if (messageInfo != null) {
+ startActivity(new Intent(MainActivity2.this, NotifyListActivity.class).putExtra("message", messageInfo));
+ recordNotify(messageInfo.getPushId());
+ }
+ }
+
+ boolean isDownload = MainActivity.getBoolean(MainActivity2.this, "download", false);
+ if (!isDownload) {
+ setDownloadNumbers();
+ }
+ initView();
+ findViewById(R.id.back_iv).setOnClickListener(view -> onBackPressed());
+ floatingActionButton = findViewById(R.id.bt_menu);
+ otherApp = findViewById(R.id.bt_otherapp);
+ ivotherApp = findViewById(R.id.iv_otherApp);
+ notifyCardView = findViewById(R.id.bt_notify);
+ ivNotify = findViewById(R.id.bt_notifyitem);
+ layoutOtherApp = findViewById(R.id.layout_otherapp);
+ ivFaceBook = findViewById(R.id.iv_facebook);
+ ivTelG = findViewById(R.id.iv_tel);
+ ivWhatsApp = findViewById(R.id.iv_whatsapp);
+ ivLink = findViewById(R.id.iv_link);
+ tvLink = findViewById(R.id.tv_link);
+ ivLinkBg = findViewById(R.id.iv_linkbg);
+ ivHome = findViewById(R.id.iv_home);
+
+ cvShare = (CardView) findViewById(R.id.cv_share);
+
+// ivNotify.setOnClickListener(view -> {
+// notifyclick();
+// });
+// jdclub9vip
+ tvLink.setText(Html.fromHtml("MISSAV"));
+ ivFaceBook.setOnClickListener(view -> {
+ toOtherApp(facebookUrl, "com.facebook.katana", 1);
+ });
+ ivTelG.setOnClickListener(view -> {
+ toOtherApp(telegramUrl, "org.telegram.messenger", 2);
+ });
+ ivWhatsApp.setOnClickListener(view -> {
+ toOtherApp(whatsappUrl, "com.whatsapp", 3);
+ });
+// ivLink.setOnClickListener(view -> {
+// toLink();
+//
+// });
+ ivHome.setOnClickListener(view -> {
+ webView.loadUrl(url);
+ });
+ floatingActionButton.setOnClickListener(view -> {
+ showBottomDialog();
+ });
+ otherApp.setOnClickListener(view -> {
+ layoutOtherApp.setVisibility(layoutOtherApp.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
+ int visi = layoutOtherApp.getVisibility();
+ if (visi == 0) {
+ ivotherApp.setImageResource(R.mipmap.ic_shousuo);
+ } else {
+ ivotherApp.setImageResource(R.mipmap.ic_zhangkai);
+ }
+ });
+
+
+ if(userId == 157||userId ==158){
+ ivLink.setVisibility(View.VISIBLE);
+ }
+
+ if(userId == 157){
+ cvShare.setVisibility(View.VISIBLE);
+ }
+ cvShare.setOnTouchListener((v, event) -> {
+
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ lastX = event.getRawX();
+ lastY = event.getRawY();
+ initX = event.getRawX();
+ initY = event.getRawY();
+ LogUtils.d("touchevent", "lastX=" + lastX + " lastY" + lastY);
+ break;
+ case MotionEvent.ACTION_MOVE:
+ float dx = event.getRawX() - lastX;
+ float dy = event.getRawY() - lastY;
+ int left = layoutOtherApp.getLeft() + (int) dx;
+ int top = layoutOtherApp.getTop() + (int) dy;
+ int right = layoutOtherApp.getRight() + (int) dx;
+ int bottom = layoutOtherApp.getBottom() + (int) dy;
+ layoutOtherApp.layout(left, top, right, bottom);
+ lastX = event.getRawX();
+ lastY = event.getRawY();
+ break;
+ case MotionEvent.ACTION_UP:
+ float upx = event.getRawX();
+ float upy = event.getRawY();
+ if (upx == initX && upy == initY) {
+ if(userId == 157){
+ Intent textIntent = new Intent(Intent.ACTION_SEND);
+ textIntent.setType("text/plain");
+ textIntent.putExtra(Intent.EXTRA_TEXT, "https://kaki.hfcapital.top");
+ startActivity(Intent.createChooser(textIntent, "分享"));
+
+ }
+ }
+
+ break;
+ }
+ return true;
+ });
+ ivLink.setOnTouchListener((v, event) -> {
+
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ lastX = event.getRawX();
+ lastY = event.getRawY();
+ initX = event.getRawX();
+ initY = event.getRawY();
+ LogUtils.d("touchevent", "lastX=" + lastX + " lastY" + lastY);
+ break;
+ case MotionEvent.ACTION_MOVE:
+ float dx = event.getRawX() - lastX;
+ float dy = event.getRawY() - lastY;
+ int left = layoutOtherApp.getLeft() + (int) dx;
+ int top = layoutOtherApp.getTop() + (int) dy;
+ int right = layoutOtherApp.getRight() + (int) dx;
+ int bottom = layoutOtherApp.getBottom() + (int) dy;
+ layoutOtherApp.layout(left, top, right, bottom);
+ lastX = event.getRawX();
+ lastY = event.getRawY();
+ break;
+ case MotionEvent.ACTION_UP:
+ float upx = event.getRawX();
+ float upy = event.getRawY();
+ if (upx == initX && upy == initY) {
+ toLink();
+ }
+
+ break;
+ }
+ return true;
+ });
+
+ ivNotify.setOnTouchListener((v, event) -> {
+
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ lastX = event.getRawX();
+ lastY = event.getRawY();
+ initX = event.getRawX();
+ initY = event.getRawY();
+ LogUtils.d("touchevent", "lastX=" + lastX + " lastY" + lastY);
+ break;
+ case MotionEvent.ACTION_MOVE:
+ float dx = event.getRawX() - lastX;
+ float dy = event.getRawY() - lastY;
+ int left = layoutOtherApp.getLeft() + (int) dx;
+ int top = layoutOtherApp.getTop() + (int) dy;
+ int right = layoutOtherApp.getRight() + (int) dx;
+ int bottom = layoutOtherApp.getBottom() + (int) dy;
+ layoutOtherApp.layout(left, top, right, bottom);
+ lastX = event.getRawX();
+ lastY = event.getRawY();
+ break;
+ case MotionEvent.ACTION_UP:
+ float upx = event.getRawX();
+ float upy = event.getRawY();
+ if (upx == initX && upy == initY) {
+ notifyclick();
+ }
+
+ break;
+ }
+ return true;
+ });
+ layoutOtherApp.setOnTouchListener((v, event) -> {
+
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ lastX = event.getRawX();
+ lastY = event.getRawY();
+ initX = event.getRawX();
+ initY = event.getRawY();
+ LogUtils.d("touchevent", "lastX=" + lastX + " lastY" + lastY);
+ break;
+ case MotionEvent.ACTION_MOVE:
+ float dx = event.getRawX() - lastX;
+ float dy = event.getRawY() - lastY;
+ int left = v.getLeft() + (int) dx;
+ int top = v.getTop() + (int) dy;
+ int right = v.getRight() + (int) dx;
+ int bottom = v.getBottom() + (int) dy;
+ v.layout(left, top, right, bottom);
+ lastX = event.getRawX();
+ lastY = event.getRawY();
+ break;
+ case MotionEvent.ACTION_UP:
+ float upx = event.getRawX();
+ float upy = event.getRawY();
+ if (upx == initX && upy == initY) {
+ notifyclick();
+ }
+
+ break;
+ }
+ return true;
+ });
+
+ setTotalTongJi(); //每日活跃统计
+
+
+ }
+
+ private void toLink() {
+ if(userId ==157||userId ==158){
+ webView.loadUrl("https://missav.live/dm19/ms");
+
+ }else {
+ webView.loadUrl(linkconfiglist.get(0).getLinkUrl());
+ }
+ }
+
+ public void setBackDrawables(int drawableId){
+ showTopLy.setBackgroundResource(drawableId);
+ }
+
+ /**
+ * 显示圆角还是 原样显示
+ * @param isRound
+ */
+ public void setImageView(boolean isRound){
+ if(isRound){
+ show_top_v.setVisibility(View.VISIBLE);
+ showTopV1.setVisibility(View.GONE);
+ }else{
+ show_top_v.setVisibility(View.GONE);
+ showTopV1.setVisibility(View.VISIBLE);
+ }
+ }
+
+ //跳转通知列表
+ private void notifyclick() {
+ startActivity(new Intent(this, NotifyListActivity.class));
+ }
+
+ private void toOtherApp(String uri, String packagenames, int type) {
+ try {
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(uri));
+ intent.setPackage(packagenames);
+ startActivity(intent);
+ } catch (Exception e) {
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(uri));
+ startActivity(intent);
+ }
+
+ }
+
+
+ public void showBottomDialog() {
+ ActionSelectDialog actionDialog = new ActionSelectDialog(MainActivity2.this);
+ actionDialog.setOnToActionListener(new ActionSelectDialog.OnToActionListener() {
+ @Override
+ public void toShare() {
+ if (TextUtils.isEmpty(myInviteCode)) {
+ getMyInvite(true);
+ } else {
+ goShare();
+ }
+ }
+
+ @Override
+ public void toCheck() {
+ showRecordDialog();
+ }
+
+ @Override
+ public void toWithDrawRecords() {
+ showWithDrawRecordDialog();
+ }
+
+ @Override
+ public void toWithDrawApply() {
+ goWithDrawApply();
+ }
+
+ @Override
+ public void toBankInfo() {
+ showBankInfoDialog();
+ }
+ });
+ actionDialog.setCancelable(true);
+ actionDialog.setCanceledOnTouchOutside(true);
+ actionDialog.show();
+ }
+
+ public void goShare() {
+ Intent shareTextIntent = new Intent();
+ shareTextIntent.setAction(Intent.ACTION_SEND);
+ String title = getString(R.string.app_sharetitle) + myInviteCode;
+ String parentCode = MainActivity.getString(this, "code", "");
+ shareTextIntent.putExtra(Intent.EXTRA_TITLE, title + (TextUtils.isEmpty(parentCode) ? "" : "\n" + getString(R.string.app_sharetitle2) + parentCode));
+ shareTextIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.app_name) + getString(R.string.app_sharecontent) + shareUrl + " \n" + title);
+ shareTextIntent.setType("text/plain");
+ startActivity(Intent.createChooser(shareTextIntent, getString(R.string.app_name) + getString(R.string.app_sharecontent)));
+ }
+
+ private ActionWithDrawApplyDialog drawApplyDialog;
+
+ public void goWithDrawApply() {
+ drawApplyDialog = new ActionWithDrawApplyDialog(MainActivity2.this, myInviteCode);
+ drawApplyDialog.setOnToActionListener(new ActionWithDrawApplyDialog.OnToActionListener() {
+ @Override
+ public void toSumbit(String content) {
+ sendApply(content);
+ }
+
+ @Override
+ public void toCancel() {
+
+ }
+ });
+ drawApplyDialog.setCancelable(false);
+ drawApplyDialog.setCanceledOnTouchOutside(false);
+ drawApplyDialog.show();
+ }
+
+ /**
+ * 编辑银行卡信息
+ */
+ public void showBankInfoDialog() {
+ ActionBankInfoDialog bankInfoDialog = new ActionBankInfoDialog(MainActivity2.this, myInviteCode);
+ bankInfoDialog.setCancelable(false);
+ bankInfoDialog.setCanceledOnTouchOutside(false);
+ bankInfoDialog.show();
+ }
+
+ /**
+ * 发送申请记录
+ */
+ public void sendApply(String amount) {
+ HashMap map = new HashMap<>();
+ map.put("userId", userId);
+ map.put("amount", amount);
+ map.put("inviteCode", myInviteCode);
+ Api.getInstance().sendWithDrawApply(map)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new BaseObserver() {
+ @Override
+ public void onSuccess(Result o) {
+ Toast.makeText(MainActivity2.this, getString(R.string.app_toastapply), Toast.LENGTH_SHORT).show();
+ if (drawApplyDialog != null) {
+ drawApplyDialog.dismiss();
+ }
+ getMyInvite(false);
+
+ }
+
+ @Override
+ public void onError(int code, String msg) {
+ LogUtils.d("dddd" + msg);
+ Toast.makeText(MainActivity2.this, msg, Toast.LENGTH_SHORT).show();
+ }
+
+ @Override
+ public void onError2(Result o) {
+ Toast.makeText(MainActivity2.this, o.error, Toast.LENGTH_SHORT).show();
+ }
+ });
+ }
+
+
+ public void showRecordDialog() {
+ ActionInviteRecordsDialog actionDialog = new ActionInviteRecordsDialog(MainActivity2.this, myInviteCode);
+ actionDialog.setCancelable(false);
+ actionDialog.setCanceledOnTouchOutside(false);
+ actionDialog.show();
+ }
+
+ public void showWithDrawRecordDialog() {
+ ActionWithDrawRecordsDialog actionDialog = new ActionWithDrawRecordsDialog(MainActivity2.this, myInviteCode);
+ actionDialog.setCancelable(false);
+ actionDialog.setCanceledOnTouchOutside(false);
+ actionDialog.show();
+ }
+
+ ActionConfirmDialog actionDialog;
+
+ private void checkNotify() {
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ if (!notificationManager.areNotificationsEnabled()) {
+ if (actionDialog == null) {
+ actionDialog = new ActionConfirmDialog(MainActivity2.this,
+ getString(R.string.notification_title_txt), getString(R.string.notification_cancel_txt),
+ getString(R.string.notification_setting_txt));
+ }
+ actionDialog.setOnToActionListener(new ActionConfirmDialog.OnToActionListener() {
+ @Override
+ public void toSumbit() {
+ jumpNotificationSetting();
+ }
+
+ @Override
+ public void toCancel() {
+ if (notifyApply == 1) {
+ MainActivity2.this.finish();
+ }
+
+
+ }
+ });
+ actionDialog.setCanceledOnTouchOutside(false);
+ actionDialog.setCancelable(false);
+ actionDialog.show();
+
+
+ }
+ }
+ }
+
+ private void jumpNotificationSetting() {
+ final ApplicationInfo applicationInfo = getApplicationInfo();
+ try {
+ Intent intent = new Intent();
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
+ intent.putExtra("app_package", applicationInfo.packageName);
+ intent.putExtra("android.provider.extra.APP_PACKAGE", applicationInfo.packageName);
+ intent.putExtra("app_uid", applicationInfo.uid);
+ startActivity(intent);
+ } catch (Throwable t) {
+ t.printStackTrace();
+ Intent intent = new Intent();
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
+ intent.setData(Uri.fromParts("package", applicationInfo.packageName, null));
+ startActivity(intent);
+ }
+ }
+
+ @Override
+ public void onBackPressed() {
+
+ if (webView.canGoBack()) {//当webview有多级能返回的时候
+ String url = webView.getUrl();
+ // 在首页 就退出这个页面
+ if (webView.getUrl().equals(url + "index") || webView.getUrl().equals(url + "/index")) {
+ super.onBackPressed();
+ } else { //不在首页 回到首页
+ if (webView.getUrl().equals(url + "index") || webView.getUrl().equals(url + "/index")) {
+ isAtGame = false;
+ }
+ topVvvv.setVisibility(View.GONE);
+ progressBar.setVisibility(View.VISIBLE);
+ //当有条过登录页面 只能重载 不然逻辑会异常
+ if (hasSignIn) {
+ onShowNetView();
+ webView.loadUrl(url);
+ } else {
+ while (webView.canGoBack()) {
+ webView.goBack();
+ }
+
+ }
+ }
+
+ } else {//不能返回了 关闭进程 退出程序
+ Intent homeIntent = new Intent(Intent.ACTION_MAIN);
+ homeIntent.addCategory(Intent.CATEGORY_HOME);
+ homeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(homeIntent);
+ android.os.Process.killProcess(android.os.Process.myPid());
+ System.exit(1);
+
+ }
+ }
+
+
+ private static String[] PERMISSIONS_STORAGE = {
+ "android.permission.READ_EXTERNAL_STORAGE",
+ "android.permission.WRITE_EXTERNAL_STORAGE"};
+
+ private static String[] PERMISSIONS_CAMERA = {
+ Manifest.permission.CAMERA};
+
+ //然后通过一个函数来申请
+ public static void verifyStoragePermissions(Activity activity) {
+
+ // 没有写的权限,去申请写的权限,会弹出对话框
+ ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
+
+ }
+
+
+ @SuppressLint({"NewApi", "WrongConstant"})
+ protected void initView() {
+ topVvvv = (View) findViewById(R.id.top_vvvv);
+ webView = findViewById(R.id.webview);
+ show_top_v = findViewById(R.id.show_top_v);
+
+ showTopV1 = (ImageView) findViewById(R.id.show_top_v1);
+ showTopLy = findViewById(R.id.show_top_ly);
+ progressBar = (ProgressBar) findViewById(R.id.progressbar);
+ tvErrorMsg = findViewById(R.id.errormsg);
+ layoutError = findViewById(R.id.layoutError);
+ WebSettings settings = webView.getSettings();
+ settings.setDomStorageEnabled(true);
+ settings.setAppCacheEnabled(true);
+ settings.setCacheMode(WebSettings.LOAD_DEFAULT);
+ settings.setJavaScriptEnabled(true);
+ settings.setLoadWithOverviewMode(true);
+ // 设置允许访问文件数据
+ settings.setAllowFileAccess(true);
+ settings.setAllowContentAccess(true);
+ settings.setDatabaseEnabled(true);
+ settings.setSavePassword(false);
+ settings.setSaveFormData(false);
+ settings.setUseWideViewPort(true);
+ settings.setBuiltInZoomControls(true);
+ settings.setPluginState(WebSettings.PluginState.ON);
+ settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
+ webView.setFocusable(true);
+ webView.setFocusableInTouchMode(true);
+ webView.getSettings().setSupportMultipleWindows(true);
+
+ settings.setSupportZoom(false);
+ webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
+// webView.setHorizontalScrollbarOverlay(true);
+ webView.setHorizontalScrollBarEnabled(true);
+ webView.requestFocus();
+// webView.setBackgroundColor(getColor(R.color.black));
+ settings.setJavaScriptCanOpenWindowsAutomatically(true);
+ settings.setMediaPlaybackRequiresUserGesture(false);
+ // 设置在WebView内部是否允许通过file url加载的 Js代码读取其他的本地文件
+ // Android 4.1前默认允许,4.1后默认禁止
+ settings.setAllowFileAccessFromFileURLs(true);
+ // 设置WebView内部是否允许通过 file url 加载的 Javascript 可以访问其他的源(包括http、https等源)
+ // Android 4.1前默认允许,4.1后默认禁止
+ settings.setAllowUniversalAccessFromFileURLs(true);
+
+
+ webView.setWebChromeClient(webChromeClient);
+ webView.setWebViewClient(webViewClient);
+ Log.i("XHXDEBUG", "XHXDEBUGURL:::" + url);
+
+ showTopLy.setBackgroundColor(Color.parseColor(MainActivity.getString(MainActivity2.this, "windows_color", "#FFFFFF")));
+ webView.setDownloadListener(new DownloadListener() {
+ @Override
+ public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) {
+ LogUtils.i("URL是啥onDownloadStart:" + url);
+
+ try {
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(url));
+ startActivity(intent);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+ });
+ getNetUrl();
+ getNotifyList();
+ }
+
+ public void getNotifyList() {
+
+ Api.getInstance().getNotifyList(userId, 1, 1)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new BaseObserver>>() {
+ @Override
+ public void onSuccess(Result> o) {
+ if (o.data != null && o.data.getTotal() > 0) {
+ otherApp.setVisibility(View.INVISIBLE);
+
+ ivNotify.setVisibility(View.VISIBLE);
+ if(userId == 112||userId == 87||userId == 91||userId ==93
+ ||userId ==92||userId==84||userId == 120||userId ==70||userId ==143 ||userId ==149){
+ ivNotify.setVisibility(View.INVISIBLE);
+ layoutOtherApp.setVisibility(View.GONE);
+ }
+ ivotherApp.setImageResource(R.mipmap.ic_shousuo);
+ }
+ }
+
+ @Override
+ public void onError(int code, String msg) {
+ LogUtils.i("获取的结果error" + msg);
+ }
+
+ @Override
+ public void onError2(Result> o) {
+ LogUtils.i("获取的结果error");
+ }
+ });
+ }
+
+ public void getNetUrl() {
+ Api.getInstance().geUrlNew(userId)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new BaseObserver>() {
+ @Override
+ public void onSuccess(Result o) {
+
+ DataInfo dataInfo = o.data;
+ if (dataInfo != null) {
+ if (dataInfo.getIsUse() == 0) {
+ MainActivity2.this.finish();
+ return;
+ }
+ if (!TextUtils.isEmpty(dataInfo.getUrl())) {
+ MainActivity.saveString(MainActivity2.this, "base_url", dataInfo.getUrl());
+ webView.loadUrl(dataInfo.getUrl());
+ }
+ shareUrl = dataInfo.getDownloadUrl();
+ String link = dataInfo.getLinkConfig();
+ if (!TextUtils.isEmpty(link)) {
+ try {
+ linkconfiglist = GsonUtils.getListFromJSON(link, LinkConfigInfo.class);
+ } catch (Exception e) {
+
+ }
+ }
+ if (!TextUtils.isEmpty(dataInfo.getVersionCode())) {
+ if (Integer.parseInt(dataInfo.getVersionCode()) > getInt(MainActivity2.this, "version_code", 0)) {
+ ActionConfirmDialog actionDialog = new ActionConfirmDialog(MainActivity2.this,
+ getString(R.string.banbengengxin_txt), getString(R.string.xiacigengxin_txt),
+ getString(R.string.lijigengxin_txt));
+ actionDialog.setOnToActionListener(new ActionConfirmDialog.OnToActionListener() {
+ @Override
+ public void toSumbit() {
+ checkUpdate(dataInfo.getApkUrl());
+ }
+
+ @Override
+ public void toCancel() {
+ if (dataInfo.getForceUpdate() == 1) {
+ MainActivity2.this.finish();
+ }
+ }
+ });
+ actionDialog.show();
+ }
+ }
+// contactApply = dataInfo.getContactApplyMode();
+// notifyApply = dataInfo.getNoticeApplyMode();
+// if (contactApply == 0 || contactApply == 1) {
+// readContact();
+// }
+// if (notifyApply == 0 || notifyApply == 1) {
+// checkNotify();
+// }
+// facebookUrl = dataInfo.getFbUrl().trim();
+// telegramUrl = dataInfo.getTgUrl().trim();
+// whatsappUrl = dataInfo.getWsUrl().trim();
+// if (!TextUtils.isEmpty(facebookUrl)) {
+// otherApp.setVisibility(View.INVISIBLE);
+// ivFaceBook.setVisibility(View.VISIBLE);
+// }
+// if (!TextUtils.isEmpty(telegramUrl)) {
+// otherApp.setVisibility(View.INVISIBLE);
+// ivTelG.setVisibility(View.VISIBLE);
+// }
+// if (!TextUtils.isEmpty(whatsappUrl)) {
+// otherApp.setVisibility(View.INVISIBLE);
+// ivWhatsApp.setVisibility(View.VISIBLE);
+// }
+// if(userId == 143 ||userId ==149){
+// otherApp.setVisibility(View.INVISIBLE);
+// ivFaceBook.setVisibility(View.GONE);
+// ivTelG.setVisibility(View.GONE);
+// ivWhatsApp.setVisibility(View.GONE);
+// layoutOtherApp.setVisibility(View.GONE);
+// }
+ } else {
+ url = MainActivity.getString(MainActivity2.this, "base_url", url);
+ webView.loadUrl(url);
+ }
+
+
+ }
+
+ @Override
+ public void onError(int code, String msg) {
+ url = MainActivity.getString(MainActivity2.this, "base_url", url);
+ webView.loadUrl(url);
+ }
+
+ @Override
+ public void onError2(Result o) {
+ url = MainActivity.getString(MainActivity2.this, "base_url", url);
+ webView.loadUrl(url);
+ }
+ });
+
+ }
+
+
+ private void checkUpdate(String url) {
+ new AppUpdater(this, url).start();
+ }
+//
+// List contents = new ArrayList<>();
+// private static String[] PERMISSIONS_READCONTACT = {
+// Manifest.permission.READ_CONTACTS};
+//
+// public void readContact() {
+// if (ContextCompat.checkSelfPermission(MainActivity2.this, Manifest.permission.READ_CONTACTS) != 0) {
+// ActivityCompat.requestPermissions(MainActivity2.this, PERMISSIONS_READCONTACT, 2222);
+// } else {
+// //开启线程上传数据
+// new Thread(() -> {
+// //获取通讯录
+// contents = new ArrayList<>();
+// Cursor cursor = null;
+// try {
+// cursor = getContentResolver().query(
+// ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
+// null, null, null, null);
+// while (cursor.moveToNext()) {
+// int i_name = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
+// String displayName = cursor.getString(i_name);
+// int i_number = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
+// String number = cursor.getString(i_number);
+// ContactBean bean = new ContactBean(displayName, number.trim());
+// contents.add(bean);
+// }
+// } catch (Exception e) {
+// e.printStackTrace();
+// } finally {
+// if (cursor != null) {
+// cursor.close();
+// postReadContact(contents);
+// }
+// }
+// }).start();
+//
+//
+// }
+// }
+
+// public void postReadContact(List contents) {
+// Gson gson = new Gson();
+// HashMap map = new HashMap<>();
+// map.put("userId", userId);
+// map.put("customers", contents);
+// String result = gson.toJson(map);
+// MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
+// Api.getInstance().readContact(RequestBody.create(mediaType, result))
+// .subscribeOn(Schedulers.io())
+// .observeOn(AndroidSchedulers.mainThread())
+// .subscribe(new BaseObserver() {
+// @Override
+// public void onSuccess(Result o) {
+// LogUtils.i("URL是啥获取的文件地址:");
+//
+// }
+//
+// @Override
+// public void onError(int code, String msg) {
+// LogUtils.i("error:" + msg);
+// }
+//
+// @Override
+// public void onError2(Result o) {
+//
+// }
+// });
+// }
+
+ public void setDownloadNumbers() {
+ HashMap map = new HashMap<>();
+ map.put("userId", userId);
+ Api.getInstance().downloadNumbers(map)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new BaseObserver() {
+ @Override
+ public void onSuccess(Result o) {
+ LogUtils.i("URL是啥获取的文件地址:");
+ MainActivity.saveBoolean(MainActivity2.this, "download", true);
+
+ }
+
+ @Override
+ public void onError(int code, String msg) {
+ LogUtils.i("error:" + msg);
+ }
+
+ @Override
+ public void onError2(Result o) {
+
+ }
+ });
+ }
+
+
+ public void setTotalTongJi() {
+ HashMap map = new HashMap<>();
+ map.put("userId", userId);
+ Api.getInstance().totalTongJi(map)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new BaseObserver() {
+ @Override
+ public void onSuccess(Result o) {
+
+
+ }
+
+ @Override
+ public void onError(int code, String msg) {
+
+ }
+
+ @Override
+ public void onError2(Result o) {
+
+ }
+ });
+ }
+
+ public void recordNotify(int pushId) {
+ HashMap map = new HashMap<>();
+ map.put("pushId", pushId);
+ Api.getInstance().totalNotify(map)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new BaseObserver() {
+ @Override
+ public void onSuccess(Result o) {
+
+
+ }
+
+ @Override
+ public void onError(int code, String msg) {
+ LogUtils.d("dddd" + msg);
+ }
+
+ @Override
+ public void onError2(Result o) {
+
+ }
+ });
+ }
+
+ public void getMyInvite(boolean isShare) {
+ HashMap map = new HashMap<>();
+ map.put("userId", userId);
+ map.put("deviceCode", Utils.getUniqueId(MainActivity2.this));
+ Api.getInstance().getMyInvited(map)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new BaseObserver>() {
+ @Override
+ public void onSuccess(Result o) {
+ if (o.data != null) {
+ myInviteCode = o.data.getInviteCode();
+// myInviteNum = o.data.getInviteNum();
+ MainActivity.saveString(MainActivity2.this, "balance", o.data.getBalance());
+ MainActivity.saveString(MainActivity2.this, "income", o.data.getIncome());
+ MainActivity.saveString(MainActivity2.this, "bankname", o.data.getBankName());
+ MainActivity.saveString(MainActivity2.this, "name", o.data.getName());
+ MainActivity.saveString(MainActivity2.this, "bankno", o.data.getBankNo());
+ }
+ if (isShare) {
+ goShare();
+ }
+
+ }
+
+ @Override
+ public void onError(int code, String msg) {
+ LogUtils.d("dddd" + msg);
+ }
+
+ @Override
+ public void onError2(Result o) {
+
+ }
+ });
+ }
+
+ Handler handler = new Handler();
+
+ boolean hasSignIn = false;
+
+ WebViewClient webViewClient = new WebViewClient() {
+
+
+ @Override
+ public void onPageFinished(WebView webView, String s) {
+ super.onPageFinished(webView, s);
+ LogUtils.i("URL是啥加载完成:" + webView.getUrl());
+ if (webView.getUrl().contains("hasSignIn")) {
+ hasSignIn = true;
+ }
+
+ int w = View.MeasureSpec.makeMeasureSpec(0,
+ View.MeasureSpec.UNSPECIFIED);
+ int h = View.MeasureSpec.makeMeasureSpec(0,
+ View.MeasureSpec.UNSPECIFIED);
+ // 重新测量
+ webView.measure(w, h);
+ if (showTopLy.getVisibility() == View.VISIBLE) {
+ handler.postDelayed(() -> showTopLy.setVisibility(View.GONE), 1000);
+ }
+ if (webView.getUrl().equals(url + "index") || webView.getUrl().equals(url + "/index")) {
+ isAtGame = false;
+ topVvvv.setVisibility(View.GONE);
+ } else {
+ if (isAtGame) {
+ topVvvv.setVisibility(View.VISIBLE);
+ } else {
+ topVvvv.setVisibility(View.GONE);
+
+ }
+ }
+
+ }
+
+
+ @Override
+ public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
+ super.onReceivedError(view, request, error);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ int errorCode = error.getErrorCode();
+ String errorMessage = error.getDescription().toString();
+ String currentUrl = request.getUrl().toString();
+ if ((errorCode == -2 || errorCode == -6) && currentUrl.contains(url)) {
+ onShowErrorView(errorMessage);
+ } else {
+ onShowNetView();
+ }
+ }
+ progressBar.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
+ super.onReceivedError(view, errorCode, description, failingUrl);
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+ if ((errorCode == -2 || errorCode == -6) && failingUrl.contains(url)) {
+ onShowErrorView(description);
+ } else {
+ onShowNetView();
+ }
+ }
+ progressBar.setVisibility(View.GONE);
+
+ }
+
+
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView webView, String url1) {
+
+ LogUtils.i("URL是啥:" + url1);
+
+
+ if (url1.equals(url + "index") || url1.equals(url + "/index")) {
+ isAtGame = false;
+ topVvvv.setVisibility(View.GONE);
+ } else {
+ progressBar.setVisibility(View.VISIBLE);
+ }
+ if (isToOutSideUrl(url1)) {
+ try {
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(url1));
+ startActivity(intent);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ if (!(url1.startsWith("http") || url1.startsWith("https"))) {
+ try {
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(url1));
+ startActivity(intent);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+
+ if ((url1.equals(url + "index") || url1.equals(url + "/index")) && webView.canGoBack()) {
+ return false;
+ } else {
+ //其它的该怎么处理就怎么处理
+ webView.loadUrl(url1);
+ return true;
+ }
+
+ }
+
+ return false;
+ }
+
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
+ Uri uri;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ uri = request.getUrl();
+ } else {
+ uri = Uri.parse(request.toString());
+ }
+ String url1 = uri.toString();
+ LogUtils.i("URL是啥1:" + url1);
+
+ if (isToOutSideUrl(url1)) {
+ try {
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(url1));
+ startActivity(intent);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ if (url1.equals(url + "index") || url1.equals(url + "/index")) {
+ isAtGame = false;
+ topVvvv.setVisibility(View.GONE);
+ } else {
+ progressBar.setVisibility(View.VISIBLE);
+ }
+
+ if (!(url1.startsWith("http") || url1.startsWith("https"))) {
+ try {
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(url1));
+ startActivity(intent);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+
+ if ((url1.equals(url + "index") || url1.equals(url + "/index")) && webView.canGoBack()) {
+ return false;
+ } else {
+ //其它的该怎么处理就怎么处理
+ webView.loadUrl(url1);
+ return true;
+ }
+
+ }
+
+ return false;
+ }
+ };
+
+ private boolean isToOutSideUrl(String url1) {
+ return url1.contains("facebook") || url1.contains("https://t.me") ||
+ url1.contains("instagram") || url1.contains("https://x.com")||url1.contains("https://wa.me")||
+ url1.contains("https://m.me")||url1.contains("http://m.me");
+ }
+
+
+ public void onShowErrorView(String errorMsg) { //网络不可用的情况
+ webView.setVisibility(View.GONE);
+ layoutError.setVisibility(View.VISIBLE);
+ tvErrorMsg.setText(errorMsg);
+ showTopLy.setVisibility(View.GONE);
+// isNetError = true;
+
+ }
+
+ public void onShowNetView() {
+ // topVvvv.setVisibility(View.GONE);
+ webView.setVisibility(View.VISIBLE);
+ layoutError.setVisibility(View.GONE);
+ showTopLy.setVisibility(View.GONE);
+// isNetError = false;
+ }
+
+
+ boolean isAtGame = false;
+ // String uuid = "", uuid1 = "";
+ private static final int REQUEST_CODE_FILE_CHOOSER = 1;
+ private ValueCallback mUploadCallbackForLowApi;
+ private ValueCallback mUploadCallbackForHighApi;
+ WebChromeClient webChromeClient = new WebChromeClient() {
+ @Override
+ public boolean onCreateWindow(WebView webViewdd, boolean b, boolean b1, Message resultMsg) {
+ LogUtils.i("URL是啥onCreateWindow:" + webView.getUrl());
+
+ WebView newWebView = new WebView(webViewdd.getContext());
+ newWebView.setWebViewClient(new WebViewClient() {
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
+
+ LogUtils.i("URL是啥新窗口:"+url);
+
+ if (isToOutSideUrl(url)) {
+ try {
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(url));
+ startActivity(intent);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ if (!(url.startsWith("http") || url.startsWith("https"))) {
+ try {
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(url));
+ startActivity(intent);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ Intent browserIntent = new Intent(MainActivity2.this, WebViewActivity.class);
+ browserIntent.putExtra("url", url);
+ startActivity(browserIntent);
+ return true;
+ }
+ return false;
+ }
+
+
+ });
+ WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
+ transport.setWebView(newWebView);
+ resultMsg.sendToTarget();
+ return true;
+ }
+
+ @Override
+ public void onCloseWindow(WebView window) {
+ super.onCloseWindow(window);
+ LogUtils.i("URL是啥新窗口结束:"+url);
+
+ }
+
+ @Override
+ public void onProgressChanged(WebView view, int newProgress) {
+ super.onProgressChanged(view, newProgress);
+ // 更新进度条的进度
+ progressBar.setProgress(newProgress);
+ // 如果加载完成,隐藏进度条
+ if (newProgress == 100) {
+ progressBar.setVisibility(View.GONE);
+ } else {
+ progressBar.setVisibility(View.VISIBLE);
+ }
+ }
+
+
+ // @TargetApi(Build.VERSION_CODES.LOLLIPOP)
+ @Override
+ public boolean onShowFileChooser(WebView webView, ValueCallback filePathCallback, FileChooserParams fileChooserParams) {
+ LogUtils.i("数据接口:onShowFileChooser");
+ mUploadCallbackForHighApi = filePathCallback;
+ Intent intent = fileChooserParams.createIntent();
+ intent.addCategory(Intent.CATEGORY_OPENABLE);
+ startActivityForResult(Intent.createChooser(intent, "File chooser"), REQUEST_CODE_FILE_CHOOSER);
+ return true;
+ }
+
+ // For 3.0+
+ protected void openFileChooser(ValueCallback uploadMsg, String acceptType) {
+ LogUtils.i("数据接口:openFileChooseracceptType");
+ openFilerChooser(uploadMsg);
+ }
+
+
+ private void openFilerChooser(ValueCallback uploadMsg) {
+ LogUtils.i("数据接口:openFileChooser");
+ mUploadCallbackForLowApi = uploadMsg;
+ startActivityForResult(Intent.createChooser(getFilerChooserIntent(), "File Chooser"), REQUEST_CODE_FILE_CHOOSER);
+ }
+
+
+ private Intent getFilerChooserIntent() {
+ Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
+ intent.addCategory(Intent.CATEGORY_OPENABLE);
+ return intent;
+ }
+
+
+ @Override
+ public void onPermissionRequest(PermissionRequest request) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ MainActivity2.this.runOnUiThread(() -> {
+ for (String permisson : request.getResources()) {
+ permissionRequest = request;
+ if (permisson.equals(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) {
+ if (ContextCompat.checkSelfPermission(MainActivity2.this, Manifest.permission.CAMERA) != 0) {
+ ActivityCompat.requestPermissions(MainActivity2.this, PERMISSIONS_CAMERA, 1111);
+ } else {
+ request.grant(request.getResources());
+ request.getOrigin();
+ }
+
+ }
+ }
+ });
+ }
+ }
+ };
+
+ private PermissionRequest permissionRequest;
+
+
+ @RequiresApi(api = Build.VERSION_CODES.Q)
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ switch (requestCode) {
+ case REQUEST_CODE_FILE_CHOOSER:
+ if (resultCode == RESULT_OK || resultCode == RESULT_CANCELED) {
+ afterFileChooseGoing(resultCode, data);
+ }
+ break;
+
+
+ }
+ }
+
+
+ /**
+ * onActivityResult方法
+ */
+
+ private void afterFileChooseGoing(int resultCode, Intent data) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ if (mUploadCallbackForHighApi == null) {
+ return;
+ }
+ mUploadCallbackForHighApi.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, data));
+ mUploadCallbackForHighApi = null;
+ } else {
+ if (mUploadCallbackForLowApi == null) {
+ return;
+ }
+ Uri result = data == null ? null : data.getData();
+ mUploadCallbackForLowApi.onReceiveValue(result);
+ mUploadCallbackForLowApi = null;
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode,
+ String permissions[], int[] grantResults) {
+ if (grantResults.length == 0) {
+ return;
+ }
+ switch (requestCode) {
+ case REQUEST_EXTERNAL_STORAGE:
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
+ }
+ break;
+ case 1111:
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED && permissionRequest != null) {
+ permissionRequest.grant(permissionRequest.getResources());
+ }
+ break;
+ case 2222:
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+// readContact();
+ } else {
+ //没同意
+ if (contactApply == 1) {
+ MainActivity2.this.finish();
+ }
+
+ }
+ break;
+ default:
+ break;
+ }
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ }
+
+
+
+ @Override
+ public void onDestroy() {
+
+ if (webView != null) {
+ //加载null内容
+ webView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
+ //清除历史记录
+ webView.clearHistory();
+ //移除WebView
+// ((ViewGroup) webView.getParent()).removeView(webView);
+ //销毁VebView
+ webView.destroy();
+ }
+
+ super.onDestroy();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ if (notifyApply == 0 || notifyApply == 1) {
+ checkNotify();
+ }
+
+
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+
+ }
+
+
+ public static void saveInt(Context context, String key, int value) {
+ SharedPreferences sp = context.getSharedPreferences("InitApp", Activity.MODE_PRIVATE);
+ SharedPreferences.Editor editor = sp.edit();
+ editor.putInt(key, value);
+ editor.apply();
+ }
+
+ public static int getInt(Context context, String key, int defValue) {
+ SharedPreferences sp = context.getSharedPreferences("InitApp", Activity.MODE_PRIVATE);
+ return sp.getInt(key, defValue);
+ }
+
+ Handler mainHandler = new Handler(Looper.getMainLooper());
+
+ public boolean isApplicationBroughtToBackground(final Context context) {
+ ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+ List tasks = am.getRunningTasks(1);
+ if (!tasks.isEmpty()) {
+ ComponentName topActivity = tasks.get(0).topActivity;
+ if (!topActivity.getPackageName().equals(context.getPackageName())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/base_Fachai8hk/src/main/java/com/web/base/MainActivity3.java b/base_Fachai8hk/src/main/java/com/web/base/MainActivity3.java
new file mode 100644
index 0000000..cdfca57
--- /dev/null
+++ b/base_Fachai8hk/src/main/java/com/web/base/MainActivity3.java
@@ -0,0 +1,544 @@
+package com.web.base;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Message;
+import android.util.Log;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.webkit.ValueCallback;
+import android.webkit.WebView;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.RelativeLayout;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+
+import com.just.agentweb.AgentWeb;
+import com.just.agentweb.WebChromeClient;
+import com.just.agentweb.WebViewClient;
+
+
+
+public class MainActivity3 extends AppCompatActivity {
+ LinearLayout webView;
+ ImageView show_top_v;
+ ImageView menu_iv;
+ private ImageView helpIv;
+ private LinearLayout showTopLy;
+
+ String downloadImageUrl = "";
+ private int requestCode;
+ private String[] permissions;
+ private int[] grantResults;
+ private View topVvvv;
+ private int index = 0;
+ private FrameLayout videoContainer;
+
+ private ImageView backIv;
+ private ProgressBar progressBar;
+
+ AgentWeb mAgentWeb;
+
+ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+
+ getWindow().setNavigationBarColor(getColor(R.color.white));
+ getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
+
+ super.onCreate(savedInstanceState);
+ View decor = getWindow().getDecorView();
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
+ decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.hide();
+ }
+ setContentView(R.layout.activity_main3);
+ initView();
+// setopHeight();
+ findViewById(R.id.back_iv).setOnClickListener(view -> onBackPressed());
+ }
+
+ public void hideStatusBar(Activity activity) {
+ if (activity == null) return;
+ Window window = activity.getWindow();
+ if (window == null) return;
+ window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
+ WindowManager.LayoutParams lp = window.getAttributes();
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
+ }
+ window.setAttributes(lp);
+ }
+
+
+ @Override
+ public void onBackPressed() {
+
+// if (mAgentWeb.canGoBack()) {//当webview有多级能返回的时候
+// // 在首页 就退出这个页面
+// if (webView.getUrl().equals(url + "index") || webView.getUrl().equals(url + "/index")) {
+//
+// Intent intent = new Intent(this, MainActivity.class);
+// startActivity(intent);
+// super.onBackPressed();
+// } else { //不在首页 回到首页
+// if (webView.getUrl().equals(url + "index") || webView.getUrl().equals(url + "/index")) {
+// isAtGame = false;
+// }
+// topVvvv.setVisibility(View.GONE);
+// progressBar.setVisibility(View.VISIBLE);
+// webView.loadUrl(url);
+// }
+// } else {//不能返回了
+//
+// //返回计算器
+// Intent intent = new Intent(this, MainActivity.class);
+// startActivity(intent);
+//// }
+ super.onBackPressed();
+// }
+ }
+
+ /**
+ * 修改图标和名称的方法
+ */
+ public void changeIcon() {
+ PackageManager pm = getApplicationContext().getPackageManager();
+
+ pm.setComponentEnabledSetting(new ComponentName(
+ this,
+ "com.web.base.MainActivity"),
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+ PackageManager.DONT_KILL_APP);
+ Log.d("TAG", "换Test的图标");
+
+ pm.setComponentEnabledSetting(new ComponentName(
+ this,
+ "com.web.base.MainActivityNew"),
+ PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+ PackageManager.DONT_KILL_APP);
+
+ }
+
+ private void setopHeight() {
+ RelativeLayout.LayoutParams linearParams = (RelativeLayout.LayoutParams) topVvvv.getLayoutParams(); //取控件textView当前的布局参数
+ linearParams.height = getStatusBarHeight();// 控件的宽强制设成30
+
+ topVvvv.setLayoutParams(linearParams);
+ }
+
+ //https://m.xiannvtu.com/
+ public static String url = "http://winway33.com/";
+
+ // https://telegram.2ltop.com/url.json?rand=111111111
+ //先定义
+ private static final int REQUEST_EXTERNAL_STORAGE = 1;
+
+ private static String[] PERMISSIONS_STORAGE = {
+ "android.permission.READ_EXTERNAL_STORAGE",
+ "android.permission.WRITE_EXTERNAL_STORAGE"};
+
+ //然后通过一个函数来申请
+ public static void verifyStoragePermissions(Activity activity) {
+
+ // 没有写的权限,去申请写的权限,会弹出对话框
+ ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
+
+ }
+
+
+ @SuppressLint({"NewApi", "WrongConstant"})
+ protected void initView() {
+ topVvvv = (View) findViewById(R.id.top_vvvv);
+ webView = findViewById(R.id.webview);
+ show_top_v = findViewById(R.id.show_top_v);
+ showTopLy = findViewById(R.id.show_top_ly);
+ videoContainer = (FrameLayout) findViewById(R.id.videoContainer);
+// topVvvvf = (RelativeLayout) findViewById(R.id.top_vvvvf);
+// topVvvv1 = (StatusLayout) findViewById(R.id.top_vvvv1);
+ backIv = (ImageView) findViewById(R.id.back_iv);
+ progressBar = (ProgressBar) findViewById(R.id.progressbar);
+
+// WebSettings settings = webView.getSettings();
+// settings.setDomStorageEnabled(true);
+// settings.setAppCacheEnabled(true);
+// settings.setCacheMode(WebSettings.LOAD_DEFAULT);
+// settings.setJavaScriptEnabled(true);
+// settings.setLoadWithOverviewMode(true);
+// // 设置允许访问文件数据
+// settings.setAllowFileAccess(true);
+// settings.setAllowContentAccess(true);
+// settings.setDatabaseEnabled(true);
+// settings.setSavePassword(false);
+// settings.setSaveFormData(false);
+// settings.setUseWideViewPort(true);
+// settings.setBuiltInZoomControls(true);
+// settings.setPluginState(WebSettings.PluginState.ON);
+// settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
+// webView.setFocusable(true);
+// webView.setFocusableInTouchMode(true);
+// webView.getSettings().setSupportMultipleWindows(true);
+//
+// settings.setSupportZoom(false);
+// webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
+//// webView.setHorizontalScrollbarOverlay(true);
+// webView.setHorizontalScrollBarEnabled(true);
+// webView.requestFocus();
+//// webView.setBackgroundColor(getColor(R.color.black));
+// settings.setJavaScriptCanOpenWindowsAutomatically(true);
+//
+// // 设置在WebView内部是否允许通过file url加载的 Js代码读取其他的本地文件
+// // Android 4.1前默认允许,4.1后默认禁止
+// settings.setAllowFileAccessFromFileURLs(true);
+// // 设置WebView内部是否允许通过 file url 加载的 Javascript 可以访问其他的源(包括http、https等源)
+// // Android 4.1前默认允许,4.1后默认禁止
+// settings.setAllowUniversalAccessFromFileURLs(true);
+//
+//
+// webView.setWebChromeClient(webChromeClient);
+// webView.setWebViewClient(webViewClient);
+// Log.i("XHXDEBUG", "XHXDEBUGURL:::" + url);
+//
+//// new Handler().postDelayed(() -> showTopLy.setVisibility(View.GONE), 3000);
+//// verifyStoragePermissions(this);
+//
+// webView.setDownloadListener(new DownloadListener() {
+// @Override
+// public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) {
+// LogUtils.i("URL是啥onDownloadStart:" + url);
+//
+// try {
+// Intent intent = new Intent();
+// intent.setAction(Intent.ACTION_VIEW);
+// intent.setData(Uri.parse(url));
+// startActivity(intent);
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+//
+// }
+// });
+ getNetUrl();
+ }
+ public void getNetUrl(){
+// Api.getInstance().geUrl(System.currentTimeMillis())
+// .subscribeOn(Schedulers.io())
+// .observeOn(AndroidSchedulers.mainThread())
+// .subscribe(new BaseObserver() {
+// @Override
+// public void onSuccess(Result o) {
+// LogUtils.i("URL是啥获取的文件地址:"+o.url);
+// if(!TextUtils.isEmpty(o.url)){
+// MainActivity.saveString(MainActivity3.this,"base_url",o.url);
+// url = MainActivity.getString(MainActivity3.this, "base_url", url);
+// toUrl(url);
+// }
+// }
+//
+// @Override
+// public void onError(int code, String msg) {
+// url = MainActivity.getString(MainActivity3.this, "base_url", url);
+// toUrl(url);
+// }
+// });
+ }
+
+ private void toUrl(String url) {
+ mAgentWeb = AgentWeb.with(this)
+ .setAgentWebParent( webView, new LinearLayout.LayoutParams(-1, -1))
+ .useDefaultIndicator()
+ .setWebViewClient(webViewClient)
+ .setWebChromeClient(webChromeClient)
+ .createAgentWeb()
+
+ .ready()
+ .go(url);
+
+ }
+
+
+ WebViewClient webViewClient = new WebViewClient() {
+
+ @Override
+ public void onPageFinished(WebView webView, String s) {
+ super.onPageFinished(webView, s);
+ LogUtils.i("URL是啥加载完成:" + webView.getUrl());
+
+ int w = View.MeasureSpec.makeMeasureSpec(0,
+ View.MeasureSpec.UNSPECIFIED);
+ int h = View.MeasureSpec.makeMeasureSpec(0,
+ View.MeasureSpec.UNSPECIFIED);
+ // 重新测量
+ webView.measure(w, h);
+ showTopLy.setVisibility(View.GONE);
+
+ if (webView.getUrl().equals(url + "index") || webView.getUrl().equals(url + "/index")) {
+ isAtGame = false;
+ topVvvv.setVisibility(View.GONE);
+
+ } else {
+ if (isAtGame) {
+ topVvvv.setVisibility(View.VISIBLE);
+ } else {
+ topVvvv.setVisibility(View.GONE);
+
+ }
+ }
+
+ }
+// @Override
+// public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
+// super.onReceivedError(view, request, error);
+// if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+// int errorCode = error.getErrorCode();
+// String errorMessage = error.getDescription().toString();
+// Log.i("CustomWebViewClient", "onReceivedError errorCode : " + errorCode + " errorMessage : " + errorMessage);
+// }
+// progressBar.setVisibility(View.GONE);
+// }
+
+ @Override
+ public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
+ super.onReceivedError(view, errorCode, description, failingUrl);
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+ Log.i("CustomWebViewClient", "onReceivedError errorCode : " + errorCode + " description : " + description);
+ }
+ progressBar.setVisibility(View.GONE);
+
+ }
+
+// @Override
+// public boolean shouldOverrideUrlLoading(WebView webView, String s) {
+// LogUtils.i("URL是啥:"+s);
+// return super.shouldOverrideUrlLoading(webView, s);
+// }
+
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView webView, String url1) {
+
+ LogUtils.i("URL是啥:" + url1);
+ if (url1.equals(url + "index") || url1.equals(url + "/index")) {
+ isAtGame = false;
+ topVvvv.setVisibility(View.GONE);
+ }else{
+ progressBar.setVisibility(View.VISIBLE);
+ }
+
+ if (!(url1.startsWith("http") || url1.startsWith("https"))) {
+ try {
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(url1));
+ startActivity(intent);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ //其它的该怎么处理就怎么处理
+ webView.loadUrl(url1);
+ return true;
+ }
+
+ return true;
+ }
+ };
+
+ boolean isAtGame = false;
+ // String uuid = "", uuid1 = "";
+ private static final int REQUEST_CODE_FILE_CHOOSER = 1;
+ private ValueCallback mUploadCallbackForLowApi;
+ private ValueCallback mUploadCallbackForHighApi;
+ WebChromeClient webChromeClient = new WebChromeClient() {
+// @Override
+// public boolean onCreateWindow(WebView webViewdd, boolean b, boolean b1, Message resultMsg) {
+// LogUtils.i("URL是啥onCreateWindow:" + webViewdd.getUrl());
+//
+// WebView newWebView = new WebView(MainActivity3.this);
+// newWebView.setWebViewClient(new WebViewClient() {
+// @Override
+// public boolean shouldOverrideUrlLoading(WebView view, String url) {
+// isAtGame = true;
+// mAgentWeb.getUrlLoader().loadUrl(url);
+// return true;
+// }
+// });
+// return true;
+// }
+
+
+ @Override
+ public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
+ return super.onCreateWindow(view, isDialog, isUserGesture, resultMsg);
+ }
+
+ @Override
+ public void onProgressChanged(WebView view, int newProgress) {
+ super.onProgressChanged(view, newProgress);
+ // 更新进度条的进度
+ progressBar.setProgress(newProgress);
+ // 如果加载完成,隐藏进度条
+ if (newProgress == 100) {
+ progressBar.setVisibility(View.GONE);
+ } else {
+ progressBar.setVisibility(View.VISIBLE);
+ }
+ }
+
+
+ };
+
+
+ @RequiresApi(api = Build.VERSION_CODES.Q)
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ switch (requestCode) {
+ case REQUEST_CODE_FILE_CHOOSER:
+ if (resultCode == RESULT_OK || resultCode == RESULT_CANCELED) {
+ afterFileChooseGoing(resultCode, data);
+ }
+ break;
+
+
+ }
+ }
+
+ /**
+ * onActivityResult方法
+ */
+
+ private void afterFileChooseGoing(int resultCode, Intent data) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ if (mUploadCallbackForHighApi == null) {
+ return;
+ }
+ mUploadCallbackForHighApi.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, data));
+ mUploadCallbackForHighApi = null;
+ } else {
+ if (mUploadCallbackForLowApi == null) {
+ return;
+ }
+ Uri result = data == null ? null : data.getData();
+ mUploadCallbackForLowApi.onReceiveValue(result);
+ mUploadCallbackForLowApi = null;
+ }
+ }
+ public class JavaScriptinterface {
+ Context context;
+
+ public JavaScriptinterface(Context c) {
+ context = c;
+ }
+
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode,
+ String permissions[], int[] grantResults) {
+ switch (requestCode) {
+ case REQUEST_EXTERNAL_STORAGE:
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
+ }
+ break;
+ default:
+ break;
+ }
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ }
+
+ /**
+ * 设置网页中图片的点击事件
+ *
+ * @param view
+ */
+ public static void setWebImageClick(WebView view, String method) {
+
+
+ }
+
+
+// @Override
+// public boolean onKeyDown(int keyCode, KeyEvent event) {
+//
+// if (keyCode == KeyEvent.KEYCODE_BACK) {
+//
+// if (webView.canGoBack()) {
+// webView.goBack();
+// return true;
+// } else {
+// return super.onKeyDown(keyCode, event);
+//
+// }
+//
+// }
+// return super.onKeyDown(keyCode, event);
+// }
+
+
+ @Override
+ public void onDestroy() {
+
+ if (webView != null) {
+ //加载null内容
+// webView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
+// //清除历史记录
+// webView.clearHistory();
+ //移除WebView
+// ((ViewGroup) webView.getParent()).removeView(webView);
+ //销毁VebView
+ mAgentWeb.destroy();
+ }
+ super.onDestroy();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+
+ }
+
+
+ /**
+ * 获取状态栏高度
+ *
+ * @return
+ */
+ public int getStatusBarHeight() {
+ int result = 0;
+ //获取状态栏高度的资源id
+ int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
+ if (resourceId > 0) {
+ result = getResources().getDimensionPixelSize(resourceId);
+ }
+ return result;
+ }
+ //wp-caption alignnone
+
+
+}
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/MessageInfo.java b/base_Fachai8hk/src/main/java/com/web/base/MessageInfo.java
similarity index 98%
rename from Dmcslot/src/main/java/com/web/dmcslot/MessageInfo.java
rename to base_Fachai8hk/src/main/java/com/web/base/MessageInfo.java
index c8988a3..c6852f1 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/MessageInfo.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/MessageInfo.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import java.io.Serializable;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/MyBankListAdapter.java b/base_Fachai8hk/src/main/java/com/web/base/MyBankListAdapter.java
similarity index 98%
rename from Dmcslot/src/main/java/com/web/dmcslot/MyBankListAdapter.java
rename to base_Fachai8hk/src/main/java/com/web/base/MyBankListAdapter.java
index 315d687..de365ed 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/MyBankListAdapter.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/MyBankListAdapter.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import android.view.LayoutInflater;
import android.view.View;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/MyListAdapter.java b/base_Fachai8hk/src/main/java/com/web/base/MyListAdapter.java
similarity index 98%
rename from Dmcslot/src/main/java/com/web/dmcslot/MyListAdapter.java
rename to base_Fachai8hk/src/main/java/com/web/base/MyListAdapter.java
index 33bdccb..f42b437 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/MyListAdapter.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/MyListAdapter.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import android.view.LayoutInflater;
import android.view.View;
diff --git a/base_Fachai8hk/src/main/java/com/web/base/MyNotifyListAdapter.java b/base_Fachai8hk/src/main/java/com/web/base/MyNotifyListAdapter.java
new file mode 100644
index 0000000..3d3cb0f
--- /dev/null
+++ b/base_Fachai8hk/src/main/java/com/web/base/MyNotifyListAdapter.java
@@ -0,0 +1,179 @@
+package com.web.base;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.bumptech.glide.Glide;
+
+import java.security.Timestamp;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 通知列表适配器
+ */
+public class MyNotifyListAdapter extends RecyclerView.Adapter {
+
+ private List listdata;
+ private onItemClickPostionListener itemClickPostionListener;
+ private Context context;
+ private MessageInfo messageItem;
+
+
+ public MyNotifyListAdapter(Context context, List listdata, MessageInfo messageItem) {
+ this.context = context;
+ this.listdata = listdata;
+ this.messageItem = messageItem;
+ }
+
+ public void setListdata(List listdata) {
+ this.listdata = listdata;
+ notifyDataSetChanged();
+ }
+
+
+ public void setOnItemClick(onItemClickPostionListener onItemClick) {
+ this.itemClickPostionListener = onItemClick;
+ }
+
+ @NonNull
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_notify_list, parent, false);
+ return new ViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
+
+// holder.itemView.setOnClickListener(view -> {
+// if (itemClickPostionListener != null) {
+// itemClickPostionListener.item(position);
+// }
+// });
+
+ MessageInfo messageInfo = listdata.get(position);
+ if (messageItem != null && messageInfo.getRecordId() == messageItem.getPushId()) {
+ messageInfo.setShowAll(true);
+ messageItem = null;
+ }
+ int type = messageInfo.getType();
+ if (type == 1) {
+ holder.root.setBackgroundColor(context.getColor(R.color.notify_textcolor));
+ holder.tvType.setText("Text");
+ }
+ if (type == 2) {
+ holder.root.setBackgroundColor(context.getColor(R.color.notify_imagecolor));
+ holder.tvType.setText("Image");
+ }
+ if (type == 3) {
+ holder.root.setBackgroundColor(context.getColor(R.color.notify_jumplinkcolor));
+ holder.tvType.setText("Jump link");
+ }
+ holder.tvTitle.setText(messageInfo.getTitle());
+ holder.layoutMore.setVisibility(View.GONE);
+ holder.tvContent.setText(messageInfo.getContent());
+ holder.ivMsg.setVisibility(View.GONE);
+ holder.tvTime.setText(messageInfo.getCreateTime());
+ holder.tvJumpLink.setVisibility(View.GONE);
+
+ holder.lookIv.setText(longTime(messageInfo.getCreateTime()));
+ if (!TextUtils.isEmpty(messageInfo.getImage())) {
+ LogUtils.i("地址是啥:"+messageInfo.getImage());
+ holder.ivMsg.setVisibility(View.VISIBLE);
+ Glide.with(context).load(messageInfo.getImage()).into(holder.ivMsg);
+ }
+ if (!TextUtils.isEmpty(messageInfo.getJumpUrl())) {
+ holder.tvJumpLink.setVisibility(View.VISIBLE);
+ holder.tvJumpLink.setText(messageInfo.getJumpUrl());
+ holder.tvJumpLink.setOnClickListener(view -> {
+ if (itemClickPostionListener != null) {
+ itemClickPostionListener.item(position);
+ }
+ });
+ }
+ if (messageInfo.isShowAll()) {
+ holder.ivNotifyPull.setBackgroundResource(R.mipmap.ic_notify_shangla);
+ holder.layoutMore.setVisibility(View.VISIBLE);
+ } else {
+ holder.ivNotifyPull.setBackgroundResource(R.mipmap.ic_notify_xiala);
+ holder.layoutMore.setVisibility(View.GONE);
+ }
+ holder.itemView.setOnClickListener(view -> {
+ messageInfo.setShowAll(!messageInfo.isShowAll());
+ notifyItemChanged(position);
+ });
+
+ }
+
+ public String longTime(String dateString){
+ // 定义所需的日期格式
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ try {
+ Long timeStr = dateFormat.parse(dateString).getTime();
+
+ String name = (((System.currentTimeMillis()-timeStr)/1000/60)+1000)+"";
+
+ return name;
+ } catch (ParseException e) {
+ return "1000";
+ }
+
+ }
+
+
+ @Override
+ public int getItemCount() {
+ return listdata != null ? listdata.size() : 0;
+ }
+
+ public static class ViewHolder extends RecyclerView.ViewHolder {
+
+
+ private final TextView tvType;
+ private final TextView tvTime;
+ private final TextView tvContent;
+ private final TextView tvTitle;
+ private final TextView tvJumpLink;
+ private final ImageView ivType;
+ private final ImageView ivNotifyPull;
+ private final ImageView ivMsg;
+ private ConstraintLayout root;
+ private LinearLayout layoutMore;
+ private TextView lookIv;
+ public ViewHolder(@NonNull View itemView) {
+ super(itemView);
+ root = itemView.findViewById(R.id.big_bg);
+// tvType = itemView.findViewById(R.id.iv_readtype);
+ tvType = itemView.findViewById(R.id.tv_msg_type);
+ ivType = itemView.findViewById(R.id.iv_icon);
+ ivNotifyPull = itemView.findViewById(R.id.ic_notify_pull);
+ ivMsg = itemView.findViewById(R.id.iv_notifyimage);
+ tvContent = itemView.findViewById(R.id.iv_notifycontent);
+ tvTitle = itemView.findViewById(R.id.tv_msg_title);
+ tvTime = itemView.findViewById(R.id.tv_msg_time);
+ tvJumpLink = itemView.findViewById(R.id.iv_notifyjumpclick);
+ layoutMore = itemView.findViewById(R.id.layout_more);
+ lookIv = itemView.findViewById(R.id.look_iv);
+ }
+
+ }
+
+ public interface onItemClickPostionListener {
+ void item(int position);
+ }
+
+}
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/MyWithDrwaListAdapter.java b/base_Fachai8hk/src/main/java/com/web/base/MyWithDrwaListAdapter.java
similarity index 98%
rename from Dmcslot/src/main/java/com/web/dmcslot/MyWithDrwaListAdapter.java
rename to base_Fachai8hk/src/main/java/com/web/base/MyWithDrwaListAdapter.java
index 6ad6759..adb5291 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/MyWithDrwaListAdapter.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/MyWithDrwaListAdapter.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import android.content.Context;
import android.view.LayoutInflater;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/NotifyDetailsActivity.java b/base_Fachai8hk/src/main/java/com/web/base/NotifyDetailsActivity.java
similarity index 98%
rename from Dmcslot/src/main/java/com/web/dmcslot/NotifyDetailsActivity.java
rename to base_Fachai8hk/src/main/java/com/web/base/NotifyDetailsActivity.java
index 2122457..4583498 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/NotifyDetailsActivity.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/NotifyDetailsActivity.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import android.Manifest;
import android.annotation.SuppressLint;
@@ -9,15 +9,10 @@ import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Message;
-import android.text.TextUtils;
-import android.util.Log;
import android.view.View;
import android.view.WindowManager;
-import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
-import android.widget.ProgressBar;
-import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/NotifyListActivity.java b/base_Fachai8hk/src/main/java/com/web/base/NotifyListActivity.java
similarity index 95%
rename from Dmcslot/src/main/java/com/web/dmcslot/NotifyListActivity.java
rename to base_Fachai8hk/src/main/java/com/web/base/NotifyListActivity.java
index d267e53..7b58c8d 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/NotifyListActivity.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/NotifyListActivity.java
@@ -1,11 +1,10 @@
-package com.web.dmcslot;
+package com.web.base;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
-import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -38,6 +37,7 @@ public class NotifyListActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
+ userId = MainActivity2.getInt(NotifyListActivity.this,"user_code",userId);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
super.onCreate(savedInstanceState);
View decor = getWindow().getDecorView();
@@ -62,7 +62,7 @@ public class NotifyListActivity extends AppCompatActivity {
int firstvisibleCount = manager.findFirstVisibleItemPosition();
if (visibleCount > 0 && visibleCount + firstvisibleCount == totalCount) { //滑动到底部
if (!isNextPages) {
- Toast.makeText(NotifyListActivity.this, getString(R.string.app_toastloading), Toast.LENGTH_SHORT).show();
+// Toast.makeText(NotifyListActivity.this, getString(R.string.app_toastloading), Toast.LENGTH_SHORT).show();
return;
}
page++;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/Result.java b/base_Fachai8hk/src/main/java/com/web/base/Result.java
similarity index 89%
rename from Dmcslot/src/main/java/com/web/dmcslot/Result.java
rename to base_Fachai8hk/src/main/java/com/web/base/Result.java
index 511727b..4251091 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/Result.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/Result.java
@@ -1,10 +1,8 @@
-package com.web.dmcslot;
+package com.web.base;
import java.io.Serializable;
-import com.web.dmcslot.GsonUtils;
-
/**
* created by wmm on 2020/9/8
*/
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/ResultDataInfo.java b/base_Fachai8hk/src/main/java/com/web/base/ResultDataInfo.java
similarity index 96%
rename from Dmcslot/src/main/java/com/web/dmcslot/ResultDataInfo.java
rename to base_Fachai8hk/src/main/java/com/web/base/ResultDataInfo.java
index 3825da0..21c09e1 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/ResultDataInfo.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/ResultDataInfo.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import java.io.Serializable;
import java.util.List;
diff --git a/base_Fachai8hk/src/main/java/com/web/base/StartActivity.java b/base_Fachai8hk/src/main/java/com/web/base/StartActivity.java
new file mode 100644
index 0000000..0361614
--- /dev/null
+++ b/base_Fachai8hk/src/main/java/com/web/base/StartActivity.java
@@ -0,0 +1,219 @@
+package com.web.base;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.TextView;
+
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+
+import java.math.BigDecimal;
+
+public class StartActivity extends AppCompatActivity implements View.OnClickListener {
+
+
+ private StringBuilder currentInput = new StringBuilder("");
+ private BigDecimal currentAnswer = new BigDecimal(0);
+ private boolean hasCount = false;
+ private Button btn_0, btn_1, btn_2, btn_3, btn_4, btn_5, btn_6, btn_7, btn_8, btn_9, btn_equal;
+ private TextView password1;
+ private TextView password2;
+ private TextView password3;
+ private TextView password4;
+ private TextView password5;
+ private TextView password6;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ getWindow().setNavigationBarColor(getColor(R.color.white));
+ super.onCreate(savedInstanceState);
+ View decor = getWindow().getDecorView();
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
+ decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.hide();
+ }
+ setContentView(R.layout.activity_start);
+
+ setListener();
+ getNetUrl();
+
+ }
+
+ public void setListener() {
+
+
+ password1 = (TextView) findViewById(R.id.password_1);
+ password2 = (TextView) findViewById(R.id.password_2);
+ password3 = (TextView) findViewById(R.id.password_3);
+ password4 = (TextView) findViewById(R.id.password_4);
+ password5 = (TextView) findViewById(R.id.password_5);
+ password6 = (TextView) findViewById(R.id.password_6);
+
+
+ btn_0 = (Button) findViewById(R.id.btn_0);
+ btn_0.setOnClickListener(this);
+ btn_1 = (Button) findViewById(R.id.btn_1);
+ btn_1.setOnClickListener(this);
+ btn_2 = (Button) findViewById(R.id.btn_2);
+ btn_2.setOnClickListener(this);
+ btn_3 = (Button) findViewById(R.id.btn_3);
+ btn_3.setOnClickListener(this);
+ btn_4 = (Button) findViewById(R.id.btn_4);
+ btn_4.setOnClickListener(this);
+ btn_5 = (Button) findViewById(R.id.btn_5);
+ btn_5.setOnClickListener(this);
+ btn_6 = (Button) findViewById(R.id.btn_6);
+ btn_6.setOnClickListener(this);
+ btn_7 = (Button) findViewById(R.id.btn_7);
+ btn_7.setOnClickListener(this);
+ btn_8 = (Button) findViewById(R.id.btn_8);
+ btn_8.setOnClickListener(this);
+ btn_9 = (Button) findViewById(R.id.btn_9);
+ btn_9.setOnClickListener(this);
+
+ btn_equal = (Button) findViewById(R.id.btn_equal);
+ btn_equal.setOnClickListener(this);
+ }
+
+ String password = "";
+
+ /**
+ * 0 正常增加 1 删除 2 更新
+ *
+ * @param string
+ * @param type
+ */
+ public void addInput(String string, int type) {
+ if (type == 0) {
+ if (password.length() < 6) {
+ password += string;
+ }
+ } else if (type == 1) {
+ password = password.substring(0, password.length() - 1);
+ }
+ if (password.length() == 6) {
+ password6.setText(password.charAt(5) + "");
+ toNext();
+ } else {
+ password6.setText("");
+ if (password.length() == 5) {
+ password5.setText(password.charAt(4) + "");
+ } else {
+ password5.setText("");
+ if (password.length() == 4) {
+ password4.setText(password.charAt(3) + "");
+ } else {
+ password4.setText("");
+ if (password.length() == 3) {
+ password3.setText(password.charAt(2) + "");
+ } else {
+ password3.setText("");
+ if (password.length() == 2) {
+ password2.setText(password.charAt(1) + "");
+ } else {
+ password2.setText("");
+ if (password.length() == 1) {
+ password1.setText(password.charAt(0) + "");
+ } else {
+ password1.setText("");
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public void getNetUrl(){
+// Api.getInstance().geUrl(System.currentTimeMillis())
+// .subscribeOn(Schedulers.io())
+// .observeOn(AndroidSchedulers.mainThread())
+// .subscribe(new BaseObserver() {
+// @Override
+// public void onSuccess(Result o) {
+// LogUtils.i("获取的文件地址:"+o.url);
+// if(!TextUtils.isEmpty(o.url)){
+// MainActivity.saveString(StartActivity.this,"base_url",o.url);
+// }
+// }
+//
+// @Override
+// public void onError(int code, String msg) {
+//
+// }
+// });
+ }
+
+ Handler handler = new Handler();
+
+ private void toNext() {
+ MainActivity.saveString(StartActivity.this, "loc_pass", password);
+ Intent intent = new Intent(StartActivity.this, MainActivity2.class);
+// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(intent);
+ finish();
+
+ }
+
+
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+// case R.id.btn_0:
+// addInput("0", 0);
+// break;
+// case R.id.btn_1:
+// addInput("1", 0);
+// break;
+// case R.id.btn_2:
+// addInput("2", 0);
+// break;
+// case R.id.btn_3:
+// addInput("3", 0);
+// break;
+// case R.id.btn_4:
+// addInput("4", 0);
+// break;
+// case R.id.btn_5:
+// addInput("5", 0);
+// break;
+// case R.id.btn_6:
+// addInput("6", 0);
+// break;
+// case R.id.btn_7:
+// addInput("7", 0);
+// break;
+// case R.id.btn_8:
+// addInput("8", 0);
+// break;
+// case R.id.btn_9:
+// addInput("9", 0);
+// break;
+//
+// case R.id.btn_equal:
+// deleteInput();
+// break;
+ }
+ }
+
+ private void deleteInput() {
+ if (TextUtils.isEmpty(password)) {
+ addInput("", 2);
+ } else {
+ addInput(password, 1);
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ }
+}
\ No newline at end of file
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/StatusLayout.java b/base_Fachai8hk/src/main/java/com/web/base/StatusLayout.java
similarity index 97%
rename from Dmcslot/src/main/java/com/web/dmcslot/StatusLayout.java
rename to base_Fachai8hk/src/main/java/com/web/base/StatusLayout.java
index 7922344..20a4941 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/StatusLayout.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/StatusLayout.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import android.content.Context;
import android.util.AttributeSet;
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/Utils.java b/base_Fachai8hk/src/main/java/com/web/base/Utils.java
similarity index 91%
rename from Dmcslot/src/main/java/com/web/dmcslot/Utils.java
rename to base_Fachai8hk/src/main/java/com/web/base/Utils.java
index 370c261..94629dc 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/Utils.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/Utils.java
@@ -1,13 +1,10 @@
-package com.web.dmcslot;
+package com.web.base;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
-import android.os.Build;
import android.provider.Settings;
-import java.security.NoSuchAlgorithmException;
-
public class Utils {
public static boolean isImageUrl(String url) {
@@ -59,9 +56,7 @@ public class Utils {
}
public static SharedPreferences getConfigShared(Context context) {
- if (context == null) {
- context = WebApplication.application;
- }
+
SharedPreferences sharedPreferences =
context.getSharedPreferences("notify_data", Context.MODE_MULTI_PROCESS);
return sharedPreferences;
diff --git a/base_Fachai8hk/src/main/java/com/web/base/WebView2Activity.java b/base_Fachai8hk/src/main/java/com/web/base/WebView2Activity.java
new file mode 100644
index 0000000..0bf6199
--- /dev/null
+++ b/base_Fachai8hk/src/main/java/com/web/base/WebView2Activity.java
@@ -0,0 +1,328 @@
+package com.web.base;
+
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Message;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.Toast;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.king.app.updater.AppUpdater;
+import com.tencent.smtt.export.external.interfaces.ConsoleMessage;
+import com.tencent.smtt.export.external.interfaces.WebResourceRequest;
+import com.tencent.smtt.sdk.ValueCallback;
+import com.tencent.smtt.sdk.WebChromeClient;
+import com.tencent.smtt.sdk.WebSettings;
+import com.tencent.smtt.sdk.WebView;
+import com.tencent.smtt.sdk.WebViewClient;
+
+
+
+public class WebView2Activity extends AppCompatActivity {
+
+ private String url;
+ WebView webView;
+ ImageView show_top_v;
+ ImageView menu_iv;
+ private ImageView helpIv;
+ private LinearLayout showTopLy;
+ private FrameLayout videoContainer;
+ private ImageView backIv;
+ private ProgressBar progressBar;
+ private View topVvvv;
+
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ getWindow().setNavigationBarColor(getColor(R.color.white));
+ getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
+
+ super.onCreate(savedInstanceState);
+ View decor = getWindow().getDecorView();
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
+ decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.hide();
+ }
+ setContentView(R.layout.activity_webview);
+ findViewById(R.id.back_iv).setOnClickListener(view -> finish());
+ url = getIntent().getStringExtra("url");
+ initView();
+ }
+
+ private ValueCallback mUploadCallbackForHighApi;
+
+ public void initView() {
+ topVvvv = (View) findViewById(R.id.top_vvvv);
+ webView = findViewById(R.id.webview);
+ show_top_v = findViewById(R.id.show_top_v);
+ showTopLy = findViewById(R.id.show_top_ly);
+ videoContainer = (FrameLayout) findViewById(R.id.videoContainer);
+ backIv = (ImageView) findViewById(R.id.back_iv);
+ progressBar = (ProgressBar) findViewById(R.id.progressbar);
+ WebSettings settings = webView.getSettings();
+ settings.setDomStorageEnabled(true);
+ settings.setAppCacheEnabled(true);
+ settings.setCacheMode(WebSettings.LOAD_DEFAULT);
+ settings.setJavaScriptEnabled(true);
+ settings.setLoadWithOverviewMode(true);
+ // 设置允许访问文件数据
+ settings.setAllowFileAccess(true);
+ settings.setAllowContentAccess(true);
+ settings.setDatabaseEnabled(true);
+ settings.setSavePassword(false);
+ settings.setSaveFormData(false);
+ settings.setUseWideViewPort(true);
+ settings.setBuiltInZoomControls(true);
+ settings.setPluginState(WebSettings.PluginState.ON);
+ settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
+ webView.setFocusable(true);
+ webView.setFocusableInTouchMode(true);
+ webView.getSettings().setSupportMultipleWindows(true);
+
+ settings.setSupportZoom(false);
+ webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
+// webView.setHorizontalScrollbarOverlay(true);
+ webView.setHorizontalScrollBarEnabled(true);
+ webView.requestFocus();
+// webView.setBackgroundColor(getColor(R.color.black));
+ settings.setJavaScriptCanOpenWindowsAutomatically(false);
+ settings.setMediaPlaybackRequiresUserGesture(false);
+
+ // 设置在WebView内部是否允许通过file url加载的 Js代码读取其他的本地文件
+ // Android 4.1前默认允许,4.1后默认禁止
+ settings.setAllowFileAccessFromFileURLs(true);
+ // 设置WebView内部是否允许通过 file url 加载的 Javascript 可以访问其他的源(包括http、https等源)
+ // Android 4.1前默认允许,4.1后默认禁止
+ settings.setAllowUniversalAccessFromFileURLs(true);
+
+// settings.setBuiltInZoomControls(false); // 启用缩放功能
+// settings.setDisplayZoomControls(false); // 隐藏缩放控件
+
+
+ webView.setWebChromeClient(new WebChromeClient() {
+ @Override
+ public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
+
+ WebView newWebView = new WebView(WebView2Activity.this);
+ topVvvv.setVisibility(View.VISIBLE);
+ webView.addView(newWebView);
+ WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
+ transport.setWebView(newWebView);
+ resultMsg.sendToTarget();
+
+ newWebView.setWebViewClient(new WebViewClient() {
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
+// isAtGame = true;
+ progressBar.setVisibility(View.GONE);
+ webView.loadUrl(url);
+ return true;
+ }
+ });
+
+ // WebView newWebView = new WebView(view.getContext());
+// newWebView.setWebViewClient(new WebViewClient() {
+// @Override
+// public boolean shouldOverrideUrlLoading(WebView view, String url) {
+// Intent browserIntent = new Intent(WebViewActivity.this, WebViewActivity.class);
+// browserIntent.putExtra("url", url);
+// startActivity(browserIntent);
+// return true;
+// }
+// });
+// WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
+// transport.setWebView(newWebView);
+// resultMsg.sendToTarget();
+// return true;
+ return true;
+ }
+
+
+ @Override
+ public void onCloseWindow(WebView window) {
+ super.onCloseWindow(window);
+ }
+
+ @Override
+ public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
+ LogUtils.d("consolemessage==" + consoleMessage.message());
+ return true;
+ }
+
+
+ @Override
+ public void onProgressChanged(WebView view, int newProgress) {
+ super.onProgressChanged(view, newProgress);
+ }
+ });
+ webView.setWebViewClient(new WebViewClient() {
+
+
+ @Override
+ public void onPageFinished(WebView view, String url) {
+ super.onPageFinished(view, url);
+ showTopLy.setVisibility(View.GONE);
+ progressBar.setVisibility(View.GONE);
+ topVvvv.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ public void onPageStarted(WebView view, String url, Bitmap favicon) {
+ super.onPageStarted(view, url, favicon);
+ progressBar.setVisibility(View.VISIBLE);
+ topVvvv.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
+
+ Uri uri;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ uri = request.getUrl();
+ } else {
+ uri = Uri.parse(request.toString());
+ }
+ String url1 = uri.toString();
+ LogUtils.d("url1111111111==" + url1);
+ if (url1.equals(url + "index") || url1.equals(url + "/index")) {
+ topVvvv.setVisibility(View.GONE);
+ } else {
+ progressBar.setVisibility(View.VISIBLE);
+ }
+
+ if (!(url1.startsWith("http") || url1.startsWith("https"))) {
+ try {
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(url1));
+ startActivity(intent);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+
+ if ((url1.equals(url + "index") || url1.equals(url + "/index")) && webView.canGoBack()) {
+ return false;
+ } else {
+ if (url1.contains(".apk")) { //下载
+ Toast.makeText(WebView2Activity.this, "下载开始,请稍后...", Toast.LENGTH_SHORT).show();
+// Constants.isUpdate = false;
+ new AppUpdater(WebView2Activity.this, url1).start();
+ return false;
+ }
+ //其它的该怎么处理就怎么处理
+ LogUtils.d("url1111111111==2" + url1);
+ webView.loadUrl(url1);
+ return true;
+ }
+
+ }
+ return false;
+ }
+
+
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url1) {
+ if (url1.equals(url + "index") || url1.equals(url + "/index")) {
+ topVvvv.setVisibility(View.GONE);
+ } else {
+ progressBar.setVisibility(View.VISIBLE);
+ }
+
+ if (!(url1.startsWith("http") || url1.startsWith("https"))) {
+ try {
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(url1));
+ startActivity(intent);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+
+ if ((url1.equals(url + "index") || url1.equals(url + "/index")) && webView.canGoBack()) {
+ return false;
+ } else {
+ if (url1.contains(".apk")) { //下载
+ new AppUpdater(WebView2Activity.this, url1).start();
+ return false;
+ }
+ //其它的该怎么处理就怎么处理
+ webView.loadUrl(url1);
+ return false;
+ }
+
+ }
+
+ return false;
+ }
+
+
+ });
+
+
+// webView.setOnTouchListener(new View.OnTouchListener() {
+// @Override
+// public boolean onTouch(View view, MotionEvent motionEvent) {
+// if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
+// webView.loadUrl("javascript:_IntervalResize(+\" + view + \",false)");
+// return true;
+// } else {
+// return false;
+// }
+// }
+// });
+
+// webView.onWindowFocusChanged(true);
+// webView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
+// @Override
+// public void onFocusChange(View view, boolean b) {
+// LogUtils.d("B==" + b);
+// view.invalidate();
+// }
+// });
+ if (url != null) {
+ webView.loadUrl(url);
+ }
+ }
+
+
+ @Override
+ public void onBackPressed() {
+ if (webView.canGoBack()) {//当webview有多级能返回的时候
+ webView.goBack();
+ } else {//不能返回了
+ WebView2Activity.this.finish();
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ if (webView != null) {
+ //加载null内容
+ // webView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
+ //清除历史记录
+ // webView.clearHistory();
+ //移除WebView
+// ((ViewGroup) webView.getParent()).removeView(webView);
+ //销毁VebView
+ webView.destroy();
+ }
+ super.onDestroy();
+ }
+}
diff --git a/base_Fachai8hk/src/main/java/com/web/base/WebViewActivity.java b/base_Fachai8hk/src/main/java/com/web/base/WebViewActivity.java
new file mode 100644
index 0000000..e8aa8a4
--- /dev/null
+++ b/base_Fachai8hk/src/main/java/com/web/base/WebViewActivity.java
@@ -0,0 +1,451 @@
+package com.web.base;
+
+
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Message;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.king.app.updater.AppUpdater;
+import com.tencent.smtt.export.external.interfaces.WebResourceError;
+import com.tencent.smtt.export.external.interfaces.WebResourceRequest;
+import com.tencent.smtt.sdk.ValueCallback;
+import com.tencent.smtt.sdk.WebChromeClient;
+import com.tencent.smtt.sdk.WebSettings;
+import com.tencent.smtt.sdk.WebView;
+import com.tencent.smtt.sdk.WebViewClient;
+
+
+public class WebViewActivity extends AppCompatActivity {
+
+ private String url;
+ WebView webView;
+ TextView tvErrorMsg;
+ LinearLayout layoutError;
+ ImageView show_top_v;
+ ImageView menu_iv;
+ private ImageView helpIv;
+ private LinearLayout showTopLy;
+ private FrameLayout videoContainer;
+ private ImageView backIv;
+ private ProgressBar progressBar;
+ private View topVvvv;
+
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ getWindow().setNavigationBarColor(getColor(R.color.white));
+ getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
+
+ super.onCreate(savedInstanceState);
+ View decor = getWindow().getDecorView();
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
+ decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.hide();
+ }
+ setContentView(R.layout.activity_main2);
+ findViewById(R.id.back_iv).setOnClickListener(view -> finish());
+ url = getIntent().getStringExtra("url");
+ initView();
+ }
+
+ private ValueCallback mUploadCallbackForHighApi;
+
+ public void initView() {
+ topVvvv = (View) findViewById(R.id.top_vvvv);
+ webView = findViewById(R.id.webview);
+ show_top_v = findViewById(R.id.show_top_v);
+ showTopLy = findViewById(R.id.show_top_ly);
+ tvErrorMsg = findViewById(R.id.errormsg);
+ layoutError = findViewById(R.id.layoutError);
+ videoContainer = (FrameLayout) findViewById(R.id.videoContainer);
+ backIv = (ImageView) findViewById(R.id.back_iv);
+ progressBar = (ProgressBar) findViewById(R.id.progressbar);
+ WebSettings settings = webView.getSettings();
+ settings.setDomStorageEnabled(true);
+ settings.setAppCacheEnabled(true);
+ settings.setCacheMode(WebSettings.LOAD_DEFAULT);
+ settings.setJavaScriptEnabled(true);
+ settings.setLoadWithOverviewMode(true);
+ // 设置允许访问文件数据
+ settings.setAllowFileAccess(true);
+ settings.setAllowContentAccess(true);
+ settings.setDatabaseEnabled(true);
+ settings.setSavePassword(false);
+ settings.setSaveFormData(false);
+ settings.setUseWideViewPort(true);
+ settings.setBuiltInZoomControls(true);
+ settings.setPluginState(WebSettings.PluginState.ON);
+ settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
+ webView.setFocusable(true);
+ webView.setFocusableInTouchMode(true);
+ webView.getSettings().setSupportMultipleWindows(true);
+
+ settings.setSupportZoom(false);
+ webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
+// webView.setHorizontalScrollbarOverlay(true);
+ webView.setHorizontalScrollBarEnabled(true);
+ webView.requestFocus();
+// webView.setBackgroundColor(getColor(R.color.black));
+ settings.setJavaScriptCanOpenWindowsAutomatically(false);
+
+ // 设置在WebView内部是否允许通过file url加载的 Js代码读取其他的本地文件
+ // Android 4.1前默认允许,4.1后默认禁止
+ settings.setAllowFileAccessFromFileURLs(true);
+ // 设置WebView内部是否允许通过 file url 加载的 Javascript 可以访问其他的源(包括http、https等源)
+ // Android 4.1前默认允许,4.1后默认禁止
+ settings.setAllowUniversalAccessFromFileURLs(true);
+
+// settings.setBuiltInZoomControls(false); // 启用缩放功能
+// settings.setDisplayZoomControls(false); // 隐藏缩放控件
+
+
+ webView.setWebChromeClient(new WebChromeClient() {
+ @Override
+ public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
+
+ WebView newWebView = new WebView(WebViewActivity.this);
+ topVvvv.setVisibility(View.VISIBLE);
+ webView.addView(newWebView);
+ WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
+ transport.setWebView(newWebView);
+ resultMsg.sendToTarget();
+
+ newWebView.setWebViewClient(new WebViewClient() {
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
+// isAtGame = true;
+ progressBar.setVisibility(View.GONE);
+ webView.loadUrl(url);
+ return true;
+ }
+ });
+
+ // WebView newWebView = new WebView(view.getContext());
+// newWebView.setWebViewClient(new WebViewClient() {
+// @Override
+// public boolean shouldOverrideUrlLoading(WebView view, String url) {
+// Intent browserIntent = new Intent(WebViewActivity.this, WebViewActivity.class);
+// browserIntent.putExtra("url", url);
+// startActivity(browserIntent);
+// return true;
+// }
+// });
+// WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
+// transport.setWebView(newWebView);
+// resultMsg.sendToTarget();
+// return true;
+ return true;
+ }
+
+
+ // @TargetApi(Build.VERSION_CODES.LOLLIPOP)
+ @Override
+ public boolean onShowFileChooser(WebView webView, ValueCallback filePathCallback, FileChooserParams fileChooserParams) {
+ LogUtils.i("数据接口:onShowFileChooser");
+ mUploadCallbackForHighApi = filePathCallback;
+ Intent intent = fileChooserParams.createIntent();
+ intent.addCategory(Intent.CATEGORY_OPENABLE);
+ startActivityForResult(Intent.createChooser(intent, "File chooser"), REQUEST_CODE_FILE_CHOOSER);
+ return true;
+ }
+
+ // For 3.0+
+ protected void openFileChooser(ValueCallback uploadMsg, String acceptType) {
+ LogUtils.i("数据接口:openFileChooseracceptType");
+ openFilerChooser(uploadMsg);
+ }
+
+
+ private void openFilerChooser(ValueCallback uploadMsg) {
+ LogUtils.i("数据接口:openFileChooser");
+ mUploadCallbackForLowApi = uploadMsg;
+ startActivityForResult(Intent.createChooser(getFilerChooserIntent(), "File Chooser"), REQUEST_CODE_FILE_CHOOSER);
+ }
+
+
+
+ });
+ webView.setWebViewClient(new WebViewClient() {
+
+
+ @Override
+ public void onPageFinished(WebView view, String url) {
+ super.onPageFinished(view, url);
+ showTopLy.setVisibility(View.GONE);
+ progressBar.setVisibility(View.GONE);
+ topVvvv.setVisibility(View.VISIBLE);
+
+ }
+
+ @Override
+ public void onPageStarted(WebView view, String url, Bitmap favicon) {
+ super.onPageStarted(view, url, favicon);
+ progressBar.setVisibility(View.VISIBLE);
+ topVvvv.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
+ super.onReceivedError(view, request, error);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ int errorCode = error.getErrorCode();
+ String errorMessage = error.getDescription().toString();
+ String currentUrl = request.getUrl().toString();
+ LogUtils.d("onReceivedError2 url==" + url + " errorCode ==" + errorCode);
+ if ((errorCode == -2 || errorCode == -6) && currentUrl.contains(url)) {
+ onShowErrorView(errorMessage);
+ } else {
+ onShowNetView();
+ }
+ }
+ progressBar.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
+ super.onReceivedError(view, errorCode, description, failingUrl);
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+ LogUtils.d("onReceivedError2 url==" + failingUrl + " errorCode ==" + errorCode);
+ if ((errorCode == -2 || errorCode == -6) && failingUrl.contains(url)) {
+ onShowErrorView(description);
+ } else {
+ onShowNetView();
+ }
+ }
+ progressBar.setVisibility(View.GONE);
+
+ }
+
+
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
+
+ Uri uri;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ uri = request.getUrl();
+ } else {
+ uri = Uri.parse(request.toString());
+ }
+ String url1 = uri.toString();
+ LogUtils.d("url1111111111==" + url1);
+ if (url1.equals(url + "index") || url1.equals(url + "/index")) {
+ topVvvv.setVisibility(View.GONE);
+ } else {
+ progressBar.setVisibility(View.VISIBLE);
+ }
+
+ if (!(url1.startsWith("http") || url1.startsWith("https"))) {
+ try {
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(url1));
+ startActivity(intent);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+
+ if ((url1.equals(url + "index") || url1.equals(url + "/index")) && webView.canGoBack()) {
+ return false;
+ } else {
+ if (url1.contains(".apk")) { //下载
+ Toast.makeText(WebViewActivity.this, "下载开始,请稍后...", Toast.LENGTH_SHORT).show();
+// Constants.isUpdate = false;
+ new AppUpdater(WebViewActivity.this, url1).start();
+ return false;
+ }
+ //其它的该怎么处理就怎么处理
+ LogUtils.d("url1111111111==2" + url1);
+ webView.loadUrl(url1);
+ return true;
+ }
+
+ }
+ return false;
+ }
+
+
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url1) {
+ if (url1.equals(url + "index") || url1.equals(url + "/index")) {
+ topVvvv.setVisibility(View.GONE);
+ } else {
+ progressBar.setVisibility(View.VISIBLE);
+ }
+
+ if (!(url1.startsWith("http") || url1.startsWith("https"))) {
+ try {
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(url1));
+ startActivity(intent);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+
+ if ((url1.equals(url + "index") || url1.equals(url + "/index")) && webView.canGoBack()) {
+ return false;
+ } else {
+ if (url1.contains(".apk")) { //下载
+ new AppUpdater(WebViewActivity.this, url1).start();
+ return false;
+ }
+ //其它的该怎么处理就怎么处理
+ webView.loadUrl(url1);
+ return false;
+ }
+
+ }
+
+ return false;
+ }
+
+
+ });
+ webView.setOnGenericMotionListener(new View.OnGenericMotionListener() {
+ @Override
+ public boolean onGenericMotion(View view, MotionEvent motionEvent) {
+ return false;
+ }
+ });
+
+// webView.setOnTouchListener(new View.OnTouchListener() {
+// @Override
+// public boolean onTouch(View view, MotionEvent motionEvent) {
+// if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
+// webView.loadUrl("javascript:_IntervalResize(+\" + view + \",false)");
+// return true;
+// } else {
+// return false;
+// }
+// }
+// });
+
+// webView.onWindowFocusChanged(true);
+// webView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
+// @Override
+// public void onFocusChange(View view, boolean b) {
+// LogUtils.d("B==" + b);
+// view.invalidate();
+// }
+// });
+ if (url != null) {
+ webView.loadUrl(url);
+ }
+ }
+
+
+ @RequiresApi(api = Build.VERSION_CODES.Q)
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ switch (requestCode) {
+ case REQUEST_CODE_FILE_CHOOSER:
+ if (resultCode == RESULT_OK || resultCode == RESULT_CANCELED) {
+ afterFileChooseGoing(resultCode, data);
+ }
+ break;
+
+
+ }
+ }
+
+
+ /**
+ * onActivityResult方法
+ */
+
+ private void afterFileChooseGoing(int resultCode, Intent data) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ if (mUploadCallbackForHighApi == null) {
+ return;
+ }
+ mUploadCallbackForHighApi.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, data));
+ mUploadCallbackForHighApi = null;
+ } else {
+ if (mUploadCallbackForLowApi == null) {
+ return;
+ }
+ Uri result = data == null ? null : data.getData();
+ mUploadCallbackForLowApi.onReceiveValue(result);
+ mUploadCallbackForLowApi = null;
+ }
+ }
+
+ private Intent getFilerChooserIntent() {
+ Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
+ intent.addCategory(Intent.CATEGORY_OPENABLE);
+ return intent;
+ }
+
+
+ private static final int REQUEST_CODE_FILE_CHOOSER = 1;
+ private ValueCallback mUploadCallbackForLowApi;
+ private boolean isNetError = false;
+
+ public void onShowErrorView(String errorMsg) { //网络不可用的情况
+ topVvvv.setVisibility(View.VISIBLE);
+ webView.setVisibility(View.GONE);
+ layoutError.setVisibility(View.VISIBLE);
+ tvErrorMsg.setText(errorMsg);
+ showTopLy.setVisibility(View.GONE);
+ isNetError = true;
+
+ }
+
+ public void onShowNetView() {
+ topVvvv.setVisibility(View.VISIBLE);
+ webView.setVisibility(View.VISIBLE);
+ layoutError.setVisibility(View.GONE);
+ showTopLy.setVisibility(View.GONE);
+ isNetError = false;
+ }
+
+
+ @Override
+ public void onBackPressed() {
+ if (webView.canGoBack()) {//当webview有多级能返回的时候
+ onShowNetView();
+ webView.goBack();
+ } else {//不能返回了
+ WebViewActivity.this.finish();
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ if (webView != null) {
+ //加载null内容
+ // webView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
+ //清除历史记录
+ // webView.clearHistory();
+ //移除WebView
+// ((ViewGroup) webView.getParent()).removeView(webView);
+ //销毁VebView
+ webView.destroy();
+ }
+ super.onDestroy();
+ }
+}
diff --git a/Dmcslot/src/main/java/com/web/dmcslot/WithDrawListInfo.java b/base_Fachai8hk/src/main/java/com/web/base/WithDrawListInfo.java
similarity index 98%
rename from Dmcslot/src/main/java/com/web/dmcslot/WithDrawListInfo.java
rename to base_Fachai8hk/src/main/java/com/web/base/WithDrawListInfo.java
index 3471d52..b8bd76e 100644
--- a/Dmcslot/src/main/java/com/web/dmcslot/WithDrawListInfo.java
+++ b/base_Fachai8hk/src/main/java/com/web/base/WithDrawListInfo.java
@@ -1,4 +1,4 @@
-package com.web.dmcslot;
+package com.web.base;
import java.io.Serializable;
import java.util.List;
diff --git a/base_Fachai8hk/src/main/res/drawable-anydpi/ic_action_back.xml b/base_Fachai8hk/src/main/res/drawable-anydpi/ic_action_back.xml
new file mode 100644
index 0000000..013ab07
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/drawable-anydpi/ic_action_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/base_Fachai8hk/src/main/res/drawable-hdpi/ic_action_back.png b/base_Fachai8hk/src/main/res/drawable-hdpi/ic_action_back.png
new file mode 100644
index 0000000..1560c04
Binary files /dev/null and b/base_Fachai8hk/src/main/res/drawable-hdpi/ic_action_back.png differ
diff --git a/base_Fachai8hk/src/main/res/drawable-mdpi/ic_action_back.png b/base_Fachai8hk/src/main/res/drawable-mdpi/ic_action_back.png
new file mode 100644
index 0000000..d5841d2
Binary files /dev/null and b/base_Fachai8hk/src/main/res/drawable-mdpi/ic_action_back.png differ
diff --git a/base_Fachai8hk/src/main/res/drawable-v24/ic_launcher_foreground.xml b/base_Fachai8hk/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/drawable-xhdpi/ic_action_back.png b/base_Fachai8hk/src/main/res/drawable-xhdpi/ic_action_back.png
new file mode 100644
index 0000000..5c14e41
Binary files /dev/null and b/base_Fachai8hk/src/main/res/drawable-xhdpi/ic_action_back.png differ
diff --git a/base_Fachai8hk/src/main/res/drawable-xxhdpi/ic_action_back.png b/base_Fachai8hk/src/main/res/drawable-xxhdpi/ic_action_back.png
new file mode 100644
index 0000000..0516d08
Binary files /dev/null and b/base_Fachai8hk/src/main/res/drawable-xxhdpi/ic_action_back.png differ
diff --git a/base_Fachai8hk/src/main/res/drawable/ic_launcher_background.xml b/base_Fachai8hk/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/base_Fachai8hk/src/main/res/drawable/input_bg.xml b/base_Fachai8hk/src/main/res/drawable/input_bg.xml
new file mode 100644
index 0000000..4e895aa
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/drawable/input_bg.xml
@@ -0,0 +1,20 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/base_Fachai8hk/src/main/res/drawable/pass_word_bg.xml b/base_Fachai8hk/src/main/res/drawable/pass_word_bg.xml
new file mode 100644
index 0000000..2724e60
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/drawable/pass_word_bg.xml
@@ -0,0 +1,28 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/base_Fachai8hk/src/main/res/drawable/pass_word_bg1.xml b/base_Fachai8hk/src/main/res/drawable/pass_word_bg1.xml
new file mode 100644
index 0000000..83b8c14
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/drawable/pass_word_bg1.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/drawable/pass_word_bg2.xml b/base_Fachai8hk/src/main/res/drawable/pass_word_bg2.xml
new file mode 100644
index 0000000..916d99c
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/drawable/pass_word_bg2.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/drawable/shape_btn_bg.xml b/base_Fachai8hk/src/main/res/drawable/shape_btn_bg.xml
new file mode 100644
index 0000000..af87a0d
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/drawable/shape_btn_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/drawable/shape_dialog_bg2.xml b/base_Fachai8hk/src/main/res/drawable/shape_dialog_bg2.xml
new file mode 100644
index 0000000..7837a42
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/drawable/shape_dialog_bg2.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/drawable/shape_dialog_bg3.xml b/base_Fachai8hk/src/main/res/drawable/shape_dialog_bg3.xml
new file mode 100644
index 0000000..ca0a18d
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/drawable/shape_dialog_bg3.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/drawable/shape_dialog_bg_new.xml b/base_Fachai8hk/src/main/res/drawable/shape_dialog_bg_new.xml
new file mode 100644
index 0000000..e96d4e0
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/drawable/shape_dialog_bg_new.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/drawable/shape_notify_typebg.xml b/base_Fachai8hk/src/main/res/drawable/shape_notify_typebg.xml
new file mode 100644
index 0000000..3da849f
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/drawable/shape_notify_typebg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Dmcslot/src/main/res/layout/activity_main.xml b/base_Fachai8hk/src/main/res/layout/activity_main.xml
similarity index 100%
rename from Dmcslot/src/main/res/layout/activity_main.xml
rename to base_Fachai8hk/src/main/res/layout/activity_main.xml
diff --git a/base_Fachai8hk/src/main/res/layout/activity_main2.xml b/base_Fachai8hk/src/main/res/layout/activity_main2.xml
new file mode 100644
index 0000000..f5e09aa
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/layout/activity_main2.xml
@@ -0,0 +1,423 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Dmcslot/src/main/res/layout/activity_main3.xml b/base_Fachai8hk/src/main/res/layout/activity_main3.xml
similarity index 97%
rename from Dmcslot/src/main/res/layout/activity_main3.xml
rename to base_Fachai8hk/src/main/res/layout/activity_main3.xml
index 0da4207..6385b31 100644
--- a/Dmcslot/src/main/res/layout/activity_main3.xml
+++ b/base_Fachai8hk/src/main/res/layout/activity_main3.xml
@@ -7,7 +7,7 @@
android:layout_height="match_parent"
android:orientation="vertical">
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Dmcslot/src/main/res/layout/activity_start.xml b/base_Fachai8hk/src/main/res/layout/activity_start.xml
similarity index 100%
rename from Dmcslot/src/main/res/layout/activity_start.xml
rename to base_Fachai8hk/src/main/res/layout/activity_start.xml
diff --git a/Dmcslot/src/main/res/layout/activity_webview.xml b/base_Fachai8hk/src/main/res/layout/activity_webview.xml
similarity index 97%
rename from Dmcslot/src/main/res/layout/activity_webview.xml
rename to base_Fachai8hk/src/main/res/layout/activity_webview.xml
index f52274e..b229360 100644
--- a/Dmcslot/src/main/res/layout/activity_webview.xml
+++ b/base_Fachai8hk/src/main/res/layout/activity_webview.xml
@@ -8,7 +8,7 @@
android:keepScreenOn="true"
android:orientation="vertical">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Dmcslot/src/main/res/layout/item_withdraw_records.xml b/base_Fachai8hk/src/main/res/layout/item_withdraw_records.xml
similarity index 100%
rename from Dmcslot/src/main/res/layout/item_withdraw_records.xml
rename to base_Fachai8hk/src/main/res/layout/item_withdraw_records.xml
diff --git a/base_Fachai8hk/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/base_Fachai8hk/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/base_Fachai8hk/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/mipmap-hdpi/ic_empty.png b/base_Fachai8hk/src/main/res/mipmap-hdpi/ic_empty.png
new file mode 100644
index 0000000..72473d6
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-hdpi/ic_empty.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-hdpi/ic_pull_down.png b/base_Fachai8hk/src/main/res/mipmap-hdpi/ic_pull_down.png
new file mode 100644
index 0000000..7dc0ec3
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-hdpi/ic_pull_down.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_close.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_close.png
new file mode 100644
index 0000000..c0b0127
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_close.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_email.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_email.png
new file mode 100644
index 0000000..9fc3a42
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_email.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_email1.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_email1.png
new file mode 100644
index 0000000..9fc3a42
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_email1.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_facebook.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_facebook.png
new file mode 100644
index 0000000..de378dc
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_facebook.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_hometo.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_hometo.png
new file mode 100644
index 0000000..4e93043
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_hometo.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_link.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_link.png
new file mode 100644
index 0000000..2f98612
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_link.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_menu.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_menu.png
new file mode 100644
index 0000000..2b55ec5
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_menu.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notify_email.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notify_email.png
new file mode 100644
index 0000000..5a2df8e
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notify_email.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notify_normal.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notify_normal.png
new file mode 100644
index 0000000..f056d32
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notify_normal.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notify_shangla.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notify_shangla.png
new file mode 100644
index 0000000..eb1d3e9
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notify_shangla.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notify_xiala.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notify_xiala.png
new file mode 100644
index 0000000..7999f63
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notify_xiala.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notifylogo.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notifylogo.png
new file mode 100644
index 0000000..b975e45
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_notifylogo.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_shousuo.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_shousuo.png
new file mode 100644
index 0000000..16b38be
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_shousuo.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_tel.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_tel.png
new file mode 100644
index 0000000..df82270
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_tel.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_whatsapp.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_whatsapp.png
new file mode 100644
index 0000000..7ca41ed
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_whatsapp.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_zhangkai.png b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_zhangkai.png
new file mode 100644
index 0000000..bdc84b3
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xhdpi/ic_zhangkai.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xxhdpi/app_logo.png b/base_Fachai8hk/src/main/res/mipmap-xxhdpi/app_logo.png
new file mode 100644
index 0000000..1718e20
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xxhdpi/app_logo.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xxhdpi/look_img.png b/base_Fachai8hk/src/main/res/mipmap-xxhdpi/look_img.png
new file mode 100644
index 0000000..bb76ba1
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xxhdpi/look_img.png differ
diff --git a/base_Fachai8hk/src/main/res/mipmap-xxhdpi/share_img.png b/base_Fachai8hk/src/main/res/mipmap-xxhdpi/share_img.png
new file mode 100644
index 0000000..203b4b7
Binary files /dev/null and b/base_Fachai8hk/src/main/res/mipmap-xxhdpi/share_img.png differ
diff --git a/base_Fachai8hk/src/main/res/values-en/strings.xml b/base_Fachai8hk/src/main/res/values-en/strings.xml
new file mode 100644
index 0000000..95006cd
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/values-en/strings.xml
@@ -0,0 +1,53 @@
+
+ Please Set Your Password
+ Cancel
+ Sure
+ New Version Update
+ Next Update
+ Update Immediately
+ Click to close notification
+ Click to re-download
+ Download failed
+ Click to install
+ Download completed
+ Downloading...
+ Version update
+ Downloading game
+ Getting download data...
+ Version update
+ Downloading game
+ Need to turn on mobile phone notification permission
+ Exit
+ Setting
+ Tip
+ Please enter the invitation code
+ My invitation code:
+ Superior invitation code:
+ Total number of invites:
+ App download link:
+ Share
+ Check Invitation Records
+ Invitation Records
+ Total number of invitees: %d
+ No Data
+ Withdrawal Record
+ Withdrawal Application
+ Edit Bank Card Information
+ 60
+ Name:
+ Please enter the bank card name
+ Bank card account:
+ Please enter the bank card account
+ Country:
+ Please select a country
+ Bank Name:
+ Please select a bank name
+ Note: Please enter the country code before selecting the bank name!
+ Balance: %s
+ Total Earnings: %s
+ Amount: %s
+ Please enter the withdrawal amount
+ Withdrawal application has been submitted
+ No additional data available for now
+ NOTIFICATIONS
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/values-night/themes.xml b/base_Fachai8hk/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..4bf7105
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/values-night/themes.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/values/colors.xml b/base_Fachai8hk/src/main/res/values/colors.xml
new file mode 100644
index 0000000..bd299ee
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/values/colors.xml
@@ -0,0 +1,22 @@
+
+
+ #FFFFFF
+ #FFFFFF
+ #FFFFFF
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+ #EF4723
+ #FFFFFFFF
+
+ #2C2C2E
+ #FFA722
+ #434343
+ #BCBCBC
+
+ #ACDFEE
+ #BDDDB7
+ #C3B5D0
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/values/strings.xml b/base_Fachai8hk/src/main/res/values/strings.xml
new file mode 100644
index 0000000..d609113
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/values/strings.xml
@@ -0,0 +1,75 @@
+
+ 请输入6位密码
+ 取消
+ 确定
+ 版本更新
+ 下次更新
+ 立即更新
+ 点击关闭通知
+ 点击重新下载
+ 下载失败
+ 点击安装
+ 下载完成
+ 正在下载…
+ 版本更新
+ 下载游戏中
+ 版本更新
+ 下载游戏中
+ 正在获取下载数据…
+ 需要打开手机通知权限
+ 退出
+ 设置
+ 提示
+ 请输入邀请码
+ 我的邀请码:
+ 上级邀请码:
+ 总邀请人数:
+ 邀请您下载:
+ 分享
+ 查看邀请记录
+ 邀请记录
+ 总邀请人数: %d
+ 暂无数据
+ 提现记录
+ 提现申请
+ 编辑银行卡信息
+ 86
+ 持卡人姓名:
+ 请输入持卡人姓名
+ 国家地区:
+ 请选择国家地区
+ 开户行名称:
+ 请选择开户行名称
+ 银行户口:
+ 请输入银行卡户口
+ (注:请先输入国家区号再选择开户行名称!)
+ 余额: %s
+ 总收益: %s
+ 金额: %s
+ 请输入提现金额
+ 提现申请已提交
+ 暂无更多数据
+ 通知
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/values/themes.xml b/base_Fachai8hk/src/main/res/values/themes.xml
new file mode 100644
index 0000000..e47899f
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/values/themes.xml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/xml/app_updater_paths.xml b/base_Fachai8hk/src/main/res/xml/app_updater_paths.xml
new file mode 100644
index 0000000..1254450
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/xml/app_updater_paths.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/xml/network_security_config.xml b/base_Fachai8hk/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..dca93c0
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/main/res/xml/provider_paths.xml b/base_Fachai8hk/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..c9a897a
--- /dev/null
+++ b/base_Fachai8hk/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/base_Fachai8hk/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java b/base_Fachai8hk/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
new file mode 100644
index 0000000..3259554
--- /dev/null
+++ b/base_Fachai8hk/src/test/java/Tptogiar/calculcator/ExampleUnitTest.java
@@ -0,0 +1,35 @@
+package Tptogiar.calculcator;
+
+import org.junit.Test;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+
+ @Test
+ public void TestPattern(){
+//
+ Pattern compile = Pattern.compile( "^(\\-|\\+)?\\d+(\\.\\d+)?$");
+ String a="+45.5";
+ boolean matches = compile.matcher(a).matches();
+ System.out.println(matches);
+ String result = compile.matcher(a).replaceAll("");
+ System.out.println(result);
+
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/base_bk88/.gitignore b/base_bk88/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/base_bk88/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/base_bk88/build.gradle b/base_bk88/build.gradle
new file mode 100644
index 0000000..0230086
--- /dev/null
+++ b/base_bk88/build.gradle
@@ -0,0 +1,53 @@
+plugins {
+ id 'com.android.library'
+}
+
+android {
+ compileSdkVersion 31
+ defaultConfig {
+ minSdkVersion 24
+ targetSdkVersion 31
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+
+ api 'androidx.appcompat:appcompat:1.1.0'
+ api 'com.google.android.material:material:1.1.0'
+ api 'androidx.constraintlayout:constraintlayout:1.1.3'
+ testApi 'junit:junit:4.+'
+ androidTestApi 'androidx.test.ext:junit:1.1.1'
+ androidTestApi 'androidx.test.espresso:espresso-core:3.2.0'
+ api files('libs\\tbs_sdk_thirdapp_v4.3.0.386_44286_20230210.jar')
+
+ // okhttp相关库
+ api 'com.squareup.okhttp3:okhttp:4.9.3'
+
+ // JSON解析库
+ api 'com.google.code.gson:gson:2.9.0'
+ api 'com.alibaba:fastjson:1.1.71.android'
+ api 'com.squareup.retrofit2:retrofit:2.5.0'
+ api 'com.squareup.retrofit2:converter-scalars:2.3.0'
+ api 'com.squareup.retrofit2:converter-gson:2.4.0'
+ api 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
+ api 'io.reactivex.rxjava2:rxjava:2.1.16'
+ api 'io.reactivex.rxjava2:rxandroid:2.0.2'
+ api 'com.squareup.okhttp3:logging-interceptor:3.10.0'
+ api 'com.github.Justson.AgentWeb:agentweb-core:v5.0.6-androidx' // (必选)
+ api 'com.github.Justson.AgentWeb:agentweb-filechooser:v5.0.6-androidx' // (可选)
+ api 'com.github.Justson:Downloader:v5.0.4-androidx'
+ //implementation 'com.tencent.tbs:tbssdk:44286'
+ api("com.github.bumptech.glide:glide:4.13.1")
+ api 'com.github.jenly1314.AppUpdater:app-updater:1.1.3'
+
+ // sdk 33
+ api platform('com.google.firebase:firebase-bom:32.7.0')
+ // Firebase Cloud Messaging
+ api("com.google.firebase:firebase-messaging")
+}
\ No newline at end of file
diff --git a/base_bk88/libs/tbs_sdk_thirdapp_v4.3.0.386_44286_20230210.jar b/base_bk88/libs/tbs_sdk_thirdapp_v4.3.0.386_44286_20230210.jar
new file mode 100644
index 0000000..465ea1b
Binary files /dev/null and b/base_bk88/libs/tbs_sdk_thirdapp_v4.3.0.386_44286_20230210.jar differ
diff --git a/base_bk88/proguard-rules.pro b/base_bk88/proguard-rules.pro
new file mode 100644
index 0000000..107b7ee
--- /dev/null
+++ b/base_bk88/proguard-rules.pro
@@ -0,0 +1,32 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontwarn dalvik.**
+-dontwarn com.tencent.smtt.**
+
+-keep class com.tencent.smtt.** {
+ *;
+}
+
+-keep class com.tencent.tbs.** {
+ *;
+}
\ No newline at end of file
diff --git a/base_bk88/release/output-metadata.json b/base_bk88/release/output-metadata.json
new file mode 100644
index 0000000..e48e90a
--- /dev/null
+++ b/base_bk88/release/output-metadata.json
@@ -0,0 +1,18 @@
+{
+ "version": 2,
+ "artifactType": {
+ "type": "APK",
+ "kind": "Directory"
+ },
+ "applicationId": "com.web.testapp",
+ "variantName": "processReleaseResources",
+ "elements": [
+ {
+ "type": "SINGLE",
+ "filters": [],
+ "versionCode": 107,
+ "versionName": "v1.0.7",
+ "outputFile": "app-release.apk"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/base_bk88/release/testweb.apk b/base_bk88/release/testweb.apk
new file mode 100644
index 0000000..e33b812
Binary files /dev/null and b/base_bk88/release/testweb.apk differ
diff --git a/base_bk88/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java b/base_bk88/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..44b9f39
--- /dev/null
+++ b/base_bk88/src/androidTest/java/Tptogiar/calculcator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package Tptogiar.calculcator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("Tptogiar.calculcator", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/base_bk88/src/main/AndroidManifest.xml b/base_bk88/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..df1c588
--- /dev/null
+++ b/base_bk88/src/main/AndroidManifest.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/base_bk88/src/main/java/com/web/base/ActionBankInfoDialog.java b/base_bk88/src/main/java/com/web/base/ActionBankInfoDialog.java
new file mode 100644
index 0000000..de6fa06
--- /dev/null
+++ b/base_bk88/src/main/java/com/web/base/ActionBankInfoDialog.java
@@ -0,0 +1,205 @@
+package com.web.base;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+
+/**
+ * 填写银行卡信息
+ */
+public class ActionBankInfoDialog extends Dialog {
+ private final Context context;
+ private TextView tvBankNameCountry;
+ private TextView tvbankName;
+ private EditText bankInfoName;
+ private EditText bankInfoCode;
+ private TextView cancelTv;
+ private TextView sumbitTv;
+ private String myInviteCode;
+ private BankInfo itemSelector;
+ private RecyclerView recyclerView;
+ private RecyclerView recyclerViewCountry;
+ private List listdata = new ArrayList<>();
+ private List listcountry = new ArrayList<>();
+ private MyBankListAdapter adapter;
+ private MyListAdapter listCountryAdapter;
+
+ public ActionBankInfoDialog(Context context, String myInviteCode) {
+ super(context, R.style.MaterialDesignDialog);
+ this.context = context;
+ this.myInviteCode = myInviteCode;
+ }
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.dialog_action_bankinfo);
+ findViewById(R.id.ic_dialog_close).setOnClickListener(view -> dismiss());
+ tvBankNameCountry = findViewById(R.id.inputcountry_tv);
+ tvbankName = findViewById(R.id.inputbankname_tv);
+ bankInfoName = findViewById(R.id.inputname_tv);
+ bankInfoCode = findViewById(R.id.inputcode_tv);
+ getBankInfoList();
+ sumbitTv = findViewById(R.id.sumbit_tv);
+ recyclerViewCountry = findViewById(R.id.recycler_bankcountry);
+ recyclerViewCountry.setLayoutManager(new LinearLayoutManager(context));
+ listCountryAdapter = new MyListAdapter(listcountry);
+ recyclerViewCountry.setAdapter(listCountryAdapter);
+ listCountryAdapter.setOnItemClick(new MyListAdapter.onItemClickPostionListener() {
+ @Override
+ public void item(int position) {
+ tvBankNameCountry.setText(listcountry.get(position));
+ recyclerViewCountry.setVisibility(View.GONE);
+ }
+ });
+ recyclerView = findViewById(R.id.recycler_bankname);
+ recyclerView.setLayoutManager(new LinearLayoutManager(context));
+ adapter = new MyBankListAdapter(listdata);
+ recyclerView.setAdapter(adapter);
+ adapter.setOnItemClick(position -> {
+ itemSelector = listdata.get(position);
+ tvbankName.setText(itemSelector.getBankName());
+ recyclerView.setVisibility(View.GONE);
+ });
+
+ tvbankName.setText(MainActivity.getString(context, "bankname", ""));
+ tvBankNameCountry.setText(MainActivity.getString(context, "bankcode", context.getString(R.string.app_bankinfo_countrycode)));
+ bankInfoName.setText(MainActivity.getString(context, "name", ""));
+
+ bankInfoCode.setText(MainActivity.getString(context, "bankno", ""));
+ tvBankNameCountry.setOnClickListener(view -> {
+ recyclerView.setVisibility(View.GONE);
+ if (recyclerViewCountry.getVisibility() == View.VISIBLE) {
+ recyclerViewCountry.setVisibility(View.GONE);
+ return;
+ }
+ recyclerViewCountry.setVisibility(View.VISIBLE);
+ });
+ tvbankName.setOnClickListener(view -> {
+ if (TextUtils.isEmpty(tvBankNameCountry.getText().toString())) {
+ Toast.makeText(context, context.getString(R.string.app_bankinfo_bankcountry_hint), Toast.LENGTH_SHORT).show();
+ return;
+ }
+ recyclerViewCountry.setVisibility(View.GONE);
+ if (recyclerView.getVisibility() == View.VISIBLE) {
+ recyclerView.setVisibility(View.GONE);
+ return;
+ }
+ recyclerView.setVisibility(View.VISIBLE);
+ });
+
+ sumbitTv.setOnClickListener(view -> {
+ if (TextUtils.isEmpty(tvBankNameCountry.getText().toString())) {
+ Toast.makeText(context, context.getString(R.string.app_bankinfo_bankname_hint), Toast.LENGTH_SHORT).show();
+ return;
+ }
+ if (TextUtils.isEmpty(bankInfoName.getText().toString())) {
+ Toast.makeText(context, context.getString(R.string.app_bankinfo_name_hint), Toast.LENGTH_SHORT).show();
+ return;
+ }
+ if (TextUtils.isEmpty(bankInfoCode.getText().toString())) {
+ Toast.makeText(context, context.getString(R.string.app_bankinfo_code_hint), Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ toSubmit(tvbankName.getText().toString(), bankInfoName.getText().toString(), bankInfoCode.getText().toString());
+
+ });
+ setCanceledOnTouchOutside(false);
+ Window window = getWindow();
+ WindowManager.LayoutParams wlp = window.getAttributes();
+ wlp.gravity = Gravity.CENTER;
+ wlp.width = WindowManager.LayoutParams.WRAP_CONTENT;
+ wlp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+
+ window.setAttributes(wlp);
+ }
+
+ public void getBankInfoList() {
+ Api.getInstance().getBankInfoList()
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new BaseObserver>>>() {
+ @Override
+ public void onSuccess(Result