新增了3个项目

This commit is contained in:
xuhuixiang
2025-03-08 17:34:26 +08:00
parent 0b98b1bc21
commit 16e6cb3821
134 changed files with 3720 additions and 32 deletions

2
RichSpin96/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/build
/release

48
RichSpin96/build.gradle Normal file
View File

@@ -0,0 +1,48 @@
plugins {
id 'com.android.application'
id 'com.google.gms.google-services'
}
android {
compileSdkVersion 31
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.web.RichSpin96"
minSdkVersion 24
targetSdkVersion 31
versionCode 107
versionName "v1.0.7"
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 {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation project(path: ':base')
}

View File

@@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "360261673317",
"project_id": "richspin96",
"storage_bucket": "richspin96.firebasestorage.app"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:360261673317:android:852b67f273cf2ff43c018c",
"android_client_info": {
"package_name": "com.web.RichSpin96"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyCAb2ES7o7VPmJZhLDsIwHlSvrq87c6pQg"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

BIN
RichSpin96/ppn.jks Normal file

Binary file not shown.

32
RichSpin96/proguard-rules.pro vendored Normal file
View File

@@ -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.** {
*;
}

View File

@@ -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 <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@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());
}
}

View File

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.web.RichSpin96">
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera2"
android:required="false" />
<uses-permission android:name="android.permission.READ_CONTACTS" /> <!-- 获取通讯录-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!-- 多媒体相关 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 8.0+系统需要-->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!--推送权限-->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<!-- <uses-permission android:name="android.permission.CAPTURE_SECURE_VIDEO_OUTPUT" />-->
<!-- <uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />-->
<!-- <uses-permission android:name="android.permission.RECORD_AUDIO" />-->
<!-- <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />-->
<!-- <uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />-->
<!-- <uses-feature android:name="android.hardware.camera.autofocus" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera.front" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera.level.full" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera.capability.raw" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera.any" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.microphone" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera2" android:required="true" />-->
<queries>
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
</queries>
<application
android:name=".WebApplication"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/app_logo1"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/app_logo1"
android:supportsRtl="true"
android:theme="@style/Theme.AppTheme"
android:usesCleartextTraffic="true">
<activity
android:name=".MainActivity2"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="true"
android:hardwareAccelerated="true"
android:theme="@style/AppThemeStart">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</activity>
<service
android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService"
android:label="dexopt"
android:process=":dexopt" />
<!-- android:directBootAware="true" 为应用启用消息处理直接启动模式-->
<service
android:name=".MyFirebaseMessageingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<!-- Set custom default icon. This is used when no icon is set for incoming notification messages.
See README(https://goo.gl/l4GJaQ) for more. 设置推送默认图标 和颜色-->
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@mipmap/app_logo" />
<!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
notification message. See README(https://goo.gl/6BKBk7) for more. -->
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/notify_color" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/app_name" />
<!-- 还可设置推送渠道 -->
<!-- <meta-data-->
<!-- android:name="com.google.firebase.messaging.default_notification_channel_id"-->
<!-- android:value="@string/default_notification_channel_id" />-->
</application>
</manifest>

View File

@@ -0,0 +1,56 @@
package com.web.RichSpin96;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
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.MainActivity;
public class MainActivity2 extends com.web.base.MainActivity2 {
@Override
protected void onCreate(Bundle savedInstanceState) {
userId = 123;
saveInt(MainActivity2.this,"user_code",userId);
saveInt(MainActivity2.this,"version_code",getVersion());
MainActivity.saveString(this, "base_url","https://richspin.net/");
//网页的底部NavigationBar颜色
MainActivity.saveString(this, "style_color", "#202020");
//页面的大背景颜色
MainActivity.saveString(this, "windows_color", "#212121");
//任务栏的文字颜色 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(task -> {
String msg = "Subscribed";
if (!task.isSuccessful()) {
msg = "Subscribe failed";
}
});
}
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;
}
}
}

View File

@@ -0,0 +1,171 @@
package com.web.RichSpin96;
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<String, String> 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);
// 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, com.web.base.MainActivity2.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);
// 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(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_logo1)
.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_logo1)
.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, MainActivity2.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_logo1)
.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_logo1)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
.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();
// }
}

View File

@@ -0,0 +1,37 @@
package com.web.RichSpin96;
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);
}
}

View File

@@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="#333333"
android:alpha="0.8">
<path
android:fillColor="@android:color/white"
android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 B

View File

@@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="270"
android:startColor="#212121"
android:endColor="#202020"/>
</shape>

View File

@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/white">
<item android:id="@android:id/mask">
<shape>
<solid android:color="@android:color/transparent" />
<corners android:radius="23dp" />
</shape>
</item>
<!-- 默认显⽰效果-->
<item>
<shape android:shape="rectangle">
<solid android:color="@color/dialog_input_bg"/>
<corners
android:radius="3dp" />
</shape>
</item>
</ripple>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:color="@color/white"
tools:ignore="NewApi">
<item android:id="@android:id/mask"
tools:ignore="NewApi">
<shape>
<solid android:color="@android:color/transparent" />
<corners android:radius="5dp" />
</shape>
</item>
<!-- 默认显⽰效果-->
<item>
<shape android:shape="rectangle">
<gradient
android:angle="180"
android:startColor="@android:color/transparent"
android:endColor="@android:color/transparent"
android:type="linear"
android:useLevel="true" />
<stroke android:width="1dp" android:color="#333333"/>
<corners
android:radius="5dp" />
</shape>
</item>
</ripple>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
>
<shape
android:shape="ring"
android:innerRadiusRatio="3"
android:thicknessRatio="8"
android:useLevel="false"
>
<gradient
android:type="sweep"
android:useLevel="false"
android:startColor="#ED9121"
android:centerColor="#88ED9121"
android:endColor="#00ED9121"
android:centerY="0.50" />
</shape>
</animated-rotate>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
>
<shape
android:shape="ring"
android:innerRadiusRatio="3"
android:thicknessRatio="8"
android:useLevel="false"
>
<gradient
android:type="sweep"
android:useLevel="false"
android:startColor="#000000"
android:centerColor="#888888"
android:endColor="#FFFFFF"
android:centerY="0.50" />
</shape>
</animated-rotate>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="22dp" />
<solid android:color="@color/jisuanqi" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:topRightRadius="12dp"
android:topLeftRadius="12dp"/>
<solid android:color="@color/dialog_bg" />
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="12dp" />
<solid android:color="@color/dialog_bg" />
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="20dp" />
<solid android:color="@color/white" />
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 779 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

View File

@@ -0,0 +1,52 @@
<resources>
<string name="app_name">RichSpin96</string>
<string name="qsrlwmm_txt">Please Set Your Password</string>
<string name="cancel_txt">Cancel</string>
<string name="sure_txt">Sure</string>
<string name="banbengengxin_txt">New Version Update</string>
<string name="xiacigengxin_txt">Next Update</string>
<string name="lijigengxin_txt">Update Immediately</string>
<string name="app_updater_error_notification_content">Click to close notification</string>
<string name="app_updater_error_notification_content_re_download">Click to re-download</string>
<string name="app_updater_error_notification_title">Download failed</string>
<string name="app_updater_finish_notification_content">Click to install</string>
<string name="app_updater_finish_notification_title">Download completed</string>
<string name="app_updater_progress_notification_content">Downloading...</string>
<string name="app_updater_progress_notification_title">Version update</string>
<string name="app_updater_progress_notification_title_2">Downloading game</string>
<string name="app_updater_start_notification_content">Getting download data...</string>
<string name="app_updater_start_notification_title">Version update</string>
<string name="app_updater_start_notification_title_2">Downloading game</string>
<string name="notification_title_txt">Need to turn on mobile phone notification permission</string>
<string name="notification_cancel_txt">Exit</string>
<string name="notification_setting_txt">Setting</string>
<string name="app_tishi">Tip</string>
<string name="app_hint">Please enter the invitation code</string>
<string name="app_sharetitle">My invitation code:</string>
<string name="app_sharetitle2">Superior invitation code:</string>
<string name="app_totalinvite">Total number of invites:</string>
<string name="app_sharecontent">App download link:</string>
<string name="app_share">Share</string>
<string name="app_checklist">Check Invitation Records</string>
<string name="app_invitetitle">Invitation Records</string>
<string name="app_checklist_number">Total number of invitees: %d</string>
<string name="app_nodata">No Data</string>
<string name="app_withdrawtitle">Withdrawal Record</string>
<string name="app_withdrawapply_title">Withdrawal Application</string>
<string name="app_bankinfo_title">Edit Bank Card Information</string>
<string name="app_bankinfo_countrycode">60</string>
<string name="app_bankinfo_name">Name:</string>
<string name="app_bankinfo_name_hint">Please enter the bank card name</string>
<string name="app_bankinfo_code">Bank card account:</string>
<string name="app_bankinfo_code_hint">Please enter the bank card account</string>
<string name="app_bankinfo_bankcountry">Country:</string>
<string name="app_bankinfo_bankcountry_hint">Please select a country</string>
<string name="app_bankinfo_bankname">Bank Name:</string>
<string name="app_bankinfo_bankname_hint">Please select a bank name</string>
<string name="app_bankinfo_bankinfo_tips">Note: Please enter the country code before selecting the bank name!</string>
<string name="app_balance">Balance: %s</string>
<string name="app_totalearning">Total Earnings: %s</string>
<string name="app_withdraw_amount">Amount: %s</string>
<string name="app_withdraw_apply_hint">Please enter the withdrawal amount</string>
<string name="app_toastapply">Withdrawal application has been submitted</string>
</resources>

View File

@@ -0,0 +1,70 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Calculcator" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<style name="Theme.Calculcator1" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<declare-styleable name="CircleImageView">
<attr name="ease_border_color" format="color" />
<attr name="ease_border_width" format="dimension" />
<attr name="ease_press_alpha" format="integer" />
<attr name="ease_press_color" format="color" />
<attr name="ease_radius" format="dimension" />
<attr name="es_shape_type" format="enum">
<enum name="none" value="0" />
<enum name="round" value="1" />
<enum name="rectangle" value="2" />
</attr>
</declare-styleable>
<!-- 注意当前AppTheme主题在values-v23中单独重复维护。原因是Android 6以下系统不支持设置
系统状态栏颜色如果按照设计状态栏使用素色则在android6以下手机上就看不清系统状态栏文字了
因为系统文字是白色。在values-v23表示当Android 23即android 6及以上版本将自动使用该目录
下的主题(即 colorPrimaryDark 使用素色从而跟标题栏颜色保持一致实现沉浸式ui效果-->
<style name="AppThemeStart" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">false</item>
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="colorPrimary">@color/white</item>
<item name="colorPrimaryDark">@color/white</item>
<item name="colorAccent">@color/white</item>
<item name="windowActionBar">false</item>
<!-- 隐藏Activity窗口的Title标题栏 -->
<item name="windowNoTitle">true</item>
<!-- <item name="android:windowFullscreen">true</item>-->
<!-- <item name="android:windowBackground">@drawable/splah_bg</item>-->
<item name="android:navigationBarColor">@color/white</item>
<!-- <item name="android:windowBackground">@mipmap/big_bg</item>-->
<item name="android:forceDarkAllowed" tools:ignore="NewApi">false</item>
<item name="android:windowBackground">@drawable/big_bg</item>
</style>
</resources>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFFFFF</color>
<color name="purple_500">#FFFFFF</color>
<color name="purple_700">#FFFFFF</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="jisuanqi">#EF4723</color>
<color name="notify_color">#FFFFFFFF</color>
<color name="dialog_bg">#2C2C2E</color>
<color name="dialog_textcolor">#FFA722</color>
<color name="dialog_input_bg">#434343</color>
<color name="dialog_dark">#BCBCBC</color>
</resources>

View File

@@ -0,0 +1,74 @@
<resources>
<string name="app_name">RichSpin96</string>
<string name="qsrlwmm_txt">请输入6位密码</string>
<string name="cancel_txt">取消</string>
<string name="sure_txt">确定</string>
<string name="banbengengxin_txt">版本更新</string>
<string name="xiacigengxin_txt">下次更新</string>
<string name="lijigengxin_txt">立即更新</string>
<string name="app_updater_error_notification_content">点击关闭通知</string>
<string name="app_updater_error_notification_content_re_download">点击重新下载</string>
<string name="app_updater_error_notification_title">下载失败</string>
<string name="app_updater_finish_notification_content">点击安装</string>
<string name="app_updater_finish_notification_title">下载完成</string>
<string name="app_updater_progress_notification_content">正在下载…</string>
<string name="app_updater_progress_notification_title">版本更新</string>
<string name="app_updater_progress_notification_title_2">下载游戏中</string>
<string name="app_updater_start_notification_title">版本更新</string>
<string name="app_updater_start_notification_title_2">下载游戏中</string>
<string name="app_updater_start_notification_content">正在获取下载数据…</string>
<string name="notification_title_txt">需要打开手机通知权限</string>
<string name="notification_cancel_txt">退出</string>
<string name="notification_setting_txt">设置</string>
<string name="app_tishi">提示</string>
<string name="app_hint">请输入邀请码</string>
<string name="app_sharetitle">我的邀请码:</string>
<string name="app_sharetitle2">上级邀请码:</string>
<string name="app_totalinvite">总邀请人数:</string>
<string name="app_sharecontent">邀请您下载:</string>
<string name="app_share">分享</string>
<string name="app_checklist">查看邀请记录</string>
<string name="app_invitetitle">邀请记录</string>
<string name="app_checklist_number">总邀请人数: %d</string>
<string name="app_nodata">暂无数据</string>
<string name="app_withdrawtitle">提现记录</string>
<string name="app_withdrawapply_title">提现申请</string>
<string name="app_bankinfo_title">编辑银行卡信息</string>
<string name="app_bankinfo_countrycode">86</string>
<string name="app_bankinfo_name">持卡人姓名:</string>
<string name="app_bankinfo_name_hint">请输入持卡人姓名</string>
<string name="app_bankinfo_bankcountry">国家地区:</string>
<string name="app_bankinfo_bankcountry_hint">请选择国家地区</string>
<string name="app_bankinfo_bankname">开户行名称:</string>
<string name="app_bankinfo_bankname_hint">请选择开户行名称</string>
<string name="app_bankinfo_code">银行户口:</string>
<string name="app_bankinfo_code_hint">请输入银行卡户口</string>
<string name="app_bankinfo_bankinfo_tips">(注:请先输入国家区号再选择开户行名称!)</string>
<string name="app_balance">余额: %s</string>
<string name="app_totalearning">总收益: %s</string>
<string name="app_withdraw_amount">金额: %s</string>
<string name="app_withdraw_apply_hint">请输入提现金额</string>
<string name="app_toastapply">提现申请已提交</string>
<!-- <string name="app_name">SPEEDAU</string>-->
<!-- <string name="qsrlwmm_txt">Please Set Your Password</string>-->
<!-- <string name="cancel_txt">Cancel</string>-->
<!-- <string name="sure_txt">Sure</string>-->
<!-- <string name="banbengengxin_txt">New Version Update</string>-->
<!-- <string name="xiacigengxin_txt">Next Update</string>-->
<!-- <string name="lijigengxin_txt">Update Immediately</string>-->
<!-- <string name="app_updater_error_notification_content">Click to close notification</string>-->
<!-- <string name="app_updater_error_notification_content_re_download">Click to re-download</string>-->
<!-- <string name="app_updater_error_notification_title">Download failed</string>-->
<!-- <string name="app_updater_finish_notification_content">Click to install</string>-->
<!-- <string name="app_updater_finish_notification_title">Download completed</string>-->
<!-- <string name="app_updater_progress_notification_content">Downloading...</string>-->
<!-- <string name="app_updater_progress_notification_title">Version update</string>-->
<!-- <string name="app_updater_progress_notification_title_2">Downloading game</string>-->
<!-- <string name="app_updater_start_notification_content">Getting download data...</string>-->
<!-- <string name="app_updater_start_notification_title">Version update</string>-->
<!-- <string name="app_updater_start_notification_title_2">Downloading game</string>-->
<!-- <string name="notification_title_txt">Need to turn on mobile phone notification permission</string>-->
<!-- <string name="notification_cancel_txt">Cancel</string>-->
<!-- <string name="notification_setting_txt">Setting</string>-->
</resources>

View File

@@ -0,0 +1,90 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
<item name="android:windowBackground">#161a20</item>
</style>
<style name="Theme.Calculcator1" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<declare-styleable name="CircleImageView">
<attr name="ease_border_color" format="color" />
<attr name="ease_border_width" format="dimension" />
<attr name="ease_press_alpha" format="integer" />
<attr name="ease_press_color" format="color" />
<attr name="ease_radius" format="dimension" />
<attr name="es_shape_type" format="enum">
<enum name="none" value="0" />
<enum name="round" value="1" />
<enum name="rectangle" value="2" />
</attr>
</declare-styleable>
<!-- 注意当前AppTheme主题在values-v23中单独重复维护。原因是Android 6以下系统不支持设置
系统状态栏颜色如果按照设计状态栏使用素色则在android6以下手机上就看不清系统状态栏文字了
因为系统文字是白色。在values-v23表示当Android 23即android 6及以上版本将自动使用该目录
下的主题(即 colorPrimaryDark 使用素色从而跟标题栏颜色保持一致实现沉浸式ui效果-->
<style name="AppThemeStart" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">false</item>
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="colorPrimary">@color/white</item>
<item name="colorPrimaryDark">@color/white</item>
<item name="colorAccent">@color/white</item>
<item name="windowActionBar">false</item>
<!-- 隐藏Activity窗口的Title标题栏 -->
<item name="windowNoTitle">true</item>
<!-- <item name="android:windowFullscreen">true</item>-->
<!-- <item name="android:windowBackground">@drawable/splah_bg</item>-->
<item name="android:navigationBarColor">@color/white</item>
<!-- <item name="android:windowBackground">@mipmap/big_bg</item>-->
<item name="android:forceDarkAllowed" tools:ignore="NewApi">false</item>
<item name="android:windowBackground">@drawable/big_bg</item>
</style>
<style name="MaterialDesignDialog" parent="@style/Theme.AppCompat.Dialog">
<!-- 背景透明 -->
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<!-- 浮于Activity之上 -->
<item name="android:windowIsFloating">true</item>
<!-- 边框 -->
<item name="android:windowFrame">@null</item>
<!-- Dialog以外的区域模糊效果 -->
<item name="android:backgroundDimEnabled">true</item>
<!-- 无标题 -->
<item name="android:windowNoTitle">true</item>
<!-- 半透明 -->
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowCloseOnTouchOutside">true</item>
</style>
</resources>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<paths>
<root-path name="app_root_path" path="/"/>
<external-path name="app_external_path" path="/"/>
<external-cache-path name="app_external_cache_path" path="/"/>
<external-files-path name="app_external_files_path" path="/"/>
<files-path name="app_files_path" path="/"/>
<cache-path name="app_cache_path" path="/"/>
</paths>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding= "utf-8"?>
<resources>
<paths >
<external-path name="external_files" path="."/>
<root-path name="root" path="." />
<files-path name="files" path="." />
<cache-path name="cache" path="." />
<external-files-path name="external_files_f" path="." />
<external-cache-path name="external_cache" path="." />
</paths >
</resources>
<!-- 适配7.0及其以上配合com.eva.android.OpenFileUtil用于解决调用系统Intent查看大文件内
容、拍照保存图片的功能时出现"android.os.FileUriExposedException"异常的问题 -->

View File

@@ -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 <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
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);
}
}

View File

@@ -1394,7 +1394,9 @@ public class MainActivity2 extends AppCompatActivity {
} else { } else {
progressBar.setVisibility(View.VISIBLE); progressBar.setVisibility(View.VISIBLE);
} }
if (url1.contains("facebook") || url1.contains("https://t.me") || url1.contains("instagram") || url1.contains("https://x.com")||url1.contains("https://wa.me")) { if (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")) {
try { try {
Intent intent = new Intent(); Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW); intent.setAction(Intent.ACTION_VIEW);
@@ -1447,7 +1449,9 @@ public class MainActivity2 extends AppCompatActivity {
toStopPlayers(); toStopPlayers();
} }
} }
if (url1.contains("facebook") || url1.contains("https://t.me") || url1.contains("instagram") || url1.contains("https://x.com")||url1.contains("https://wa.me")) { if (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")) {
try { try {
Intent intent = new Intent(); Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW); intent.setAction(Intent.ACTION_VIEW);
@@ -1525,7 +1529,7 @@ public class MainActivity2 extends AppCompatActivity {
private int rawRes = -1; private int rawRes = -1;
private void toPlayers() { private void toPlayers() {
AudioManager audioManager = (AudioManager) MainActivity2.this.getSystemService(Context.AUDIO_SERVICE); // AudioManager audioManager = (AudioManager) MainActivity2.this.getSystemService(Context.AUDIO_SERVICE);
// stop(context); // stop(context);
if (mp == null) { if (mp == null) {
if (rawRes == -1) { if (rawRes == -1) {
@@ -1610,7 +1614,9 @@ public class MainActivity2 extends AppCompatActivity {
} }
} }
if (url.contains("facebook") || url.contains("https://t.me") || url.contains("instagram") || url.contains("https://x.com")||url.contains("https://wa.me")) { if (url.contains("facebook") || url.contains("https://t.me") || url.contains("instagram")
|| url.contains("https://x.com")||url.contains("https://wa.me")||
url.contains("https://m.me")||url.contains("http://m.me")) {
try { try {
Intent intent = new Intent(); Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW); intent.setAction(Intent.ACTION_VIEW);

View File

@@ -355,7 +355,7 @@
<ImageView <ImageView
android:id="@+id/show_top_v1" android:id="@+id/show_top_v1"
android:layout_width="100dp" android:layout_width="wrap_content"
android:layout_height="100dp" android:layout_height="100dp"
android:src="@mipmap/app_logo" android:src="@mipmap/app_logo"
android:visibility="gone" /> android:visibility="gone" />

View File

@@ -12,8 +12,8 @@ android {
applicationId "com.web.boda8" applicationId "com.web.boda8"
minSdkVersion 24 minSdkVersion 24
targetSdkVersion 31 targetSdkVersion 31
versionCode 104 versionCode 108
versionName "v1.0.4" versionName "v1.0.8"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }

View File

@@ -10,6 +10,7 @@ import androidx.annotation.NonNull;
import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.Task;
import com.google.firebase.messaging.FirebaseMessaging; import com.google.firebase.messaging.FirebaseMessaging;
import com.web.base.MainActivity;
public class MainActivity2 extends com.web.base.MainActivity2 { public class MainActivity2 extends com.web.base.MainActivity2 {
@@ -18,19 +19,17 @@ public class MainActivity2 extends com.web.base.MainActivity2 {
userId = 58; userId = 58;
saveInt(MainActivity2.this,"user_code",userId); saveInt(MainActivity2.this,"user_code",userId);
saveInt(MainActivity2.this,"version_code",getVersion()); saveInt(MainActivity2.this,"version_code",getVersion());
MainActivity.saveString(this, "base_url","https://bk888.co/");
//网页的底部NavigationBar颜色
MainActivity.saveString(this, "style_color", "#4e1b82");
//页面的大背景颜色
MainActivity.saveString(this, "windows_color", "#000000");
//任务栏的文字颜色 0 黑 1白 默认黑
saveInt(MainActivity2.this,"is_white",1);
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
//订阅主题 //用于修改大背景渐变色 不设置 大背景就是 windows_color 的颜色
FirebaseMessaging.getInstance().subscribeToTopic("demo") setBackDrawables(R.drawable.big_bg);
.addOnCompleteListener(new OnCompleteListener<Void>() { setImageView(false);
@Override
public void onComplete(@NonNull Task<Void> task) {
String msg = "Subscribed";
if (!task.isSuccessful()) {
msg = "Subscribe failed";
}
}
});
} }
public int getVersion(){ public int getVersion(){

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="270"
android:startColor="#000000"
android:endColor="#000000"/>
</shape>

2
dapatcuci/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/build
/release

48
dapatcuci/build.gradle Normal file
View File

@@ -0,0 +1,48 @@
plugins {
id 'com.android.application'
id 'com.google.gms.google-services'
}
android {
compileSdkVersion 31
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.web.dapatcuci"
minSdkVersion 24
targetSdkVersion 31
versionCode 107
versionName "v1.0.7"
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 {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation project(path: ':base')
}

View File

@@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "915589275915",
"project_id": "dapatcuci-f9fbe",
"storage_bucket": "dapatcuci-f9fbe.firebasestorage.app"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:915589275915:android:77e4bdc5b7b8cc29bb820e",
"android_client_info": {
"package_name": "com.web.dapatcuci"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyB-IEI1Jru5ZT121-oPw6pKlFYYb6zHgAg"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

BIN
dapatcuci/ppn.jks Normal file

Binary file not shown.

32
dapatcuci/proguard-rules.pro vendored Normal file
View File

@@ -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.** {
*;
}

View File

@@ -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 <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@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());
}
}

View File

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.web.dapatcuci">
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera2"
android:required="false" />
<uses-permission android:name="android.permission.READ_CONTACTS" /> <!-- 获取通讯录-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!-- 多媒体相关 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 8.0+系统需要-->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!--推送权限-->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<!-- <uses-permission android:name="android.permission.CAPTURE_SECURE_VIDEO_OUTPUT" />-->
<!-- <uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />-->
<!-- <uses-permission android:name="android.permission.RECORD_AUDIO" />-->
<!-- <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />-->
<!-- <uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />-->
<!-- <uses-feature android:name="android.hardware.camera.autofocus" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera.front" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera.level.full" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera.capability.raw" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera.any" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.microphone" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera2" android:required="true" />-->
<queries>
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
</queries>
<application
android:name=".WebApplication"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/app_logo"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/app_logo"
android:supportsRtl="true"
android:theme="@style/Theme.AppTheme"
android:usesCleartextTraffic="true">
<activity
android:name=".MainActivity2"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="true"
android:hardwareAccelerated="true"
android:theme="@style/AppThemeStart">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</activity>
<service
android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService"
android:label="dexopt"
android:process=":dexopt" />
<!-- android:directBootAware="true" 为应用启用消息处理直接启动模式-->
<service
android:name=".MyFirebaseMessageingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<!-- Set custom default icon. This is used when no icon is set for incoming notification messages.
See README(https://goo.gl/l4GJaQ) for more. 设置推送默认图标 和颜色-->
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@mipmap/app_logo" />
<!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
notification message. See README(https://goo.gl/6BKBk7) for more. -->
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/notify_color" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/app_name" />
<!-- 还可设置推送渠道 -->
<!-- <meta-data-->
<!-- android:name="com.google.firebase.messaging.default_notification_channel_id"-->
<!-- android:value="@string/default_notification_channel_id" />-->
</application>
</manifest>

View File

@@ -0,0 +1,56 @@
package com.web.dapatcuci;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
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.MainActivity;
public class MainActivity2 extends com.web.base.MainActivity2 {
@Override
protected void onCreate(Bundle savedInstanceState) {
userId = 125;
saveInt(MainActivity2.this,"user_code",userId);
saveInt(MainActivity2.this,"version_code",getVersion());
MainActivity.saveString(this, "base_url","https://dp18aaa.xyz/");
//网页的底部NavigationBar颜色
MainActivity.saveString(this, "style_color", "#183207");
//页面的大背景颜色
MainActivity.saveString(this, "windows_color", "#0b1009");
//任务栏的文字颜色 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(task -> {
String msg = "Subscribed";
if (!task.isSuccessful()) {
msg = "Subscribe failed";
}
});
}
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;
}
}
}

View File

@@ -0,0 +1,171 @@
package com.web.dapatcuci;
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<String, String> 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);
// 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, com.web.base.MainActivity2.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);
// 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(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, MainActivity2.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());
//存储数据
// 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();
// }
}

View File

@@ -0,0 +1,37 @@
package com.web.dapatcuci;
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);
}
}

View File

@@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="#333333"
android:alpha="0.8">
<path
android:fillColor="@android:color/white"
android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 B

View File

@@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="270"
android:startColor="#0b1009"
android:endColor="#183207"/>
</shape>

View File

@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/white">
<item android:id="@android:id/mask">
<shape>
<solid android:color="@android:color/transparent" />
<corners android:radius="23dp" />
</shape>
</item>
<!-- 默认显⽰效果-->
<item>
<shape android:shape="rectangle">
<solid android:color="@color/dialog_input_bg"/>
<corners
android:radius="3dp" />
</shape>
</item>
</ripple>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:color="@color/white"
tools:ignore="NewApi">
<item android:id="@android:id/mask"
tools:ignore="NewApi">
<shape>
<solid android:color="@android:color/transparent" />
<corners android:radius="5dp" />
</shape>
</item>
<!-- 默认显⽰效果-->
<item>
<shape android:shape="rectangle">
<gradient
android:angle="180"
android:startColor="@android:color/transparent"
android:endColor="@android:color/transparent"
android:type="linear"
android:useLevel="true" />
<stroke android:width="1dp" android:color="#333333"/>
<corners
android:radius="5dp" />
</shape>
</item>
</ripple>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
>
<shape
android:shape="ring"
android:innerRadiusRatio="3"
android:thicknessRatio="8"
android:useLevel="false"
>
<gradient
android:type="sweep"
android:useLevel="false"
android:startColor="#ED9121"
android:centerColor="#88ED9121"
android:endColor="#00ED9121"
android:centerY="0.50" />
</shape>
</animated-rotate>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
>
<shape
android:shape="ring"
android:innerRadiusRatio="3"
android:thicknessRatio="8"
android:useLevel="false"
>
<gradient
android:type="sweep"
android:useLevel="false"
android:startColor="#000000"
android:centerColor="#888888"
android:endColor="#FFFFFF"
android:centerY="0.50" />
</shape>
</animated-rotate>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="22dp" />
<solid android:color="@color/jisuanqi" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:topRightRadius="12dp"
android:topLeftRadius="12dp"/>
<solid android:color="@color/dialog_bg" />
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="12dp" />
<solid android:color="@color/dialog_bg" />
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="20dp" />
<solid android:color="@color/white" />
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 779 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

View File

@@ -0,0 +1,52 @@
<resources>
<string name="app_name">DAPATCUCI</string>
<string name="qsrlwmm_txt">Please Set Your Password</string>
<string name="cancel_txt">Cancel</string>
<string name="sure_txt">Sure</string>
<string name="banbengengxin_txt">New Version Update</string>
<string name="xiacigengxin_txt">Next Update</string>
<string name="lijigengxin_txt">Update Immediately</string>
<string name="app_updater_error_notification_content">Click to close notification</string>
<string name="app_updater_error_notification_content_re_download">Click to re-download</string>
<string name="app_updater_error_notification_title">Download failed</string>
<string name="app_updater_finish_notification_content">Click to install</string>
<string name="app_updater_finish_notification_title">Download completed</string>
<string name="app_updater_progress_notification_content">Downloading...</string>
<string name="app_updater_progress_notification_title">Version update</string>
<string name="app_updater_progress_notification_title_2">Downloading game</string>
<string name="app_updater_start_notification_content">Getting download data...</string>
<string name="app_updater_start_notification_title">Version update</string>
<string name="app_updater_start_notification_title_2">Downloading game</string>
<string name="notification_title_txt">Need to turn on mobile phone notification permission</string>
<string name="notification_cancel_txt">Exit</string>
<string name="notification_setting_txt">Setting</string>
<string name="app_tishi">Tip</string>
<string name="app_hint">Please enter the invitation code</string>
<string name="app_sharetitle">My invitation code:</string>
<string name="app_sharetitle2">Superior invitation code:</string>
<string name="app_totalinvite">Total number of invites:</string>
<string name="app_sharecontent">App download link:</string>
<string name="app_share">Share</string>
<string name="app_checklist">Check Invitation Records</string>
<string name="app_invitetitle">Invitation Records</string>
<string name="app_checklist_number">Total number of invitees: %d</string>
<string name="app_nodata">No Data</string>
<string name="app_withdrawtitle">Withdrawal Record</string>
<string name="app_withdrawapply_title">Withdrawal Application</string>
<string name="app_bankinfo_title">Edit Bank Card Information</string>
<string name="app_bankinfo_countrycode">60</string>
<string name="app_bankinfo_name">Name:</string>
<string name="app_bankinfo_name_hint">Please enter the bank card name</string>
<string name="app_bankinfo_code">Bank card account:</string>
<string name="app_bankinfo_code_hint">Please enter the bank card account</string>
<string name="app_bankinfo_bankcountry">Country:</string>
<string name="app_bankinfo_bankcountry_hint">Please select a country</string>
<string name="app_bankinfo_bankname">Bank Name:</string>
<string name="app_bankinfo_bankname_hint">Please select a bank name</string>
<string name="app_bankinfo_bankinfo_tips">Note: Please enter the country code before selecting the bank name!</string>
<string name="app_balance">Balance: %s</string>
<string name="app_totalearning">Total Earnings: %s</string>
<string name="app_withdraw_amount">Amount: %s</string>
<string name="app_withdraw_apply_hint">Please enter the withdrawal amount</string>
<string name="app_toastapply">Withdrawal application has been submitted</string>
</resources>

View File

@@ -0,0 +1,70 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Calculcator" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<style name="Theme.Calculcator1" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<declare-styleable name="CircleImageView">
<attr name="ease_border_color" format="color" />
<attr name="ease_border_width" format="dimension" />
<attr name="ease_press_alpha" format="integer" />
<attr name="ease_press_color" format="color" />
<attr name="ease_radius" format="dimension" />
<attr name="es_shape_type" format="enum">
<enum name="none" value="0" />
<enum name="round" value="1" />
<enum name="rectangle" value="2" />
</attr>
</declare-styleable>
<!-- 注意当前AppTheme主题在values-v23中单独重复维护。原因是Android 6以下系统不支持设置
系统状态栏颜色如果按照设计状态栏使用素色则在android6以下手机上就看不清系统状态栏文字了
因为系统文字是白色。在values-v23表示当Android 23即android 6及以上版本将自动使用该目录
下的主题(即 colorPrimaryDark 使用素色从而跟标题栏颜色保持一致实现沉浸式ui效果-->
<style name="AppThemeStart" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">false</item>
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="colorPrimary">@color/white</item>
<item name="colorPrimaryDark">@color/white</item>
<item name="colorAccent">@color/white</item>
<item name="windowActionBar">false</item>
<!-- 隐藏Activity窗口的Title标题栏 -->
<item name="windowNoTitle">true</item>
<!-- <item name="android:windowFullscreen">true</item>-->
<!-- <item name="android:windowBackground">@drawable/splah_bg</item>-->
<item name="android:navigationBarColor">@color/white</item>
<!-- <item name="android:windowBackground">@mipmap/big_bg</item>-->
<item name="android:forceDarkAllowed" tools:ignore="NewApi">false</item>
<item name="android:windowBackground">@drawable/big_bg</item>
</style>
</resources>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFFFFF</color>
<color name="purple_500">#FFFFFF</color>
<color name="purple_700">#FFFFFF</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="jisuanqi">#EF4723</color>
<color name="notify_color">#FFFFFFFF</color>
<color name="dialog_bg">#2C2C2E</color>
<color name="dialog_textcolor">#FFA722</color>
<color name="dialog_input_bg">#434343</color>
<color name="dialog_dark">#BCBCBC</color>
</resources>

View File

@@ -0,0 +1,74 @@
<resources>
<string name="app_name">DAPATCUCI</string>
<string name="qsrlwmm_txt">请输入6位密码</string>
<string name="cancel_txt">取消</string>
<string name="sure_txt">确定</string>
<string name="banbengengxin_txt">版本更新</string>
<string name="xiacigengxin_txt">下次更新</string>
<string name="lijigengxin_txt">立即更新</string>
<string name="app_updater_error_notification_content">点击关闭通知</string>
<string name="app_updater_error_notification_content_re_download">点击重新下载</string>
<string name="app_updater_error_notification_title">下载失败</string>
<string name="app_updater_finish_notification_content">点击安装</string>
<string name="app_updater_finish_notification_title">下载完成</string>
<string name="app_updater_progress_notification_content">正在下载…</string>
<string name="app_updater_progress_notification_title">版本更新</string>
<string name="app_updater_progress_notification_title_2">下载游戏中</string>
<string name="app_updater_start_notification_title">版本更新</string>
<string name="app_updater_start_notification_title_2">下载游戏中</string>
<string name="app_updater_start_notification_content">正在获取下载数据…</string>
<string name="notification_title_txt">需要打开手机通知权限</string>
<string name="notification_cancel_txt">退出</string>
<string name="notification_setting_txt">设置</string>
<string name="app_tishi">提示</string>
<string name="app_hint">请输入邀请码</string>
<string name="app_sharetitle">我的邀请码:</string>
<string name="app_sharetitle2">上级邀请码:</string>
<string name="app_totalinvite">总邀请人数:</string>
<string name="app_sharecontent">邀请您下载:</string>
<string name="app_share">分享</string>
<string name="app_checklist">查看邀请记录</string>
<string name="app_invitetitle">邀请记录</string>
<string name="app_checklist_number">总邀请人数: %d</string>
<string name="app_nodata">暂无数据</string>
<string name="app_withdrawtitle">提现记录</string>
<string name="app_withdrawapply_title">提现申请</string>
<string name="app_bankinfo_title">编辑银行卡信息</string>
<string name="app_bankinfo_countrycode">86</string>
<string name="app_bankinfo_name">持卡人姓名:</string>
<string name="app_bankinfo_name_hint">请输入持卡人姓名</string>
<string name="app_bankinfo_bankcountry">国家地区:</string>
<string name="app_bankinfo_bankcountry_hint">请选择国家地区</string>
<string name="app_bankinfo_bankname">开户行名称:</string>
<string name="app_bankinfo_bankname_hint">请选择开户行名称</string>
<string name="app_bankinfo_code">银行户口:</string>
<string name="app_bankinfo_code_hint">请输入银行卡户口</string>
<string name="app_bankinfo_bankinfo_tips">(注:请先输入国家区号再选择开户行名称!)</string>
<string name="app_balance">余额: %s</string>
<string name="app_totalearning">总收益: %s</string>
<string name="app_withdraw_amount">金额: %s</string>
<string name="app_withdraw_apply_hint">请输入提现金额</string>
<string name="app_toastapply">提现申请已提交</string>
<!-- <string name="app_name">SPEEDAU</string>-->
<!-- <string name="qsrlwmm_txt">Please Set Your Password</string>-->
<!-- <string name="cancel_txt">Cancel</string>-->
<!-- <string name="sure_txt">Sure</string>-->
<!-- <string name="banbengengxin_txt">New Version Update</string>-->
<!-- <string name="xiacigengxin_txt">Next Update</string>-->
<!-- <string name="lijigengxin_txt">Update Immediately</string>-->
<!-- <string name="app_updater_error_notification_content">Click to close notification</string>-->
<!-- <string name="app_updater_error_notification_content_re_download">Click to re-download</string>-->
<!-- <string name="app_updater_error_notification_title">Download failed</string>-->
<!-- <string name="app_updater_finish_notification_content">Click to install</string>-->
<!-- <string name="app_updater_finish_notification_title">Download completed</string>-->
<!-- <string name="app_updater_progress_notification_content">Downloading...</string>-->
<!-- <string name="app_updater_progress_notification_title">Version update</string>-->
<!-- <string name="app_updater_progress_notification_title_2">Downloading game</string>-->
<!-- <string name="app_updater_start_notification_content">Getting download data...</string>-->
<!-- <string name="app_updater_start_notification_title">Version update</string>-->
<!-- <string name="app_updater_start_notification_title_2">Downloading game</string>-->
<!-- <string name="notification_title_txt">Need to turn on mobile phone notification permission</string>-->
<!-- <string name="notification_cancel_txt">Cancel</string>-->
<!-- <string name="notification_setting_txt">Setting</string>-->
</resources>

View File

@@ -0,0 +1,90 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
<item name="android:windowBackground">#161a20</item>
</style>
<style name="Theme.Calculcator1" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<declare-styleable name="CircleImageView">
<attr name="ease_border_color" format="color" />
<attr name="ease_border_width" format="dimension" />
<attr name="ease_press_alpha" format="integer" />
<attr name="ease_press_color" format="color" />
<attr name="ease_radius" format="dimension" />
<attr name="es_shape_type" format="enum">
<enum name="none" value="0" />
<enum name="round" value="1" />
<enum name="rectangle" value="2" />
</attr>
</declare-styleable>
<!-- 注意当前AppTheme主题在values-v23中单独重复维护。原因是Android 6以下系统不支持设置
系统状态栏颜色如果按照设计状态栏使用素色则在android6以下手机上就看不清系统状态栏文字了
因为系统文字是白色。在values-v23表示当Android 23即android 6及以上版本将自动使用该目录
下的主题(即 colorPrimaryDark 使用素色从而跟标题栏颜色保持一致实现沉浸式ui效果-->
<style name="AppThemeStart" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">false</item>
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="colorPrimary">@color/white</item>
<item name="colorPrimaryDark">@color/white</item>
<item name="colorAccent">@color/white</item>
<item name="windowActionBar">false</item>
<!-- 隐藏Activity窗口的Title标题栏 -->
<item name="windowNoTitle">true</item>
<!-- <item name="android:windowFullscreen">true</item>-->
<!-- <item name="android:windowBackground">@drawable/splah_bg</item>-->
<item name="android:navigationBarColor">@color/white</item>
<!-- <item name="android:windowBackground">@mipmap/big_bg</item>-->
<item name="android:forceDarkAllowed" tools:ignore="NewApi">false</item>
<item name="android:windowBackground">@drawable/big_bg</item>
</style>
<style name="MaterialDesignDialog" parent="@style/Theme.AppCompat.Dialog">
<!-- 背景透明 -->
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<!-- 浮于Activity之上 -->
<item name="android:windowIsFloating">true</item>
<!-- 边框 -->
<item name="android:windowFrame">@null</item>
<!-- Dialog以外的区域模糊效果 -->
<item name="android:backgroundDimEnabled">true</item>
<!-- 无标题 -->
<item name="android:windowNoTitle">true</item>
<!-- 半透明 -->
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowCloseOnTouchOutside">true</item>
</style>
</resources>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<paths>
<root-path name="app_root_path" path="/"/>
<external-path name="app_external_path" path="/"/>
<external-cache-path name="app_external_cache_path" path="/"/>
<external-files-path name="app_external_files_path" path="/"/>
<files-path name="app_files_path" path="/"/>
<cache-path name="app_cache_path" path="/"/>
</paths>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding= "utf-8"?>
<resources>
<paths >
<external-path name="external_files" path="."/>
<root-path name="root" path="." />
<files-path name="files" path="." />
<cache-path name="cache" path="." />
<external-files-path name="external_files_f" path="." />
<external-cache-path name="external_cache" path="." />
</paths >
</resources>
<!-- 适配7.0及其以上配合com.eva.android.OpenFileUtil用于解决调用系统Intent查看大文件内
容、拍照保存图片的功能时出现"android.os.FileUriExposedException"异常的问题 -->

View File

@@ -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 <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
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);
}
}

2
emu668/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/build
/release

48
emu668/build.gradle Normal file
View File

@@ -0,0 +1,48 @@
plugins {
id 'com.android.application'
id 'com.google.gms.google-services'
}
android {
compileSdkVersion 31
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.web.emu668"
minSdkVersion 24
targetSdkVersion 31
versionCode 107
versionName "v1.0.7"
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 {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation project(path: ':base')
}

View File

@@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "600201709621",
"project_id": "emu668-aa969",
"storage_bucket": "emu668-aa969.firebasestorage.app"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:600201709621:android:5c181347f6242b5726897c",
"android_client_info": {
"package_name": "com.web.emu668"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyD4-mbW4mU36N75zKbJh1BoiAWLxHYO-fc"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

BIN
emu668/ppn.jks Normal file

Binary file not shown.

32
emu668/proguard-rules.pro vendored Normal file
View File

@@ -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.** {
*;
}

View File

@@ -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 <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@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());
}
}

View File

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.web.emu668">
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera2"
android:required="false" />
<uses-permission android:name="android.permission.READ_CONTACTS" /> <!-- 获取通讯录-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!-- 多媒体相关 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 8.0+系统需要-->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!--推送权限-->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<!-- <uses-permission android:name="android.permission.CAPTURE_SECURE_VIDEO_OUTPUT" />-->
<!-- <uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />-->
<!-- <uses-permission android:name="android.permission.RECORD_AUDIO" />-->
<!-- <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />-->
<!-- <uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />-->
<!-- <uses-feature android:name="android.hardware.camera.autofocus" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera.front" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera.level.full" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera.capability.raw" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera.any" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.microphone" android:required="true" />-->
<!-- <uses-feature android:name="android.hardware.camera2" android:required="true" />-->
<queries>
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
</queries>
<application
android:name=".WebApplication"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/app_logo"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/app_logo"
android:supportsRtl="true"
android:theme="@style/Theme.AppTheme"
android:usesCleartextTraffic="true">
<activity
android:name=".MainActivity2"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="true"
android:hardwareAccelerated="true"
android:theme="@style/AppThemeStart">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</activity>
<service
android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService"
android:label="dexopt"
android:process=":dexopt" />
<!-- android:directBootAware="true" 为应用启用消息处理直接启动模式-->
<service
android:name=".MyFirebaseMessageingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<!-- Set custom default icon. This is used when no icon is set for incoming notification messages.
See README(https://goo.gl/l4GJaQ) for more. 设置推送默认图标 和颜色-->
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@mipmap/app_logo" />
<!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
notification message. See README(https://goo.gl/6BKBk7) for more. -->
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/notify_color" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/app_name" />
<!-- 还可设置推送渠道 -->
<!-- <meta-data-->
<!-- android:name="com.google.firebase.messaging.default_notification_channel_id"-->
<!-- android:value="@string/default_notification_channel_id" />-->
</application>
</manifest>

View File

@@ -0,0 +1,56 @@
package com.web.emu668;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
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.MainActivity;
public class MainActivity2 extends com.web.base.MainActivity2 {
@Override
protected void onCreate(Bundle savedInstanceState) {
userId = 124;
saveInt(MainActivity2.this,"user_code",userId);
saveInt(MainActivity2.this,"version_code",getVersion());
MainActivity.saveString(this, "base_url","https://emu668.co/");
//网页的底部NavigationBar颜色
MainActivity.saveString(this, "style_color", "#110c09");
//页面的大背景颜色
MainActivity.saveString(this, "windows_color", "#110c09");
//任务栏的文字颜色 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(task -> {
String msg = "Subscribed";
if (!task.isSuccessful()) {
msg = "Subscribe failed";
}
});
}
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;
}
}
}

View File

@@ -0,0 +1,171 @@
package com.web.emu668;
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<String, String> 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);
// 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, com.web.base.MainActivity2.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);
// 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(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, MainActivity2.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());
//存储数据
// 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();
// }
}

View File

@@ -0,0 +1,37 @@
package com.web.emu668;
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);
}
}

View File

@@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="#333333"
android:alpha="0.8">
<path
android:fillColor="@android:color/white"
android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 B

View File

@@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="270"
android:startColor="#110c09"
android:endColor="#110c09"/>
</shape>

View File

@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/white">
<item android:id="@android:id/mask">
<shape>
<solid android:color="@android:color/transparent" />
<corners android:radius="23dp" />
</shape>
</item>
<!-- 默认显⽰效果-->
<item>
<shape android:shape="rectangle">
<solid android:color="@color/dialog_input_bg"/>
<corners
android:radius="3dp" />
</shape>
</item>
</ripple>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:color="@color/white"
tools:ignore="NewApi">
<item android:id="@android:id/mask"
tools:ignore="NewApi">
<shape>
<solid android:color="@android:color/transparent" />
<corners android:radius="5dp" />
</shape>
</item>
<!-- 默认显⽰效果-->
<item>
<shape android:shape="rectangle">
<gradient
android:angle="180"
android:startColor="@android:color/transparent"
android:endColor="@android:color/transparent"
android:type="linear"
android:useLevel="true" />
<stroke android:width="1dp" android:color="#333333"/>
<corners
android:radius="5dp" />
</shape>
</item>
</ripple>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
>
<shape
android:shape="ring"
android:innerRadiusRatio="3"
android:thicknessRatio="8"
android:useLevel="false"
>
<gradient
android:type="sweep"
android:useLevel="false"
android:startColor="#ED9121"
android:centerColor="#88ED9121"
android:endColor="#00ED9121"
android:centerY="0.50" />
</shape>
</animated-rotate>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
>
<shape
android:shape="ring"
android:innerRadiusRatio="3"
android:thicknessRatio="8"
android:useLevel="false"
>
<gradient
android:type="sweep"
android:useLevel="false"
android:startColor="#000000"
android:centerColor="#888888"
android:endColor="#FFFFFF"
android:centerY="0.50" />
</shape>
</animated-rotate>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="22dp" />
<solid android:color="@color/jisuanqi" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:topRightRadius="12dp"
android:topLeftRadius="12dp"/>
<solid android:color="@color/dialog_bg" />
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="12dp" />
<solid android:color="@color/dialog_bg" />
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="20dp" />
<solid android:color="@color/white" />
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 779 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@@ -0,0 +1,52 @@
<resources>
<string name="app_name">EMU668</string>
<string name="qsrlwmm_txt">Please Set Your Password</string>
<string name="cancel_txt">Cancel</string>
<string name="sure_txt">Sure</string>
<string name="banbengengxin_txt">New Version Update</string>
<string name="xiacigengxin_txt">Next Update</string>
<string name="lijigengxin_txt">Update Immediately</string>
<string name="app_updater_error_notification_content">Click to close notification</string>
<string name="app_updater_error_notification_content_re_download">Click to re-download</string>
<string name="app_updater_error_notification_title">Download failed</string>
<string name="app_updater_finish_notification_content">Click to install</string>
<string name="app_updater_finish_notification_title">Download completed</string>
<string name="app_updater_progress_notification_content">Downloading...</string>
<string name="app_updater_progress_notification_title">Version update</string>
<string name="app_updater_progress_notification_title_2">Downloading game</string>
<string name="app_updater_start_notification_content">Getting download data...</string>
<string name="app_updater_start_notification_title">Version update</string>
<string name="app_updater_start_notification_title_2">Downloading game</string>
<string name="notification_title_txt">Need to turn on mobile phone notification permission</string>
<string name="notification_cancel_txt">Exit</string>
<string name="notification_setting_txt">Setting</string>
<string name="app_tishi">Tip</string>
<string name="app_hint">Please enter the invitation code</string>
<string name="app_sharetitle">My invitation code:</string>
<string name="app_sharetitle2">Superior invitation code:</string>
<string name="app_totalinvite">Total number of invites:</string>
<string name="app_sharecontent">App download link:</string>
<string name="app_share">Share</string>
<string name="app_checklist">Check Invitation Records</string>
<string name="app_invitetitle">Invitation Records</string>
<string name="app_checklist_number">Total number of invitees: %d</string>
<string name="app_nodata">No Data</string>
<string name="app_withdrawtitle">Withdrawal Record</string>
<string name="app_withdrawapply_title">Withdrawal Application</string>
<string name="app_bankinfo_title">Edit Bank Card Information</string>
<string name="app_bankinfo_countrycode">60</string>
<string name="app_bankinfo_name">Name:</string>
<string name="app_bankinfo_name_hint">Please enter the bank card name</string>
<string name="app_bankinfo_code">Bank card account:</string>
<string name="app_bankinfo_code_hint">Please enter the bank card account</string>
<string name="app_bankinfo_bankcountry">Country:</string>
<string name="app_bankinfo_bankcountry_hint">Please select a country</string>
<string name="app_bankinfo_bankname">Bank Name:</string>
<string name="app_bankinfo_bankname_hint">Please select a bank name</string>
<string name="app_bankinfo_bankinfo_tips">Note: Please enter the country code before selecting the bank name!</string>
<string name="app_balance">Balance: %s</string>
<string name="app_totalearning">Total Earnings: %s</string>
<string name="app_withdraw_amount">Amount: %s</string>
<string name="app_withdraw_apply_hint">Please enter the withdrawal amount</string>
<string name="app_toastapply">Withdrawal application has been submitted</string>
</resources>

View File

@@ -0,0 +1,70 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Calculcator" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<style name="Theme.Calculcator1" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<declare-styleable name="CircleImageView">
<attr name="ease_border_color" format="color" />
<attr name="ease_border_width" format="dimension" />
<attr name="ease_press_alpha" format="integer" />
<attr name="ease_press_color" format="color" />
<attr name="ease_radius" format="dimension" />
<attr name="es_shape_type" format="enum">
<enum name="none" value="0" />
<enum name="round" value="1" />
<enum name="rectangle" value="2" />
</attr>
</declare-styleable>
<!-- 注意当前AppTheme主题在values-v23中单独重复维护。原因是Android 6以下系统不支持设置
系统状态栏颜色如果按照设计状态栏使用素色则在android6以下手机上就看不清系统状态栏文字了
因为系统文字是白色。在values-v23表示当Android 23即android 6及以上版本将自动使用该目录
下的主题(即 colorPrimaryDark 使用素色从而跟标题栏颜色保持一致实现沉浸式ui效果-->
<style name="AppThemeStart" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">false</item>
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="colorPrimary">@color/white</item>
<item name="colorPrimaryDark">@color/white</item>
<item name="colorAccent">@color/white</item>
<item name="windowActionBar">false</item>
<!-- 隐藏Activity窗口的Title标题栏 -->
<item name="windowNoTitle">true</item>
<!-- <item name="android:windowFullscreen">true</item>-->
<!-- <item name="android:windowBackground">@drawable/splah_bg</item>-->
<item name="android:navigationBarColor">@color/white</item>
<!-- <item name="android:windowBackground">@mipmap/big_bg</item>-->
<item name="android:forceDarkAllowed" tools:ignore="NewApi">false</item>
<item name="android:windowBackground">@drawable/big_bg</item>
</style>
</resources>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFFFFF</color>
<color name="purple_500">#FFFFFF</color>
<color name="purple_700">#FFFFFF</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="jisuanqi">#EF4723</color>
<color name="notify_color">#FFFFFFFF</color>
<color name="dialog_bg">#2C2C2E</color>
<color name="dialog_textcolor">#FFA722</color>
<color name="dialog_input_bg">#434343</color>
<color name="dialog_dark">#BCBCBC</color>
</resources>

View File

@@ -0,0 +1,74 @@
<resources>
<string name="app_name">EMU668</string>
<string name="qsrlwmm_txt">请输入6位密码</string>
<string name="cancel_txt">取消</string>
<string name="sure_txt">确定</string>
<string name="banbengengxin_txt">版本更新</string>
<string name="xiacigengxin_txt">下次更新</string>
<string name="lijigengxin_txt">立即更新</string>
<string name="app_updater_error_notification_content">点击关闭通知</string>
<string name="app_updater_error_notification_content_re_download">点击重新下载</string>
<string name="app_updater_error_notification_title">下载失败</string>
<string name="app_updater_finish_notification_content">点击安装</string>
<string name="app_updater_finish_notification_title">下载完成</string>
<string name="app_updater_progress_notification_content">正在下载…</string>
<string name="app_updater_progress_notification_title">版本更新</string>
<string name="app_updater_progress_notification_title_2">下载游戏中</string>
<string name="app_updater_start_notification_title">版本更新</string>
<string name="app_updater_start_notification_title_2">下载游戏中</string>
<string name="app_updater_start_notification_content">正在获取下载数据…</string>
<string name="notification_title_txt">需要打开手机通知权限</string>
<string name="notification_cancel_txt">退出</string>
<string name="notification_setting_txt">设置</string>
<string name="app_tishi">提示</string>
<string name="app_hint">请输入邀请码</string>
<string name="app_sharetitle">我的邀请码:</string>
<string name="app_sharetitle2">上级邀请码:</string>
<string name="app_totalinvite">总邀请人数:</string>
<string name="app_sharecontent">邀请您下载:</string>
<string name="app_share">分享</string>
<string name="app_checklist">查看邀请记录</string>
<string name="app_invitetitle">邀请记录</string>
<string name="app_checklist_number">总邀请人数: %d</string>
<string name="app_nodata">暂无数据</string>
<string name="app_withdrawtitle">提现记录</string>
<string name="app_withdrawapply_title">提现申请</string>
<string name="app_bankinfo_title">编辑银行卡信息</string>
<string name="app_bankinfo_countrycode">86</string>
<string name="app_bankinfo_name">持卡人姓名:</string>
<string name="app_bankinfo_name_hint">请输入持卡人姓名</string>
<string name="app_bankinfo_bankcountry">国家地区:</string>
<string name="app_bankinfo_bankcountry_hint">请选择国家地区</string>
<string name="app_bankinfo_bankname">开户行名称:</string>
<string name="app_bankinfo_bankname_hint">请选择开户行名称</string>
<string name="app_bankinfo_code">银行户口:</string>
<string name="app_bankinfo_code_hint">请输入银行卡户口</string>
<string name="app_bankinfo_bankinfo_tips">(注:请先输入国家区号再选择开户行名称!)</string>
<string name="app_balance">余额: %s</string>
<string name="app_totalearning">总收益: %s</string>
<string name="app_withdraw_amount">金额: %s</string>
<string name="app_withdraw_apply_hint">请输入提现金额</string>
<string name="app_toastapply">提现申请已提交</string>
<!-- <string name="app_name">SPEEDAU</string>-->
<!-- <string name="qsrlwmm_txt">Please Set Your Password</string>-->
<!-- <string name="cancel_txt">Cancel</string>-->
<!-- <string name="sure_txt">Sure</string>-->
<!-- <string name="banbengengxin_txt">New Version Update</string>-->
<!-- <string name="xiacigengxin_txt">Next Update</string>-->
<!-- <string name="lijigengxin_txt">Update Immediately</string>-->
<!-- <string name="app_updater_error_notification_content">Click to close notification</string>-->
<!-- <string name="app_updater_error_notification_content_re_download">Click to re-download</string>-->
<!-- <string name="app_updater_error_notification_title">Download failed</string>-->
<!-- <string name="app_updater_finish_notification_content">Click to install</string>-->
<!-- <string name="app_updater_finish_notification_title">Download completed</string>-->
<!-- <string name="app_updater_progress_notification_content">Downloading...</string>-->
<!-- <string name="app_updater_progress_notification_title">Version update</string>-->
<!-- <string name="app_updater_progress_notification_title_2">Downloading game</string>-->
<!-- <string name="app_updater_start_notification_content">Getting download data...</string>-->
<!-- <string name="app_updater_start_notification_title">Version update</string>-->
<!-- <string name="app_updater_start_notification_title_2">Downloading game</string>-->
<!-- <string name="notification_title_txt">Need to turn on mobile phone notification permission</string>-->
<!-- <string name="notification_cancel_txt">Cancel</string>-->
<!-- <string name="notification_setting_txt">Setting</string>-->
</resources>

View File

@@ -0,0 +1,90 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
<item name="android:windowBackground">#161a20</item>
</style>
<style name="Theme.Calculcator1" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<declare-styleable name="CircleImageView">
<attr name="ease_border_color" format="color" />
<attr name="ease_border_width" format="dimension" />
<attr name="ease_press_alpha" format="integer" />
<attr name="ease_press_color" format="color" />
<attr name="ease_radius" format="dimension" />
<attr name="es_shape_type" format="enum">
<enum name="none" value="0" />
<enum name="round" value="1" />
<enum name="rectangle" value="2" />
</attr>
</declare-styleable>
<!-- 注意当前AppTheme主题在values-v23中单独重复维护。原因是Android 6以下系统不支持设置
系统状态栏颜色如果按照设计状态栏使用素色则在android6以下手机上就看不清系统状态栏文字了
因为系统文字是白色。在values-v23表示当Android 23即android 6及以上版本将自动使用该目录
下的主题(即 colorPrimaryDark 使用素色从而跟标题栏颜色保持一致实现沉浸式ui效果-->
<style name="AppThemeStart" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowTranslucentStatus">false</item>
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="colorPrimary">@color/white</item>
<item name="colorPrimaryDark">@color/white</item>
<item name="colorAccent">@color/white</item>
<item name="windowActionBar">false</item>
<!-- 隐藏Activity窗口的Title标题栏 -->
<item name="windowNoTitle">true</item>
<!-- <item name="android:windowFullscreen">true</item>-->
<!-- <item name="android:windowBackground">@drawable/splah_bg</item>-->
<item name="android:navigationBarColor">@color/white</item>
<!-- <item name="android:windowBackground">@mipmap/big_bg</item>-->
<item name="android:forceDarkAllowed" tools:ignore="NewApi">false</item>
<item name="android:windowBackground">@drawable/big_bg</item>
</style>
<style name="MaterialDesignDialog" parent="@style/Theme.AppCompat.Dialog">
<!-- 背景透明 -->
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<!-- 浮于Activity之上 -->
<item name="android:windowIsFloating">true</item>
<!-- 边框 -->
<item name="android:windowFrame">@null</item>
<!-- Dialog以外的区域模糊效果 -->
<item name="android:backgroundDimEnabled">true</item>
<!-- 无标题 -->
<item name="android:windowNoTitle">true</item>
<!-- 半透明 -->
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowCloseOnTouchOutside">true</item>
</style>
</resources>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<paths>
<root-path name="app_root_path" path="/"/>
<external-path name="app_external_path" path="/"/>
<external-cache-path name="app_external_cache_path" path="/"/>
<external-files-path name="app_external_files_path" path="/"/>
<files-path name="app_files_path" path="/"/>
<cache-path name="app_cache_path" path="/"/>
</paths>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding= "utf-8"?>
<resources>
<paths >
<external-path name="external_files" path="."/>
<root-path name="root" path="." />
<files-path name="files" path="." />
<cache-path name="cache" path="." />
<external-files-path name="external_files_f" path="." />
<external-cache-path name="external_cache" path="." />
</paths >
</resources>
<!-- 适配7.0及其以上配合com.eva.android.OpenFileUtil用于解决调用系统Intent查看大文件内
容、拍照保存图片的功能时出现"android.os.FileUriExposedException"异常的问题 -->

View File

@@ -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 <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
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);
}
}

View File

@@ -43,4 +43,7 @@ include ':ppn88'
include ':we1win' include ':we1win'
include ':rezeki44' include ':rezeki44'
include ':nova668' include ':nova668'
include ':bk888' include ':bk888'
include ':RichSpin96'
include ':emu668'
include ':dapatcuci'

View File

@@ -31,18 +31,18 @@ android {
// keyAlias 'key0' // keyAlias 'key0'
// keyPassword "dskj2024" // keyPassword "dskj2024"
// } // }
debug { // debug {
storeFile file('dskjweb.jks') // storeFile file('dskjweb.jks')
storePassword "dskj2024" // storePassword "dskj2024"
keyAlias 'dskjalias' // keyAlias 'dskjalias'
keyPassword "dskj2024" // keyPassword "dskj2024"
} // }
release { // release {
storeFile file('dskjweb.jks') // storeFile file('dskjweb.jks')
storePassword "dskj2024" // storePassword "dskj2024"
keyAlias 'dskjalias' // keyAlias 'dskjalias'
keyPassword "dskj2024" // keyPassword "dskj2024"
} // }
} }
buildTypes { buildTypes {