commit c637064c24faf46b5700eaba3fb7aa8e4a118892 Author: hanrenchun Date: Tue Jul 1 19:08:46 2025 +0800 first commit diff --git a/.gradle/5.4.1/fileChanges/last-build.bin b/.gradle/5.4.1/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/.gradle/5.4.1/fileChanges/last-build.bin differ diff --git a/.gradle/5.4.1/fileHashes/fileHashes.lock b/.gradle/5.4.1/fileHashes/fileHashes.lock new file mode 100644 index 0000000..17827ed Binary files /dev/null and b/.gradle/5.4.1/fileHashes/fileHashes.lock differ diff --git a/.gradle/5.4.1/gc.properties b/.gradle/5.4.1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/7.0.2/dependencies-accessors/dependencies-accessors.lock b/.gradle/7.0.2/dependencies-accessors/dependencies-accessors.lock new file mode 100644 index 0000000..57a19cd Binary files /dev/null and b/.gradle/7.0.2/dependencies-accessors/dependencies-accessors.lock differ diff --git a/.gradle/7.0.2/dependencies-accessors/gc.properties b/.gradle/7.0.2/dependencies-accessors/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/7.0.2/executionHistory/executionHistory.bin b/.gradle/7.0.2/executionHistory/executionHistory.bin new file mode 100644 index 0000000..e59bd08 Binary files /dev/null and b/.gradle/7.0.2/executionHistory/executionHistory.bin differ diff --git a/.gradle/7.0.2/executionHistory/executionHistory.lock b/.gradle/7.0.2/executionHistory/executionHistory.lock new file mode 100644 index 0000000..7e8b4ce Binary files /dev/null and b/.gradle/7.0.2/executionHistory/executionHistory.lock differ diff --git a/.gradle/7.0.2/fileChanges/last-build.bin b/.gradle/7.0.2/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/.gradle/7.0.2/fileChanges/last-build.bin differ diff --git a/.gradle/7.0.2/fileHashes/fileHashes.bin b/.gradle/7.0.2/fileHashes/fileHashes.bin new file mode 100644 index 0000000..c5a8115 Binary files /dev/null and b/.gradle/7.0.2/fileHashes/fileHashes.bin differ diff --git a/.gradle/7.0.2/fileHashes/fileHashes.lock b/.gradle/7.0.2/fileHashes/fileHashes.lock new file mode 100644 index 0000000..35e7b8b Binary files /dev/null and b/.gradle/7.0.2/fileHashes/fileHashes.lock differ diff --git a/.gradle/7.0.2/fileHashes/resourceHashesCache.bin b/.gradle/7.0.2/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000..7266156 Binary files /dev/null and b/.gradle/7.0.2/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/7.0.2/gc.properties b/.gradle/7.0.2/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/7.0.2/javaCompile/classAnalysis.bin b/.gradle/7.0.2/javaCompile/classAnalysis.bin new file mode 100644 index 0000000..277c5b4 Binary files /dev/null and b/.gradle/7.0.2/javaCompile/classAnalysis.bin differ diff --git a/.gradle/7.0.2/javaCompile/jarAnalysis.bin b/.gradle/7.0.2/javaCompile/jarAnalysis.bin new file mode 100644 index 0000000..16bd9c2 Binary files /dev/null and b/.gradle/7.0.2/javaCompile/jarAnalysis.bin differ diff --git a/.gradle/7.0.2/javaCompile/javaCompile.lock b/.gradle/7.0.2/javaCompile/javaCompile.lock new file mode 100644 index 0000000..eb4ec9f Binary files /dev/null and b/.gradle/7.0.2/javaCompile/javaCompile.lock differ diff --git a/.gradle/7.0.2/javaCompile/taskHistory.bin b/.gradle/7.0.2/javaCompile/taskHistory.bin new file mode 100644 index 0000000..2d8fb5f Binary files /dev/null and b/.gradle/7.0.2/javaCompile/taskHistory.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000..fbb4337 Binary files /dev/null and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..38e893a --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Mon Jun 30 17:18:21 CST 2025 +gradle.version=7.0.2 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000..ca4487a Binary files /dev/null and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/.gradle/checksums/checksums.lock b/.gradle/checksums/checksums.lock new file mode 100644 index 0000000..8688e9f Binary files /dev/null and b/.gradle/checksums/checksums.lock differ diff --git a/.gradle/checksums/md5-checksums.bin b/.gradle/checksums/md5-checksums.bin new file mode 100644 index 0000000..9490ad1 Binary files /dev/null and b/.gradle/checksums/md5-checksums.bin differ diff --git a/.gradle/checksums/sha1-checksums.bin b/.gradle/checksums/sha1-checksums.bin new file mode 100644 index 0000000..6edfb03 Binary files /dev/null and b/.gradle/checksums/sha1-checksums.bin differ diff --git a/.gradle/config.properties b/.gradle/config.properties new file mode 100644 index 0000000..2e32b67 --- /dev/null +++ b/.gradle/config.properties @@ -0,0 +1,2 @@ +#Mon Jun 30 17:58:45 CST 2025 +java.home=D\:\\workspace\\zulu-8 diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..4d6ef73 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +jwzs \ No newline at end of file diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml new file mode 100644 index 0000000..4a53bee --- /dev/null +++ b/.idea/AndroidProjectSystem.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..fb7f4a8 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..339542d --- /dev/null +++ b/.idea/deploymentTargetSelector.xml @@ -0,0 +1,18 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..3b51ce4 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..7d0f8b5 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__D__workspace_IdeaProjects_MyApplication_master_myapplication_app_libs_acrabsoft_sjt_sdk_20211216_aar.xml b/.idea/libraries/Gradle__D__workspace_IdeaProjects_MyApplication_master_myapplication_app_libs_acrabsoft_sjt_sdk_20211216_aar.xml new file mode 100644 index 0000000..7528a45 --- /dev/null +++ b/.idea/libraries/Gradle__D__workspace_IdeaProjects_MyApplication_master_myapplication_app_libs_acrabsoft_sjt_sdk_20211216_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml b/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml new file mode 100644 index 0000000..f2188b0 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml b/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml new file mode 100644 index 0000000..c590194 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml b/.idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml new file mode 100644 index 0000000..ac4a3f2 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml b/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml new file mode 100644 index 0000000..0f26a4c --- /dev/null +++ b/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_0_4_aar.xml b/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_0_4_aar.xml new file mode 100644 index 0000000..8e45857 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_0_4_aar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_solver_2_0_4.xml b/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_solver_2_0_4.xml new file mode 100644 index 0000000..dcb1f42 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_solver_2_0_4.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml b/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml new file mode 100644 index 0000000..d9aaae2 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml b/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml new file mode 100644 index 0000000..22cd9ce --- /dev/null +++ b/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml b/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml new file mode 100644 index 0000000..dbcb40b --- /dev/null +++ b/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml b/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml new file mode 100644 index 0000000..1f36f31 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml b/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml new file mode 100644 index 0000000..3aa15f5 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml b/.idea/libraries/Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml new file mode 100644 index 0000000..fa55be0 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml b/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml new file mode 100644 index 0000000..f4daffd --- /dev/null +++ b/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml b/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml new file mode 100644 index 0000000..6c7bebd --- /dev/null +++ b/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml b/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml new file mode 100644 index 0000000..aa94cd1 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml b/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml new file mode 100644 index 0000000..91a5eb1 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml b/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml new file mode 100644 index 0000000..5a66765 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml b/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml new file mode 100644 index 0000000..8d0f458 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml b/.idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml new file mode 100644 index 0000000..d7a7fc9 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_test_core_1_3_0_aar.xml b/.idea/libraries/Gradle__androidx_test_core_1_3_0_aar.xml new file mode 100644 index 0000000..1002465 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_test_core_1_3_0_aar.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_3_0_aar.xml b/.idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_3_0_aar.xml new file mode 100644 index 0000000..aa31042 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_3_0_aar.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_3_0_aar.xml b/.idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_3_0_aar.xml new file mode 100644 index 0000000..4af12ad --- /dev/null +++ b/.idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_3_0_aar.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_test_ext_junit_1_1_2_aar.xml b/.idea/libraries/Gradle__androidx_test_ext_junit_1_1_2_aar.xml new file mode 100644 index 0000000..a41e81f --- /dev/null +++ b/.idea/libraries/Gradle__androidx_test_ext_junit_1_1_2_aar.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_test_monitor_1_3_0_aar.xml b/.idea/libraries/Gradle__androidx_test_monitor_1_3_0_aar.xml new file mode 100644 index 0000000..d42a062 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_test_monitor_1_3_0_aar.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_test_runner_1_3_0_aar.xml b/.idea/libraries/Gradle__androidx_test_runner_1_3_0_aar.xml new file mode 100644 index 0000000..f8e20d2 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_test_runner_1_3_0_aar.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_transition_transition_1_2_0_aar.xml b/.idea/libraries/Gradle__androidx_transition_transition_1_2_0_aar.xml new file mode 100644 index 0000000..7928125 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_transition_transition_1_2_0_aar.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml b/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml new file mode 100644 index 0000000..1ca14b9 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml b/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml new file mode 100644 index 0000000..345eb53 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml b/.idea/libraries/Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml new file mode 100644 index 0000000..c93e8d0 --- /dev/null +++ b/.idea/libraries/Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml b/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml new file mode 100644 index 0000000..0b61a3f --- /dev/null +++ b/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_material_material_1_3_0_aar.xml b/.idea/libraries/Gradle__com_google_android_material_material_1_3_0_aar.xml new file mode 100644 index 0000000..74552e5 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_material_material_1_3_0_aar.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml b/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml new file mode 100644 index 0000000..48604a7 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_code_gson_gson_2_8_5.xml b/.idea/libraries/Gradle__com_google_code_gson_gson_2_8_5.xml new file mode 100644 index 0000000..46361a1 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_code_gson_gson_2_8_5.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml b/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml new file mode 100644 index 0000000..0082262 --- /dev/null +++ b/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_14_9.xml b/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_14_9.xml new file mode 100644 index 0000000..efb12fe --- /dev/null +++ b/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_14_9.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_squareup_okio_okio_1_17_2.xml b/.idea/libraries/Gradle__com_squareup_okio_okio_1_17_2.xml new file mode 100644 index 0000000..3dbd70b --- /dev/null +++ b/.idea/libraries/Gradle__com_squareup_okio_okio_1_17_2.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_squareup_retrofit2_converter_gson_2_9_0.xml b/.idea/libraries/Gradle__com_squareup_retrofit2_converter_gson_2_9_0.xml new file mode 100644 index 0000000..27a31d0 --- /dev/null +++ b/.idea/libraries/Gradle__com_squareup_retrofit2_converter_gson_2_9_0.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_squareup_retrofit2_retrofit_2_9_0.xml b/.idea/libraries/Gradle__com_squareup_retrofit2_retrofit_2_9_0.xml new file mode 100644 index 0000000..9be3017 --- /dev/null +++ b/.idea/libraries/Gradle__com_squareup_retrofit2_retrofit_2_9_0.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml b/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml new file mode 100644 index 0000000..e40cf1c --- /dev/null +++ b/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__junit_junit_4_12.xml b/.idea/libraries/Gradle__junit_junit_4_12.xml new file mode 100644 index 0000000..7c37793 --- /dev/null +++ b/.idea/libraries/Gradle__junit_junit_4_12.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__junit_junit_4_13_2.xml b/.idea/libraries/Gradle__junit_junit_4_13_2.xml new file mode 100644 index 0000000..68469a3 --- /dev/null +++ b/.idea/libraries/Gradle__junit_junit_4_13_2.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 0000000..c78a89a --- /dev/null +++ b/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml b/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml new file mode 100644 index 0000000..d04eaad --- /dev/null +++ b/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml b/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml new file mode 100644 index 0000000..99b3d6f --- /dev/null +++ b/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..9b6d99b --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..6dcc491 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/myapplication.iml b/.idea/myapplication.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/myapplication.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..16660f1 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..3acbd22 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,59 @@ +plugins { + id 'com.android.application' +} + +android { + compileSdk 31 + + defaultConfig { + applicationId "com.pxkj.jwzs" + minSdk 21 + targetSdk 27 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + debug { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + + manifestPlaceholders = [ + APPID : "320924230000-2-1-32092423SJNB12202505211658160001", + REGIONALISMCODE : "\\0320924230000", + NETWORKAREACODE : "\\02", + ] + } + + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + + manifestPlaceholders = [ + APPID : "320924230000-2-1-32092423SJNB12202505211658160001", + REGIONALISMCODE : "\\0320924230000", + NETWORKAREACODE : "\\02", + ] + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + namespace 'com.pxkj.jwzs' +} + +dependencies { + implementation fileTree(dir: "libs", include: [".jar", ".aar"]) + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.google.android.material:material:1.3.0' + implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + implementation 'com.squareup.retrofit2:converter-gson:2.9.0' + implementation 'com.squareup.retrofit2:retrofit:2.9.0' + implementation files('libs\\acrabsoft-sjt-sdk-20211216.aar') + testImplementation 'junit:junit:4.+' + androidTestImplementation 'androidx.test.ext:junit:1.1.2' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' +} \ No newline at end of file diff --git a/app/libs/acrabsoft-sjt-sdk-20211216.aar b/app/libs/acrabsoft-sjt-sdk-20211216.aar new file mode 100644 index 0000000..7974314 Binary files /dev/null and b/app/libs/acrabsoft-sjt-sdk-20211216.aar differ diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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 \ No newline at end of file diff --git a/app/src/androidTest/java/com/pxkj/jwzs/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/pxkj/jwzs/ExampleInstrumentedTest.java new file mode 100644 index 0000000..9342f26 --- /dev/null +++ b/app/src/androidTest/java/com/pxkj/jwzs/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.pxkj.jwzs; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.pxkj.jwzs", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..9fddc3f --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/pxkj/jwzs/ApiService.java b/app/src/main/java/com/pxkj/jwzs/ApiService.java new file mode 100644 index 0000000..75d36f5 --- /dev/null +++ b/app/src/main/java/com/pxkj/jwzs/ApiService.java @@ -0,0 +1,10 @@ +package com.pxkj.jwzs; + +import okhttp3.ResponseBody; +import retrofit2.Call; +import retrofit2.http.GET; +public interface ApiService { + + @GET("api/login") + Call getData(); +} \ No newline at end of file diff --git a/app/src/main/java/com/pxkj/jwzs/BaseActivity.java b/app/src/main/java/com/pxkj/jwzs/BaseActivity.java new file mode 100644 index 0000000..63c296e --- /dev/null +++ b/app/src/main/java/com/pxkj/jwzs/BaseActivity.java @@ -0,0 +1,202 @@ +package com.pxkj.jwzs; + +import android.app.AlertDialog; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.pm.PackageManager; +import android.os.Bundle; +import android.util.Log; +import android.widget.Toast; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import com.acrabsoft.sdk.ASPSDKUtils; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +/** + * Created by 皮蛋 on 2022/03/22. + */ +public abstract class BaseActivity extends AppCompatActivity { + + protected String TAG = getClass().getSimpleName(); + + public static String ACTION_LOGIN = "com.ydjw.ua.ACTION_LOGIN"; + public static String ACTION_LOGOUT = "com.ydjw.ua.ACTION_LOGOUT"; + + protected static String appId = "320924230000-2-1-32092423SJNB12202505211658160001"; +// protected static String appId = "320500220500-2-1-32050022SJ97122021091XXXXXXXXXX"; + protected static String departId = "320924230000"; +// protected static String departId = "3205002xxxxxx"; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + IntentFilter filter = new IntentFilter(); + filter.addAction(ACTION_LOGIN); + filter.addAction(ACTION_LOGOUT); + registerReceiver(broadcastReceiver, filter); + + } + + @Override + protected void onDestroy() { + super.onDestroy(); + unregisterReceiver(broadcastReceiver); + } + + private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if(ACTION_LOGIN.equals(action)){ + getCredential(); + }else if(ACTION_LOGOUT.equals(action)){ + MyApplication.getInstance().finishAll(); + } + } + }; + + protected void init(){ + try { + ASPSDKUtils.AndroidManifestInspect(getApplicationContext(), new ASPSDKUtils.AndroidManifestInspectCallBack() { + @Override + public void success(String jsonString) { + Log.e(TAG, "success--->"+jsonString); + Toast.makeText(getApplicationContext(), "正在加载", Toast.LENGTH_SHORT).show(); + new Thread(new Runnable() { + @Override + public void run() { + getCredential(); + } + }).start(); + } + + @Override + public void fail(final String err) { + runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getApplicationContext(), ""+err, Toast.LENGTH_SHORT).show(); + } + }); + } + }); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + } + + protected void getCredential() { + Log.e(TAG, "获取用户凭证:"+appId); + ASPSDKUtils.getCredential(getApplicationContext(), appId, departId, "2", new ASPSDKUtils.CredentialCallBack() { + @Override + public void success(String messageId, String userCredential, String appCredential) { + Log.e(TAG, "用户认证凭证获取 success \nmessageId---->" + messageId + "\nuserCredential---->" + userCredential + "\nappCredential---->" + appCredential); + + try { + JSONObject json = new JSONObject(userCredential); + JSONObject credential = json.optJSONObject("credential"); + JSONObject load = credential.optJSONObject("load"); + JSONObject userInfo = load.optJSONObject("userInfo"); + String xm = userInfo.optString("xm"); + String sfzh = userInfo.optString("sfzh"); + SpUtils.putString(getApplicationContext(), Constant.XM, xm); + SpUtils.putString(getApplicationContext(), Constant.SFZH, sfzh); + } catch (JSONException e) { + e.printStackTrace(); + } + + SpUtils.putString(getApplicationContext(), Constant.MESSAGE_ID, messageId); + SpUtils.putString(getApplicationContext(), Constant.USER_CREDENTIAL, userCredential); + SpUtils.putString(getApplicationContext(), Constant.APP_CREDENTIAL, appCredential); + getResourceAddress(); + } + + @Override + public void fail(String messageId, final String errMsg) { + Log.e(TAG, "用户认证凭证获取 fail \nmessageId---->" + messageId + "\nerrMsg---->" + errMsg); + if(errMsg!=null && errMsg.startsWith("-1")){ + // 跳过,不显示对话框 + }else{ + runOnUiThread(new Runnable() { + @Override + public void run() { + createAlertDialog("错误", "" + errMsg, BaseActivity.this); + } + }); + } + } + }); + } + + protected void getResourceAddress() { + Log.e(TAG, "获取资源地址:"+appId); + ASPSDKUtils.getResourceAddress(getApplicationContext(), SpUtils.getString(getApplicationContext(), Constant.MESSAGE_ID, ""), SpUtils.getString(getApplicationContext(), Constant.APP_CREDENTIAL, ""), + new ASPSDKUtils.ResourceAddressCallBack() { + @Override + public void success(String messageId, String resourceList) { + Log.e(TAG, "资源寻址 success \nmessageId---->" + messageId + "\nresourceList---->" + resourceList); + SpUtils.putString(getApplicationContext(), Constant.MESSAGE_ID, messageId); + SpUtils.putString(getApplicationContext(), Constant.RESOURCE_LIST, resourceList); + try { + JSONArray array = new JSONArray(resourceList); + if(array.length()>0){ + for(int i=0; i"+resourceId); + Log.e(TAG, "resourceAddress->"+resourceAddress); + SpUtils.putString(BaseActivity.this, resourceId, resourceAddress); + } + }else{ + runOnUiThread(new Runnable() { + @Override + public void run() { + createAlertDialog("提示", "未获取到资源列表", BaseActivity.this); + } + }); + } + } catch (JSONException e) { + e.printStackTrace(); + } + refresh(); + } + + @Override + public void fail(String messageId, final String errMsg) { + Log.e(TAG, "资源寻址 fail \nmessageId---->" + messageId + "\nerrMsg---->" + errMsg); + runOnUiThread(new Runnable() { + @Override + public void run() { + createAlertDialog("错误", "" + errMsg, BaseActivity.this); + } + }); + } + }); + } + + protected void createAlertDialog(String title, String content, Context context){ + AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context); + alertBuilder.setCancelable(true); + alertBuilder.setTitle(""+title); + alertBuilder.setMessage(""+content); + alertBuilder.setNegativeButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }); + alertBuilder.create().show(); + } + + protected abstract void refresh(); +} diff --git a/app/src/main/java/com/pxkj/jwzs/Constant.java b/app/src/main/java/com/pxkj/jwzs/Constant.java new file mode 100644 index 0000000..ef2b8e6 --- /dev/null +++ b/app/src/main/java/com/pxkj/jwzs/Constant.java @@ -0,0 +1,19 @@ +package com.pxkj.jwzs; + +/** + * Created by 皮蛋 on 2021/9/16. + */ + +class Constant { + + public static final String MESSAGE_ID = "messageId"; + public static final String USER_CREDENTIAL = "userCredential"; + public static final String APP_CREDENTIAL = "appCredential"; + public static final String RESOURCE_LIST = "resourceList"; + + public static final String XM = "XM"; + public static final String SFZH = "SFZH"; + public static final String PERSONDEPT = "PERSONDEPT"; + public static final String PERSONDEPTNAME = "PERSONDEPTNAME"; + +} diff --git a/app/src/main/java/com/pxkj/jwzs/FirstActivity.java b/app/src/main/java/com/pxkj/jwzs/FirstActivity.java new file mode 100644 index 0000000..542d8c0 --- /dev/null +++ b/app/src/main/java/com/pxkj/jwzs/FirstActivity.java @@ -0,0 +1,90 @@ +package com.pxkj.jwzs; + +import android.content.Intent; +import android.os.Bundle; +import android.widget.Button; +import android.widget.TextView; + +import okhttp3.ResponseBody; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; +import androidx.annotation.Nullable; + +import java.io.IOException; + +public class FirstActivity extends BaseActivity { + + private TextView tvApiResult; + + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); // 必须先加载布局,再初始化控件 + + // 初始化TextView(关键!绑定布局中的tv_api_result) + tvApiResult = findViewById(R.id.tv_api_result); + + Button btnTestApi = findViewById(R.id.btn_test_api); + btnTestApi.setOnClickListener(v -> { + tvApiResult.setText("测试中..."); // 此时tvApiResult已初始化,不会空指针 + fetchData(); + }); + + init(); // 调用父类方法 + } + + + private void fetchData() { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://50.146.63.127:82/app/api/") +// .baseUrl("http://218.92.207.242:50021/gwgl/") + .addConverterFactory(GsonConverterFactory.create()) + .build(); + ApiService service = retrofit.create(ApiService.class); + Call call = service.getData(); // 假设ApiService中定义的接口是正确的 + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + // 确保tvApiResult不为null(双重保险) + if (tvApiResult == null) return; + + if (response.isSuccessful()) { + try { + String result = response.body().string(); + tvApiResult.setText("请求成功:\n" + result); + } catch (IOException e) { + tvApiResult.setText("响应解析失败:\n" + e.getMessage()); + } + } else { + tvApiResult.setText("HTTP错误:\n状态码=" + response.code()); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + // 确保tvApiResult不为null(双重保险) + if (tvApiResult == null) return; + + // 显示具体错误原因(如网络不可达、超时等) + String errorMsg = "请求失败:\n"; + if (t.getMessage() != null) { + errorMsg += t.getMessage(); + } else { + errorMsg += "未知错误"; + } + tvApiResult.setText(errorMsg); + } + }); + } + + @Override + protected void refresh() { + // 寻址成功后,在这跳转下个页面 + startActivity(new Intent(this, MainActivity.class)); + } +} diff --git a/app/src/main/java/com/pxkj/jwzs/MainActivity.java b/app/src/main/java/com/pxkj/jwzs/MainActivity.java new file mode 100644 index 0000000..4471706 --- /dev/null +++ b/app/src/main/java/com/pxkj/jwzs/MainActivity.java @@ -0,0 +1,19 @@ +package com.pxkj.jwzs; + +import android.os.Bundle; + +public class MainActivity extends BaseActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + // 所有其它页面均继承BaseActivity + + } + + @Override + protected void refresh() { + // 不用实现任何功能 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/pxkj/jwzs/MyApplication.java b/app/src/main/java/com/pxkj/jwzs/MyApplication.java new file mode 100644 index 0000000..50420dc --- /dev/null +++ b/app/src/main/java/com/pxkj/jwzs/MyApplication.java @@ -0,0 +1,48 @@ +package com.pxkj.jwzs; + +import android.app.Activity; +import android.util.Log; + +import com.acrabsoft.sdk.AppStoreApplication; + + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * Created by 皮蛋 on 2021/9/15. + */ + +public class MyApplication extends AppStoreApplication { + + + public static List activitys = new ArrayList<>(); + + private static MyApplication instance; + + @Override + public void onCreate() { + super.onCreate(); + instance = this; + registerActivityLifecycleCallbacks(new MyLifecycleHandler(MyApplication.this)); + } + + public static MyApplication getInstance() { + return instance; + } + + public static void finishAll(){ + if(activitys!=null){ + Log.e("MyApplication", "activitys -->"+activitys.size()); + + Iterator iterator = activitys.iterator(); + while(iterator.hasNext()){ + Activity activity = iterator.next(); + activity.finish(); + iterator.remove(); //注意这个地方 + } + } + + } +} diff --git a/app/src/main/java/com/pxkj/jwzs/MyLifecycleHandler.java b/app/src/main/java/com/pxkj/jwzs/MyLifecycleHandler.java new file mode 100644 index 0000000..ffd0a85 --- /dev/null +++ b/app/src/main/java/com/pxkj/jwzs/MyLifecycleHandler.java @@ -0,0 +1,48 @@ +package com.pxkj.jwzs; + +import android.app.Activity; +import android.app.Application; +import android.content.Context; +import android.os.Bundle; +import android.util.Log; + +public class MyLifecycleHandler implements Application.ActivityLifecycleCallbacks { + private Context context; + + private String TAG = "MyLifecycleHandler"; + + protected MyLifecycleHandler(Context context){ + this.context = context; + } + + @Override + public void onActivityCreated(Activity activity, Bundle savedInstanceState) { + Log.e(TAG, "onActivityCreated"); + MyApplication.getInstance().activitys.add(activity); + } + + @Override + public void onActivityStarted(Activity activity) { + } + + @Override + public void onActivityResumed(Activity activity) { + } + + @Override + public void onActivityPaused(Activity activity) { + } + + @Override + public void onActivityStopped(Activity activity) { + } + + @Override + public void onActivityDestroyed(Activity activity) { + } + + @Override + public void onActivitySaveInstanceState(Activity activity, Bundle outState) { + } +} + diff --git a/app/src/main/java/com/pxkj/jwzs/SpUtils.java b/app/src/main/java/com/pxkj/jwzs/SpUtils.java new file mode 100644 index 0000000..2b3194a --- /dev/null +++ b/app/src/main/java/com/pxkj/jwzs/SpUtils.java @@ -0,0 +1,282 @@ +package com.pxkj.jwzs; + +import android.content.Context; +import android.content.SharedPreferences; +import android.content.SharedPreferences.Editor; +import android.text.TextUtils; +import android.util.Base64; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +public class SpUtils { + + private static SharedPreferences sp; + + private static SharedPreferences getSp(Context context) { + if (sp == null) { + sp = context.getSharedPreferences("SpUtil22", Context.MODE_PRIVATE); + } + return sp; + } + + + /** + * 存入字符串 + * + * @param context 上下文 + * @param key 字符串的键 + * @param value 字符串的值 + */ + public static void putString(Context context, String key, String value) { + SharedPreferences preferences = getSp(context); + //存入数据 + Editor editor = preferences.edit(); + editor.putString(key, value); + editor.commit(); + } + + /** + * 获取字符串 + * + * @param context 上下文 + * @param key 字符串的键 + * @return 得到的字符串 + */ + public static String getString(Context context, String key) { + SharedPreferences preferences = getSp(context); + return preferences.getString(key, ""); + } + + /** + * 获取字符串 + * + * @param context 上下文 + * @param key 字符串的键 + * @param value 字符串的默认值 + * @return 得到的字符串 + */ + public static String getString(Context context, String key, String value) { + SharedPreferences preferences = getSp(context); + return preferences.getString(key, value); + } + + /** + * 保存布尔值 + * + * @param context 上下文 + * @param key 键 + * @param value 值 + */ + public static void putBoolean(Context context, String key, boolean value) { + SharedPreferences sp = getSp(context); + Editor editor = sp.edit(); + editor.putBoolean(key, value); + editor.commit(); + } + + /** + * 获取布尔值 + * + * @param context 上下文 + * @param key 键 + * @param defValue 默认值 + * @return 返回保存的值 + */ + public static boolean getBoolean(Context context, String key, boolean defValue) { + SharedPreferences sp = getSp(context); + return sp.getBoolean(key, defValue); + } + + /** + * 保存long值 + * + * @param context 上下文 + * @param key 键 + * @param value 值 + */ + public static void putLong(Context context, String key, long value) { + SharedPreferences sp = getSp(context); + Editor editor = sp.edit(); + editor.putLong(key, value); + editor.commit(); + } + + /** + * 获取long值 + * + * @param context 上下文 + * @param key 键 + * @param defValue 默认值 + * @return 保存的值 + */ + public static long getLong(Context context, String key, long defValue) { + SharedPreferences sp = getSp(context); + return sp.getLong(key, defValue); + } + + /** + * 保存int值 + * + * @param context 上下文 + * @param key 键 + * @param value 值 + */ + public static void putInt(Context context, String key, int value) { + SharedPreferences sp = getSp(context); + Editor editor = sp.edit(); + editor.putInt(key, value); + editor.commit(); + } + + /** + * 获取long值 + * + * @param context 上下文 + * @param key 键 + * @param defValue 默认值 + * @return 保存的值 + */ + public static int getInt(Context context, String key, int defValue) { + SharedPreferences sp = getSp(context); + return sp.getInt(key, defValue); + } + + /** + * 保存对象 + * + * @param context 上下文 + * @param key 键 + * @param obj 要保存的对象(Serializable的子类) + * @param 泛型定义 + */ + public static void putObject(Context context, String key, T obj) { + try { + put(context, key, obj); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 获取对象 + * + * @param context 上下文 + * @param key 键 + * @param 指定泛型 + * @return 泛型对象 + */ + public static T getObject(Context context, String key) { + try { + return (T) get(context, key); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 存储List集合 + * @param context 上下文 + * @param key 存储的键 + * @param list 存储的集合 + */ + public static void putList(Context context, String key, List list) { + try { + put(context, key, list); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 获取List集合 + * @param context 上下文 + * @param key 键 + * @param 指定泛型 + * @return List集合 + */ + public static List getList(Context context, String key) { + try { + return (List) get(context, key); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 存储Map集合 + * @param context 上下文 + * @param key 键 + * @param map 存储的集合 + * @param 指定Map的键 + * @param 指定Map的值 + */ + public static void putMap(Context context, + String key, Map map) + { + try { + put(context, key, map); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static Map getMap(Context context, + String key) + { + try { + return (Map) get(context, key); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /**存储对象*/ + private static void put(Context context, String key, Object obj) + throws IOException + { + if (obj == null) {//判断对象是否为空 + return; + } + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = null; + oos = new ObjectOutputStream(baos); + oos.writeObject(obj); + // 将对象放到OutputStream中 + // 将对象转换成byte数组,并将其进行base64编码 + String objectStr = new String(Base64.encode(baos.toByteArray(), Base64.DEFAULT)); + baos.close(); + oos.close(); + + putString(context, key, objectStr); + } + + /**获取对象*/ + private static Object get(Context context, String key) + throws IOException, ClassNotFoundException + { + String wordBase64 = getString(context, key); + // 将base64格式字符串还原成byte数组 + if (TextUtils.isEmpty(wordBase64)) { //不可少,否则在下面会报java.io.StreamCorruptedException + return null; + } + byte[] objBytes = Base64.decode(wordBase64.getBytes(), Base64.DEFAULT); + ByteArrayInputStream bais = new ByteArrayInputStream(objBytes); + ObjectInputStream ois = new ObjectInputStream(bais); + // 将byte数组转换成product对象 + Object obj = ois.readObject(); + bais.close(); + ois.close(); + return obj; + } +} + diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..8062857 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,33 @@ + + + +