diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..146ab09
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..146ab09
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ 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/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..146ab09
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ 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/build.gradle b/app/build.gradle
index 9e9754c..fa31bc0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,13 +2,13 @@
android {
compileSdkVersion 29
- buildToolsVersion "29.0.1"
+ buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.casic.smartwellapp"
minSdkVersion 17
targetSdkVersion 29
- versionCode 6
- versionName "1.1"
+ versionCode 7
+ versionName "v1.1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
@@ -42,8 +42,8 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
- implementation 'androidx.appcompat:appcompat:1.0.2'
- implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
@@ -51,7 +51,7 @@
implementation 'com.lbx:xTools:2.1.2'
implementation 'org.bouncycastle:bcmail-jdk15on:1.59'
implementation 'org.apache.commons:commons-lang3:3.1'
- implementation 'com.alibaba:fastjson:1.2.12'
+ implementation 'com.alibaba:fastjson:1.2.68'
implementation files('libs/guava-17.0.jar')
implementation files('libs/androidsvg-1.2.2-beta-1.jar')
implementation files('libs/EzLicenseAPI4Android.jar')
@@ -62,5 +62,4 @@
implementation files('libs/kxml2-2.3.0.jar')
implementation files('libs/jackson-mapper-lgpl-1.9.5.jar')
implementation files('libs/jackson-core-lgpl-1.9.5.jar')
-
}
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..146ab09
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ 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/build.gradle b/app/build.gradle
index 9e9754c..fa31bc0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,13 +2,13 @@
android {
compileSdkVersion 29
- buildToolsVersion "29.0.1"
+ buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.casic.smartwellapp"
minSdkVersion 17
targetSdkVersion 29
- versionCode 6
- versionName "1.1"
+ versionCode 7
+ versionName "v1.1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
@@ -42,8 +42,8 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
- implementation 'androidx.appcompat:appcompat:1.0.2'
- implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
@@ -51,7 +51,7 @@
implementation 'com.lbx:xTools:2.1.2'
implementation 'org.bouncycastle:bcmail-jdk15on:1.59'
implementation 'org.apache.commons:commons-lang3:3.1'
- implementation 'com.alibaba:fastjson:1.2.12'
+ implementation 'com.alibaba:fastjson:1.2.68'
implementation files('libs/guava-17.0.jar')
implementation files('libs/androidsvg-1.2.2-beta-1.jar')
implementation files('libs/EzLicenseAPI4Android.jar')
@@ -62,5 +62,4 @@
implementation files('libs/kxml2-2.3.0.jar')
implementation files('libs/jackson-mapper-lgpl-1.9.5.jar')
implementation files('libs/jackson-core-lgpl-1.9.5.jar')
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 55d30fd..6e34b75 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -23,20 +23,31 @@
android:allowBackup="true"
android:icon="@mipmap/znzj"
android:label="@string/app_name"
+ android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme">
+ android:theme="@style/AppThemeNoActionBar"
+ android:usesCleartextTraffic="true">
-
+
-
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..146ab09
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ 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/build.gradle b/app/build.gradle
index 9e9754c..fa31bc0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,13 +2,13 @@
android {
compileSdkVersion 29
- buildToolsVersion "29.0.1"
+ buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.casic.smartwellapp"
minSdkVersion 17
targetSdkVersion 29
- versionCode 6
- versionName "1.1"
+ versionCode 7
+ versionName "v1.1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
@@ -42,8 +42,8 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
- implementation 'androidx.appcompat:appcompat:1.0.2'
- implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
@@ -51,7 +51,7 @@
implementation 'com.lbx:xTools:2.1.2'
implementation 'org.bouncycastle:bcmail-jdk15on:1.59'
implementation 'org.apache.commons:commons-lang3:3.1'
- implementation 'com.alibaba:fastjson:1.2.12'
+ implementation 'com.alibaba:fastjson:1.2.68'
implementation files('libs/guava-17.0.jar')
implementation files('libs/androidsvg-1.2.2-beta-1.jar')
implementation files('libs/EzLicenseAPI4Android.jar')
@@ -62,5 +62,4 @@
implementation files('libs/kxml2-2.3.0.jar')
implementation files('libs/jackson-mapper-lgpl-1.9.5.jar')
implementation files('libs/jackson-core-lgpl-1.9.5.jar')
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 55d30fd..6e34b75 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -23,20 +23,31 @@
android:allowBackup="true"
android:icon="@mipmap/znzj"
android:label="@string/app_name"
+ android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme">
+ android:theme="@style/AppThemeNoActionBar"
+ android:usesCleartextTraffic="true">
-
+
-
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/EzServiceClient4Android.lic b/app/src/main/assets/EzServiceClient4Android.lic
index 2f9a1c1..15c2e85 100644
--- a/app/src/main/assets/EzServiceClient4Android.lic
+++ b/app/src/main/assets/EzServiceClient4Android.lic
@@ -1,6 +1,6 @@
-f276fd50425e1516bd5fa1183d719e5188c3d196594315e14e003fa87c9edb2c5172bc06037febce58bc0cb093a6f99f46dfdd1ec48d8741353d2fb3aeb83b914b05c17e9431fcbd51ab5f05bc3ad8c850fcb169aa98094bedcae7c1687ed72580026733d8ea16ed193577111f96acf6b2bde5cbc093595fc611830331fd9409b33655b1d1734b525eda690fd3b9a525c6eb82869de321130dfce541c14dd51560d8def56d7363c23e50c539710bdf33c339fc9f70cd66319412b8684a2956e70c0e8a47586e2acfcb0292156ebfe275a48928e4f1fad576cff804a7e6efedac10faa1144f5c734e8fd877466b116dde7587da47d0ec9d851f3649145eef20baf8e55cce84ce5c2c469fee3374049e50e6d7e6badbd6f331ab55c3bc68df8fba9ed026ca69d0989d87dd101747d6d4e078fd972f8ec6372ae6d7e6badbd6f331da0c0ea0953023b21f3649145eef20ba876ec217701656916b67f9fc6bbfcf54e1d71aa6968e0d522edce43a825f8266ce240451cc3d2a6cb5f148d610d02c343fd149b7c6371aab62fcde50ab3874a019de7eb6e745bf9072215ec225e991125323109221ba90946ba59f7d8c7f4a96
-0cfa6c2c5eec924477d4869070a624f6338800b0cceeb3798744936e17f5dbe5ffc65ef9607dd62f7470c2075f59152b424800a6f3c2377ca4679102c0f410ea85fe94939f7b08cfa0c82baad441753322d07953b79a7c68e171ee41ac939ae90e153fef75c459a8acc519bae9a396a3754123ca956f1ccf4ed57fe0619215b3
-3082049030820255308201bea0030201020208485c64d3fba087a9300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3730303230313135333232385a180f32393730303230313135333232385a304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f7420436572746966696361746530819f300d06092a864886f70d010101050003818d00308189028181009467336181f34b81907f72d59f096b9e0bc71ec89dfe4ed3a3ccb9d4b493864d900fc2522ef090364ec86266c160101175fcceed985f2d63f598c915bc2096a1f7d42103a03f4798943a411c094da3e90666307c371c41e13ad19ee7ae54ec56219e9a80995dfd41199c43431764caff8d04c4c999818b8ac02590ffe7d97f390203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414a90da8091835c082a5e696dfe7f34066bfb2d4f7300d06092a864886f70d0101050500038181000c3163614e6017d01d1af63b67524528b37e8df1d999c7963681e0cebaf4c8846c56618723a25d5b0518cd8488422900e00720ba3f9f51c8bdbb18ee0c449a86f7e4abedce5684c6c4a558d7f8ca1e40028f2bf78d386337b0f7774220f89747107fbe4130e4f8dcd3d97019a499d73e183f626be08bd6e8f16b1fec8b6f46b2308202333082019ca003020102020863db91e7a94c1470300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f74204365727469666963617465301e170d3139303832323136303030305a170d3230303232323136303030305a302a310b300906035504061302434e311b301906035504030c12e58c97e4baace5b882e585ace5ae89e5b18030819f300d06092a864886f70d010101050003818d00308189028181009c67407ffc5a2cd8461f605e8ff0d96b4b6f9d09c0d776e1a1f67bd75d78426dd18525c0d4b3a5fc7252cc5c98c285e86785323190ad002882f8ad73e7b2e0cab6429fa0fa9884404ecc44dd0b560d798dd1dc52da219c781042c29d5e952fa9967748f21923611a564692d7f87d7b2c28737a69c8a499ce1e8687e3d599f6cd0203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414e873cba8b05182fcf5b0923afe0f7689466bd69a300d06092a864886f70d01010505000381810064368d80681403ac336e2d56125e057297ee491311ebda1ff5a050fe595cecabb285f3d395b6f5febf4d1e63767502acc922afe2452c68e02064e20c3c26c95c0a3d47cad4fdffbbb1640b6c03a67032d0a97ff4e2c2b3cb0f47327a3a644c2e9b5646af94d217c2eb0004117438cb1a7807707d345c3245a5e8a177ad5f1c35
+2510c4e69e269c8687aa62b975a8602285b31397afcbad497365138451765ed014ce89dd0005f08b90f365c081e38158037fe2a8aeae5765c59631f1a3703ce533f397bd9d5ad479c384a0434c2e8b6efca6442f38f3ddef31070f468b6f254008220ed4d33115dee053e46413d5f5a1ed74661b2e1f433a62ee986573dd22212f8061a1bded6b1ac13c4f0563986bcbe6c8086e15baefa963ba5b634ece82d902e83594c665b521dc7a8fce05122d7ed1573cf995ee331ab3f6d838d365cec76e443ceee1098d1dd011162692a0d3e10daf7ffc9d3de23eab186ad41e3cec6abb18bd091996d6040d8f536ea5e3328bf684c2dcede64a13b8549f1b024834e7f936fb7277d042c89d2f8d473272d0b7ab3024361f9779e03c63ce5f131295dcf0f167b96fb42626bb73792cf055412c069021d40678c09eab3024361f9779e0eea4a46ce6916af2b8549f1b024834e7a4b02eccbf324d7e75d2377fdb6279c8896959ccf251cac44da4194093c886834e28736e937a21e6e2c6054b8490c7542fc1ff3ec1e4a556293b42e4da1aa87dc72d8ca4659b7834cdc0181c4ec3700b233e26b1f9747324075a0a63335cfcef
+4d39594536c496286928e6ca5e8e84aadf7b9c8d59409eb6e7d71d4b5ccd13ade769e96bd98099fe859b394d7572698f43f903af899886cfb54a873b19c7721cc6a20613278b157876401f2a29862c43d8748ac8c967dda527dfbd25923ca9e8183e89dfd88ac818fe94ed03360d7dc5f0a76527d7b82173b8f48a0cc70266a3
+3082049230820255308201bea0030201020208485c64d3fba087a9300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3730303230313135333232385a180f32393730303230313135333232385a304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f7420436572746966696361746530819f300d06092a864886f70d010101050003818d00308189028181009467336181f34b81907f72d59f096b9e0bc71ec89dfe4ed3a3ccb9d4b493864d900fc2522ef090364ec86266c160101175fcceed985f2d63f598c915bc2096a1f7d42103a03f4798943a411c094da3e90666307c371c41e13ad19ee7ae54ec56219e9a80995dfd41199c43431764caff8d04c4c999818b8ac02590ffe7d97f390203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414a90da8091835c082a5e696dfe7f34066bfb2d4f7300d06092a864886f70d0101050500038181000c3163614e6017d01d1af63b67524528b37e8df1d999c7963681e0cebaf4c8846c56618723a25d5b0518cd8488422900e00720ba3f9f51c8bdbb18ee0c449a86f7e4abedce5684c6c4a558d7f8ca1e40028f2bf78d386337b0f7774220f89747107fbe4130e4f8dcd3d97019a499d73e183f626be08bd6e8f16b1fec8b6f46b2308202353082019ea00302010202085a09ebe5b8193320300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3231303431323136303030305a180f32303530303431323136303030305a302a310b300906035504061302434e311b301906035504030c12e58c97e4baace5b882e585ace5ae89e5b18030819f300d06092a864886f70d010101050003818d0030818902818100a9d0c339353cd1747bbcbb1573682de0a41f1c190e6aeb6a8af69e91236c0bfd6e6fec41b287b86ef5d7bd09d3631e34386dc8dd328e18364b3d067bdfb0c64a51de72ac238e026ccb32fc798cc350667fbfbfd3e451d009463ca872a99457499c88c7977e5e9f12118296d825de7febc2813f4e86d5bc96e4b477bf4a22e5bd0203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e041604147499564586404aa44a5ef1ad4b836996fdcb01f3300d06092a864886f70d0101050500038181006b57878916c1a3b8c6c15b7213c5ded9704bb66a59c759a3765194926be4f660fec68a6f7b52ffbb15e580eae637341e0c799a9859760bf463ef44a6263e6dff2ef53cbd4d9fddf79dcd771a84e8ba16ff75fad5bc33b0886d21150503dc2e1f55cda1d729699f6e754be4156db47c45805f16cf430db4a1ada8642f0b3e95c8
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..146ab09
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ 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/build.gradle b/app/build.gradle
index 9e9754c..fa31bc0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,13 +2,13 @@
android {
compileSdkVersion 29
- buildToolsVersion "29.0.1"
+ buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.casic.smartwellapp"
minSdkVersion 17
targetSdkVersion 29
- versionCode 6
- versionName "1.1"
+ versionCode 7
+ versionName "v1.1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
@@ -42,8 +42,8 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
- implementation 'androidx.appcompat:appcompat:1.0.2'
- implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
@@ -51,7 +51,7 @@
implementation 'com.lbx:xTools:2.1.2'
implementation 'org.bouncycastle:bcmail-jdk15on:1.59'
implementation 'org.apache.commons:commons-lang3:3.1'
- implementation 'com.alibaba:fastjson:1.2.12'
+ implementation 'com.alibaba:fastjson:1.2.68'
implementation files('libs/guava-17.0.jar')
implementation files('libs/androidsvg-1.2.2-beta-1.jar')
implementation files('libs/EzLicenseAPI4Android.jar')
@@ -62,5 +62,4 @@
implementation files('libs/kxml2-2.3.0.jar')
implementation files('libs/jackson-mapper-lgpl-1.9.5.jar')
implementation files('libs/jackson-core-lgpl-1.9.5.jar')
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 55d30fd..6e34b75 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -23,20 +23,31 @@
android:allowBackup="true"
android:icon="@mipmap/znzj"
android:label="@string/app_name"
+ android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme">
+ android:theme="@style/AppThemeNoActionBar"
+ android:usesCleartextTraffic="true">
-
+
-
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/EzServiceClient4Android.lic b/app/src/main/assets/EzServiceClient4Android.lic
index 2f9a1c1..15c2e85 100644
--- a/app/src/main/assets/EzServiceClient4Android.lic
+++ b/app/src/main/assets/EzServiceClient4Android.lic
@@ -1,6 +1,6 @@
-f276fd50425e1516bd5fa1183d719e5188c3d196594315e14e003fa87c9edb2c5172bc06037febce58bc0cb093a6f99f46dfdd1ec48d8741353d2fb3aeb83b914b05c17e9431fcbd51ab5f05bc3ad8c850fcb169aa98094bedcae7c1687ed72580026733d8ea16ed193577111f96acf6b2bde5cbc093595fc611830331fd9409b33655b1d1734b525eda690fd3b9a525c6eb82869de321130dfce541c14dd51560d8def56d7363c23e50c539710bdf33c339fc9f70cd66319412b8684a2956e70c0e8a47586e2acfcb0292156ebfe275a48928e4f1fad576cff804a7e6efedac10faa1144f5c734e8fd877466b116dde7587da47d0ec9d851f3649145eef20baf8e55cce84ce5c2c469fee3374049e50e6d7e6badbd6f331ab55c3bc68df8fba9ed026ca69d0989d87dd101747d6d4e078fd972f8ec6372ae6d7e6badbd6f331da0c0ea0953023b21f3649145eef20ba876ec217701656916b67f9fc6bbfcf54e1d71aa6968e0d522edce43a825f8266ce240451cc3d2a6cb5f148d610d02c343fd149b7c6371aab62fcde50ab3874a019de7eb6e745bf9072215ec225e991125323109221ba90946ba59f7d8c7f4a96
-0cfa6c2c5eec924477d4869070a624f6338800b0cceeb3798744936e17f5dbe5ffc65ef9607dd62f7470c2075f59152b424800a6f3c2377ca4679102c0f410ea85fe94939f7b08cfa0c82baad441753322d07953b79a7c68e171ee41ac939ae90e153fef75c459a8acc519bae9a396a3754123ca956f1ccf4ed57fe0619215b3
-3082049030820255308201bea0030201020208485c64d3fba087a9300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3730303230313135333232385a180f32393730303230313135333232385a304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f7420436572746966696361746530819f300d06092a864886f70d010101050003818d00308189028181009467336181f34b81907f72d59f096b9e0bc71ec89dfe4ed3a3ccb9d4b493864d900fc2522ef090364ec86266c160101175fcceed985f2d63f598c915bc2096a1f7d42103a03f4798943a411c094da3e90666307c371c41e13ad19ee7ae54ec56219e9a80995dfd41199c43431764caff8d04c4c999818b8ac02590ffe7d97f390203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414a90da8091835c082a5e696dfe7f34066bfb2d4f7300d06092a864886f70d0101050500038181000c3163614e6017d01d1af63b67524528b37e8df1d999c7963681e0cebaf4c8846c56618723a25d5b0518cd8488422900e00720ba3f9f51c8bdbb18ee0c449a86f7e4abedce5684c6c4a558d7f8ca1e40028f2bf78d386337b0f7774220f89747107fbe4130e4f8dcd3d97019a499d73e183f626be08bd6e8f16b1fec8b6f46b2308202333082019ca003020102020863db91e7a94c1470300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f74204365727469666963617465301e170d3139303832323136303030305a170d3230303232323136303030305a302a310b300906035504061302434e311b301906035504030c12e58c97e4baace5b882e585ace5ae89e5b18030819f300d06092a864886f70d010101050003818d00308189028181009c67407ffc5a2cd8461f605e8ff0d96b4b6f9d09c0d776e1a1f67bd75d78426dd18525c0d4b3a5fc7252cc5c98c285e86785323190ad002882f8ad73e7b2e0cab6429fa0fa9884404ecc44dd0b560d798dd1dc52da219c781042c29d5e952fa9967748f21923611a564692d7f87d7b2c28737a69c8a499ce1e8687e3d599f6cd0203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414e873cba8b05182fcf5b0923afe0f7689466bd69a300d06092a864886f70d01010505000381810064368d80681403ac336e2d56125e057297ee491311ebda1ff5a050fe595cecabb285f3d395b6f5febf4d1e63767502acc922afe2452c68e02064e20c3c26c95c0a3d47cad4fdffbbb1640b6c03a67032d0a97ff4e2c2b3cb0f47327a3a644c2e9b5646af94d217c2eb0004117438cb1a7807707d345c3245a5e8a177ad5f1c35
+2510c4e69e269c8687aa62b975a8602285b31397afcbad497365138451765ed014ce89dd0005f08b90f365c081e38158037fe2a8aeae5765c59631f1a3703ce533f397bd9d5ad479c384a0434c2e8b6efca6442f38f3ddef31070f468b6f254008220ed4d33115dee053e46413d5f5a1ed74661b2e1f433a62ee986573dd22212f8061a1bded6b1ac13c4f0563986bcbe6c8086e15baefa963ba5b634ece82d902e83594c665b521dc7a8fce05122d7ed1573cf995ee331ab3f6d838d365cec76e443ceee1098d1dd011162692a0d3e10daf7ffc9d3de23eab186ad41e3cec6abb18bd091996d6040d8f536ea5e3328bf684c2dcede64a13b8549f1b024834e7f936fb7277d042c89d2f8d473272d0b7ab3024361f9779e03c63ce5f131295dcf0f167b96fb42626bb73792cf055412c069021d40678c09eab3024361f9779e0eea4a46ce6916af2b8549f1b024834e7a4b02eccbf324d7e75d2377fdb6279c8896959ccf251cac44da4194093c886834e28736e937a21e6e2c6054b8490c7542fc1ff3ec1e4a556293b42e4da1aa87dc72d8ca4659b7834cdc0181c4ec3700b233e26b1f9747324075a0a63335cfcef
+4d39594536c496286928e6ca5e8e84aadf7b9c8d59409eb6e7d71d4b5ccd13ade769e96bd98099fe859b394d7572698f43f903af899886cfb54a873b19c7721cc6a20613278b157876401f2a29862c43d8748ac8c967dda527dfbd25923ca9e8183e89dfd88ac818fe94ed03360d7dc5f0a76527d7b82173b8f48a0cc70266a3
+3082049230820255308201bea0030201020208485c64d3fba087a9300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3730303230313135333232385a180f32393730303230313135333232385a304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f7420436572746966696361746530819f300d06092a864886f70d010101050003818d00308189028181009467336181f34b81907f72d59f096b9e0bc71ec89dfe4ed3a3ccb9d4b493864d900fc2522ef090364ec86266c160101175fcceed985f2d63f598c915bc2096a1f7d42103a03f4798943a411c094da3e90666307c371c41e13ad19ee7ae54ec56219e9a80995dfd41199c43431764caff8d04c4c999818b8ac02590ffe7d97f390203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414a90da8091835c082a5e696dfe7f34066bfb2d4f7300d06092a864886f70d0101050500038181000c3163614e6017d01d1af63b67524528b37e8df1d999c7963681e0cebaf4c8846c56618723a25d5b0518cd8488422900e00720ba3f9f51c8bdbb18ee0c449a86f7e4abedce5684c6c4a558d7f8ca1e40028f2bf78d386337b0f7774220f89747107fbe4130e4f8dcd3d97019a499d73e183f626be08bd6e8f16b1fec8b6f46b2308202353082019ea00302010202085a09ebe5b8193320300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3231303431323136303030305a180f32303530303431323136303030305a302a310b300906035504061302434e311b301906035504030c12e58c97e4baace5b882e585ace5ae89e5b18030819f300d06092a864886f70d010101050003818d0030818902818100a9d0c339353cd1747bbcbb1573682de0a41f1c190e6aeb6a8af69e91236c0bfd6e6fec41b287b86ef5d7bd09d3631e34386dc8dd328e18364b3d067bdfb0c64a51de72ac238e026ccb32fc798cc350667fbfbfd3e451d009463ca872a99457499c88c7977e5e9f12118296d825de7febc2813f4e86d5bc96e4b477bf4a22e5bd0203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e041604147499564586404aa44a5ef1ad4b836996fdcb01f3300d06092a864886f70d0101050500038181006b57878916c1a3b8c6c15b7213c5ded9704bb66a59c759a3765194926be4f660fec68a6f7b52ffbb15e580eae637341e0c799a9859760bf463ef44a6263e6dff2ef53cbd4d9fddf79dcd771a84e8ba16ff75fad5bc33b0886d21150503dc2e1f55cda1d729699f6e754be4156db47c45805f16cf430db4a1ada8642f0b3e95c8
diff --git a/app/src/main/java/com/casic/smartwellapp/MainActivity.java b/app/src/main/java/com/casic/smartwellapp/MainActivity.java
index cffa4e1..38bef40 100644
--- a/app/src/main/java/com/casic/smartwellapp/MainActivity.java
+++ b/app/src/main/java/com/casic/smartwellapp/MainActivity.java
@@ -34,7 +34,7 @@
import com.telecomyt.oauthlogin.http.HttpCallback;
import com.telecomyt.oauthlogin.http.HttpOauthCheckUtil;
-import java.io.InputStream;
+import java.lang.reflect.Method;
import java.util.List;
import static com.telecomyt.oauthlogin.config.Config.LOG_TAG;
@@ -47,27 +47,24 @@
private String ip; //ip
private String imei; //imei
private String yys; //运营商
- LoginReturn userInfoResult = null; //单点登录返回的用户信息
- DeviceData deviceData = null; //给用户返回的数据
+ private LoginReturn userInfoResult = null; //单点登录返回的用户信息
+ private DeviceData deviceData = null; //给用户返回的数据
- private String oauth_url = "http://menhu.telecomyt.com.cn:8080/"; //单点登录验证地址
+ private static final String oauth_url = "http://menhu.telecomyt.com.cn:8080/"; //单点登录验证地址
private long exitTime = 0; //点击退出时间
private static final int LOGIN_CODE = 1001;
- public final static int REQUEST_READ_PHONE_STATE = 1;
-
+ public static final int REQUEST_READ_PHONE_STATE = 1;
private String msgId; //推送消息id
private String msgContent; //推送消息内容
-
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- InputStream inStream = null;
try {
Intent intent = new Intent("com.telecomyt.portal.OAUTH");
intent.putExtra("appID", "3pb316_oauth");
@@ -79,8 +76,8 @@
}
// imei = getIMEI(getApplicationContext());
- imei = getDeviceId(MainActivity.this);
-
+// imei = getDeviceId(MainActivity.this);
+ imei = obtainSimCardSerialNumber();//20210524 Pengxh修改
// if (getIntent() != null) {
//// Intent intent = getIntent();
@@ -92,27 +89,27 @@
//webview
// 获取控件对象
- webview = (WebView) findViewById(R.id.WV_ID);
+ webview = findViewById(R.id.WV_ID);
WebView.setWebContentsDebuggingEnabled(true);
- webview.getSettings().setJavaScriptEnabled(true);//设置webView属性,允许运行js脚本
- webview.getSettings().setDomStorageEnabled(true);
- webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
- webview.getSettings().setAppCacheEnabled(true);
- String appCatchPath = getApplicationContext().getCacheDir().getAbsolutePath();
- webview.getSettings().setAppCachePath(appCatchPath);
- webview.getSettings().setAllowFileAccess(true);//可访问文件
- webview.getSettings().setDefaultTextEncodingName("UTF-8");
- webview.getSettings().setAllowUniversalAccessFromFileURLs(true);
+ WebSettings settings = webview.getSettings();
+ settings.setJavaScriptEnabled(true);//设置webView属性,允许运行js脚本
+ settings.setDomStorageEnabled(true);
+ settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
+ settings.setAppCacheEnabled(true);
+ settings.setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath());
+ settings.setAllowFileAccess(true);//可访问文件
+ settings.setDefaultTextEncodingName("UTF-8");
+ settings.setAllowUniversalAccessFromFileURLs(true);
// 设置在当前WebView继续加载网页
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
- System.out.println("in shouldOverrideUrlLoading url");
try {
// 处理自定义scheme协议
if (!url.startsWith("http")) {
+ //处理自定义scheme-->androidamap://viewMap?poiname=W00002&lat=39.9055035111111&lng=116.376759027778
Log.e("scheme", "处理自定义scheme-->" + url);
// 如果要跳转地图
if (url.startsWith("androidamap:")) {
@@ -120,34 +117,38 @@
//获取问号后的参数
String params = url.substring(url.indexOf('?'));
Log.i("map", params);
- if (url.indexOf("?") != -1) {
+ if (url.contains("?")) {
String str = params.substring(1);
String[] strs = str.split("&");
- for (int i = 0; i < strs.length; i++) {
- String name = strs[i].split("=")[0];
- String value = strs[i].split("=")[1];
- if (name.equals("lng")) {
- lng = value;
- } else if (name.equals("lat")) {
- lat = value;
- } else if (name.equals("poiname")) {
- pointname = value;
+ for (String s : strs) {
+ String name = s.split("=")[0];
+ String value = s.split("=")[1];
+ switch (name) {
+ case "lng":
+ lng = value;
+ break;
+ case "lat":
+ lat = value;
+ break;
+ case "poiname":
+ pointname = value;
+ break;
}
}
}
//用原生sdk加载地图
- Intent intent = new Intent();
- intent.putExtra("lng", lng);
- intent.putExtra("lat", lat);
- intent.putExtra("pointname", pointname);
- intent.setClass(MainActivity.this,
- MapInitActivity.class);
- startActivity(intent);
+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O) {
+ Intent intent = new Intent(MainActivity.this, MapInitActivity.class);
+ intent.putExtra("lng", lng);
+ intent.putExtra("lat", lat);
+ intent.putExtra("pointname", pointname);
+ startActivity(intent);
+ } else {
+ Toast.makeText(MainActivity.this, "系统版本过高,地图无法使用", Toast.LENGTH_SHORT).show();
+ }
} else if (url.startsWith("tel:")) {
- final Intent intent = new Intent(Intent.ACTION_VIEW,
- Uri.parse(url));
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
- | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), "未能识别URL!", Toast.LENGTH_SHORT).show();
@@ -171,20 +172,17 @@
}
@Override
- public void onReceivedError(WebView view, int errorCode, String description,
- String failingUrl) {
+ public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
//错误页面
webview.loadUrl("file:///android_asset/error.html");
}
});
-
// 给web提供调用接口
webview.addJavascriptInterface(new WebAppInterface(), "android");
// 加载html文件,欢迎页面
webview.loadUrl("file:///android_asset/hello.html");
-
}
@@ -203,56 +201,53 @@
//单点登录返回
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 100) {
- switch (requestCode) {
- //单点登录页面的返回结果
- case 1001:
- if (data != null) {
- String result = data.getStringExtra("result");
- Log.e(LOG_TAG, "吉安宝验证结果 result === " + result);
- JiAnBaoCheckResult tokenResult = new Gson().fromJson(result, JiAnBaoCheckResult.class);
- if (tokenResult != null) {
- if (tokenResult.isResult()) {
- token = tokenResult.getSubjectDN();
- Log.e(LOG_TAG, "token === " + token);
+ //单点登录页面的返回结果
+ if (requestCode == 1001) {
+ if (data != null) {
+ String result = data.getStringExtra("result");
+ Log.e(LOG_TAG, "吉安宝验证结果 result === " + result);
+ JiAnBaoCheckResult tokenResult = new Gson().fromJson(result, JiAnBaoCheckResult.class);
+ if (tokenResult != null) {
+ if (tokenResult.isResult()) {
+ token = tokenResult.getSubjectDN();
+ Log.e(LOG_TAG, "token === " + token);
// webview.loadUrl("file:///android_asset/index.html?token="+token);
- if (!TextUtils.isEmpty(token)) {
- HttpOauthCheckUtil.getInstance().getUserInfo(oauth_url, token, new HttpCallback() {
- @Override
- public void onSuccess(String result) {
- Toast.makeText(getApplicationContext(), "认证通过,欢迎使用",
- Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "门户验证结果 === " + result);
- userInfoResult = new Gson().fromJson(result, LoginReturn.class);
- yys = getYys(getApplicationContext());
- String name = userInfoResult.getData().getName();
- String identifyCard = userInfoResult.getData().getIdentityCard();
- deviceData = new DeviceData(name, identifyCard, yys, imei);
- Log.i("deviceData", deviceData.toString());
- webview.loadUrl("file:///android_asset/index.html");
- }
+ if (!TextUtils.isEmpty(token)) {
+ HttpOauthCheckUtil.getInstance().getUserInfo(oauth_url, token, new HttpCallback() {
+ @Override
+ public void onSuccess(String result) {
+ Toast.makeText(getApplicationContext(), "认证通过,欢迎使用",
+ Toast.LENGTH_SHORT).show();
+ Log.e(LOG_TAG, "门户验证结果 === " + result);
+ userInfoResult = new Gson().fromJson(result, LoginReturn.class);
+ yys = getYys(getApplicationContext());
+ String name = userInfoResult.getData().getName();
+ String identifyCard = userInfoResult.getData().getIdentityCard();
+ deviceData = new DeviceData(name, identifyCard, yys, imei);
+ Log.i("deviceData", deviceData.toString());
+ webview.loadUrl("file:///android_asset/index.html");
+ }
- @Override
- public void onFailed(String err) {
- Log.e(LOG_TAG, "错误信息 === " + err);
- Toast.makeText(getApplicationContext(), err,
- Toast.LENGTH_SHORT).show();
- }
- });
- }
- } else {
- //吉安宝认证失败
- Toast.makeText(getApplicationContext(), "吉安宝认证失败",
- Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "吉安宝认证失败 ");
+ @Override
+ public void onFailed(String err) {
+ Log.e(LOG_TAG, "错误信息 === " + err);
+ Toast.makeText(getApplicationContext(), err,
+ Toast.LENGTH_SHORT).show();
+ }
+ });
}
} else {
- Toast.makeText(getApplicationContext(), "请检查网络",
+ //吉安宝认证失败
+ Toast.makeText(getApplicationContext(), "吉安宝认证失败",
Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "请检查网络");
+ Log.e(LOG_TAG, "吉安宝认证失败 ");
}
+ } else {
+ Toast.makeText(getApplicationContext(), "请检查网络",
+ Toast.LENGTH_SHORT).show();
+ Log.e(LOG_TAG, "请检查网络");
}
- default:
- break;
+ }
}
}
// if (requestCode == LOGIN_CODE && resultCode == 100) { // resultCode 固定为100
@@ -277,13 +272,11 @@
@Override
public void onBackPressed() {
Log.i("webUrl", "webviewUrl" + webview.getUrl());
- if (webview.canGoBack() && !webview.getUrl().endsWith("/#/")
- && !webview.getUrl().endsWith("/#/login")) {
+ if (webview.canGoBack() && !webview.getUrl().endsWith("/#/") && !webview.getUrl().endsWith("/#/login")) {
webview.goBack();
} else {
if ((System.currentTimeMillis() - exitTime) > 2000) {
- Toast.makeText(getApplicationContext(), "再按一次退出程序",
- Toast.LENGTH_SHORT).show();
+ Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
super.onBackPressed();
@@ -299,22 +292,20 @@
Log.i("JSON:", json);
return json;
} else {
- String json = "";
- return json;
+ return "";
}
}
@JavascriptInterface
public String getAuth() {
// 返回token
- if (token != null && token != "") {
+ if (token != null && !token.equals("")) {
Toast.makeText(getApplicationContext(), "获取用户权限", Toast.LENGTH_SHORT).show();
return token;
} else {
return null;
}
}
-
}
//获取运营商
@@ -366,5 +357,38 @@
}
return deviceId;
}
+
+ //获取SimSerialNumber
+ @SuppressLint({"HardwareIds"})
+ public String obtainSimCardSerialNumber() {
+ if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+ //Android 10改为获取Android_ID
+ return Settings.System.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
+ } else {
+ TelephonyManager telephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
+ Class> telephonyClass;
+ try {
+ telephonyClass = Class.forName(telephony.getClass().getName());
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE_STATE);
+ }
+ //Android 10以下默认获取deviceId,部分手机获取不到deviceId不到的改为获取sim卡串码,如果依旧获取不到,返回""
+ String imei = telephony.getDeviceId();
+ if (TextUtils.isEmpty(imei)) {
+ Method m = telephonyClass.getMethod("getSimSerialNumber", int.class);
+ //主卡,卡1
+ String mainCard = (String) m.invoke(telephony, 0);
+ //副卡,卡2
+ String otherCard = (String) m.invoke(telephony, 1);
+ return mainCard;
+ } else {
+ return imei;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return "";
+ }
}
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..146ab09
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ 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/build.gradle b/app/build.gradle
index 9e9754c..fa31bc0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,13 +2,13 @@
android {
compileSdkVersion 29
- buildToolsVersion "29.0.1"
+ buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.casic.smartwellapp"
minSdkVersion 17
targetSdkVersion 29
- versionCode 6
- versionName "1.1"
+ versionCode 7
+ versionName "v1.1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
@@ -42,8 +42,8 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
- implementation 'androidx.appcompat:appcompat:1.0.2'
- implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
@@ -51,7 +51,7 @@
implementation 'com.lbx:xTools:2.1.2'
implementation 'org.bouncycastle:bcmail-jdk15on:1.59'
implementation 'org.apache.commons:commons-lang3:3.1'
- implementation 'com.alibaba:fastjson:1.2.12'
+ implementation 'com.alibaba:fastjson:1.2.68'
implementation files('libs/guava-17.0.jar')
implementation files('libs/androidsvg-1.2.2-beta-1.jar')
implementation files('libs/EzLicenseAPI4Android.jar')
@@ -62,5 +62,4 @@
implementation files('libs/kxml2-2.3.0.jar')
implementation files('libs/jackson-mapper-lgpl-1.9.5.jar')
implementation files('libs/jackson-core-lgpl-1.9.5.jar')
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 55d30fd..6e34b75 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -23,20 +23,31 @@
android:allowBackup="true"
android:icon="@mipmap/znzj"
android:label="@string/app_name"
+ android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme">
+ android:theme="@style/AppThemeNoActionBar"
+ android:usesCleartextTraffic="true">
-
+
-
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/EzServiceClient4Android.lic b/app/src/main/assets/EzServiceClient4Android.lic
index 2f9a1c1..15c2e85 100644
--- a/app/src/main/assets/EzServiceClient4Android.lic
+++ b/app/src/main/assets/EzServiceClient4Android.lic
@@ -1,6 +1,6 @@
-f276fd50425e1516bd5fa1183d719e5188c3d196594315e14e003fa87c9edb2c5172bc06037febce58bc0cb093a6f99f46dfdd1ec48d8741353d2fb3aeb83b914b05c17e9431fcbd51ab5f05bc3ad8c850fcb169aa98094bedcae7c1687ed72580026733d8ea16ed193577111f96acf6b2bde5cbc093595fc611830331fd9409b33655b1d1734b525eda690fd3b9a525c6eb82869de321130dfce541c14dd51560d8def56d7363c23e50c539710bdf33c339fc9f70cd66319412b8684a2956e70c0e8a47586e2acfcb0292156ebfe275a48928e4f1fad576cff804a7e6efedac10faa1144f5c734e8fd877466b116dde7587da47d0ec9d851f3649145eef20baf8e55cce84ce5c2c469fee3374049e50e6d7e6badbd6f331ab55c3bc68df8fba9ed026ca69d0989d87dd101747d6d4e078fd972f8ec6372ae6d7e6badbd6f331da0c0ea0953023b21f3649145eef20ba876ec217701656916b67f9fc6bbfcf54e1d71aa6968e0d522edce43a825f8266ce240451cc3d2a6cb5f148d610d02c343fd149b7c6371aab62fcde50ab3874a019de7eb6e745bf9072215ec225e991125323109221ba90946ba59f7d8c7f4a96
-0cfa6c2c5eec924477d4869070a624f6338800b0cceeb3798744936e17f5dbe5ffc65ef9607dd62f7470c2075f59152b424800a6f3c2377ca4679102c0f410ea85fe94939f7b08cfa0c82baad441753322d07953b79a7c68e171ee41ac939ae90e153fef75c459a8acc519bae9a396a3754123ca956f1ccf4ed57fe0619215b3
-3082049030820255308201bea0030201020208485c64d3fba087a9300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3730303230313135333232385a180f32393730303230313135333232385a304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f7420436572746966696361746530819f300d06092a864886f70d010101050003818d00308189028181009467336181f34b81907f72d59f096b9e0bc71ec89dfe4ed3a3ccb9d4b493864d900fc2522ef090364ec86266c160101175fcceed985f2d63f598c915bc2096a1f7d42103a03f4798943a411c094da3e90666307c371c41e13ad19ee7ae54ec56219e9a80995dfd41199c43431764caff8d04c4c999818b8ac02590ffe7d97f390203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414a90da8091835c082a5e696dfe7f34066bfb2d4f7300d06092a864886f70d0101050500038181000c3163614e6017d01d1af63b67524528b37e8df1d999c7963681e0cebaf4c8846c56618723a25d5b0518cd8488422900e00720ba3f9f51c8bdbb18ee0c449a86f7e4abedce5684c6c4a558d7f8ca1e40028f2bf78d386337b0f7774220f89747107fbe4130e4f8dcd3d97019a499d73e183f626be08bd6e8f16b1fec8b6f46b2308202333082019ca003020102020863db91e7a94c1470300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f74204365727469666963617465301e170d3139303832323136303030305a170d3230303232323136303030305a302a310b300906035504061302434e311b301906035504030c12e58c97e4baace5b882e585ace5ae89e5b18030819f300d06092a864886f70d010101050003818d00308189028181009c67407ffc5a2cd8461f605e8ff0d96b4b6f9d09c0d776e1a1f67bd75d78426dd18525c0d4b3a5fc7252cc5c98c285e86785323190ad002882f8ad73e7b2e0cab6429fa0fa9884404ecc44dd0b560d798dd1dc52da219c781042c29d5e952fa9967748f21923611a564692d7f87d7b2c28737a69c8a499ce1e8687e3d599f6cd0203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414e873cba8b05182fcf5b0923afe0f7689466bd69a300d06092a864886f70d01010505000381810064368d80681403ac336e2d56125e057297ee491311ebda1ff5a050fe595cecabb285f3d395b6f5febf4d1e63767502acc922afe2452c68e02064e20c3c26c95c0a3d47cad4fdffbbb1640b6c03a67032d0a97ff4e2c2b3cb0f47327a3a644c2e9b5646af94d217c2eb0004117438cb1a7807707d345c3245a5e8a177ad5f1c35
+2510c4e69e269c8687aa62b975a8602285b31397afcbad497365138451765ed014ce89dd0005f08b90f365c081e38158037fe2a8aeae5765c59631f1a3703ce533f397bd9d5ad479c384a0434c2e8b6efca6442f38f3ddef31070f468b6f254008220ed4d33115dee053e46413d5f5a1ed74661b2e1f433a62ee986573dd22212f8061a1bded6b1ac13c4f0563986bcbe6c8086e15baefa963ba5b634ece82d902e83594c665b521dc7a8fce05122d7ed1573cf995ee331ab3f6d838d365cec76e443ceee1098d1dd011162692a0d3e10daf7ffc9d3de23eab186ad41e3cec6abb18bd091996d6040d8f536ea5e3328bf684c2dcede64a13b8549f1b024834e7f936fb7277d042c89d2f8d473272d0b7ab3024361f9779e03c63ce5f131295dcf0f167b96fb42626bb73792cf055412c069021d40678c09eab3024361f9779e0eea4a46ce6916af2b8549f1b024834e7a4b02eccbf324d7e75d2377fdb6279c8896959ccf251cac44da4194093c886834e28736e937a21e6e2c6054b8490c7542fc1ff3ec1e4a556293b42e4da1aa87dc72d8ca4659b7834cdc0181c4ec3700b233e26b1f9747324075a0a63335cfcef
+4d39594536c496286928e6ca5e8e84aadf7b9c8d59409eb6e7d71d4b5ccd13ade769e96bd98099fe859b394d7572698f43f903af899886cfb54a873b19c7721cc6a20613278b157876401f2a29862c43d8748ac8c967dda527dfbd25923ca9e8183e89dfd88ac818fe94ed03360d7dc5f0a76527d7b82173b8f48a0cc70266a3
+3082049230820255308201bea0030201020208485c64d3fba087a9300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3730303230313135333232385a180f32393730303230313135333232385a304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f7420436572746966696361746530819f300d06092a864886f70d010101050003818d00308189028181009467336181f34b81907f72d59f096b9e0bc71ec89dfe4ed3a3ccb9d4b493864d900fc2522ef090364ec86266c160101175fcceed985f2d63f598c915bc2096a1f7d42103a03f4798943a411c094da3e90666307c371c41e13ad19ee7ae54ec56219e9a80995dfd41199c43431764caff8d04c4c999818b8ac02590ffe7d97f390203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414a90da8091835c082a5e696dfe7f34066bfb2d4f7300d06092a864886f70d0101050500038181000c3163614e6017d01d1af63b67524528b37e8df1d999c7963681e0cebaf4c8846c56618723a25d5b0518cd8488422900e00720ba3f9f51c8bdbb18ee0c449a86f7e4abedce5684c6c4a558d7f8ca1e40028f2bf78d386337b0f7774220f89747107fbe4130e4f8dcd3d97019a499d73e183f626be08bd6e8f16b1fec8b6f46b2308202353082019ea00302010202085a09ebe5b8193320300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3231303431323136303030305a180f32303530303431323136303030305a302a310b300906035504061302434e311b301906035504030c12e58c97e4baace5b882e585ace5ae89e5b18030819f300d06092a864886f70d010101050003818d0030818902818100a9d0c339353cd1747bbcbb1573682de0a41f1c190e6aeb6a8af69e91236c0bfd6e6fec41b287b86ef5d7bd09d3631e34386dc8dd328e18364b3d067bdfb0c64a51de72ac238e026ccb32fc798cc350667fbfbfd3e451d009463ca872a99457499c88c7977e5e9f12118296d825de7febc2813f4e86d5bc96e4b477bf4a22e5bd0203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e041604147499564586404aa44a5ef1ad4b836996fdcb01f3300d06092a864886f70d0101050500038181006b57878916c1a3b8c6c15b7213c5ded9704bb66a59c759a3765194926be4f660fec68a6f7b52ffbb15e580eae637341e0c799a9859760bf463ef44a6263e6dff2ef53cbd4d9fddf79dcd771a84e8ba16ff75fad5bc33b0886d21150503dc2e1f55cda1d729699f6e754be4156db47c45805f16cf430db4a1ada8642f0b3e95c8
diff --git a/app/src/main/java/com/casic/smartwellapp/MainActivity.java b/app/src/main/java/com/casic/smartwellapp/MainActivity.java
index cffa4e1..38bef40 100644
--- a/app/src/main/java/com/casic/smartwellapp/MainActivity.java
+++ b/app/src/main/java/com/casic/smartwellapp/MainActivity.java
@@ -34,7 +34,7 @@
import com.telecomyt.oauthlogin.http.HttpCallback;
import com.telecomyt.oauthlogin.http.HttpOauthCheckUtil;
-import java.io.InputStream;
+import java.lang.reflect.Method;
import java.util.List;
import static com.telecomyt.oauthlogin.config.Config.LOG_TAG;
@@ -47,27 +47,24 @@
private String ip; //ip
private String imei; //imei
private String yys; //运营商
- LoginReturn userInfoResult = null; //单点登录返回的用户信息
- DeviceData deviceData = null; //给用户返回的数据
+ private LoginReturn userInfoResult = null; //单点登录返回的用户信息
+ private DeviceData deviceData = null; //给用户返回的数据
- private String oauth_url = "http://menhu.telecomyt.com.cn:8080/"; //单点登录验证地址
+ private static final String oauth_url = "http://menhu.telecomyt.com.cn:8080/"; //单点登录验证地址
private long exitTime = 0; //点击退出时间
private static final int LOGIN_CODE = 1001;
- public final static int REQUEST_READ_PHONE_STATE = 1;
-
+ public static final int REQUEST_READ_PHONE_STATE = 1;
private String msgId; //推送消息id
private String msgContent; //推送消息内容
-
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- InputStream inStream = null;
try {
Intent intent = new Intent("com.telecomyt.portal.OAUTH");
intent.putExtra("appID", "3pb316_oauth");
@@ -79,8 +76,8 @@
}
// imei = getIMEI(getApplicationContext());
- imei = getDeviceId(MainActivity.this);
-
+// imei = getDeviceId(MainActivity.this);
+ imei = obtainSimCardSerialNumber();//20210524 Pengxh修改
// if (getIntent() != null) {
//// Intent intent = getIntent();
@@ -92,27 +89,27 @@
//webview
// 获取控件对象
- webview = (WebView) findViewById(R.id.WV_ID);
+ webview = findViewById(R.id.WV_ID);
WebView.setWebContentsDebuggingEnabled(true);
- webview.getSettings().setJavaScriptEnabled(true);//设置webView属性,允许运行js脚本
- webview.getSettings().setDomStorageEnabled(true);
- webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
- webview.getSettings().setAppCacheEnabled(true);
- String appCatchPath = getApplicationContext().getCacheDir().getAbsolutePath();
- webview.getSettings().setAppCachePath(appCatchPath);
- webview.getSettings().setAllowFileAccess(true);//可访问文件
- webview.getSettings().setDefaultTextEncodingName("UTF-8");
- webview.getSettings().setAllowUniversalAccessFromFileURLs(true);
+ WebSettings settings = webview.getSettings();
+ settings.setJavaScriptEnabled(true);//设置webView属性,允许运行js脚本
+ settings.setDomStorageEnabled(true);
+ settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
+ settings.setAppCacheEnabled(true);
+ settings.setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath());
+ settings.setAllowFileAccess(true);//可访问文件
+ settings.setDefaultTextEncodingName("UTF-8");
+ settings.setAllowUniversalAccessFromFileURLs(true);
// 设置在当前WebView继续加载网页
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
- System.out.println("in shouldOverrideUrlLoading url");
try {
// 处理自定义scheme协议
if (!url.startsWith("http")) {
+ //处理自定义scheme-->androidamap://viewMap?poiname=W00002&lat=39.9055035111111&lng=116.376759027778
Log.e("scheme", "处理自定义scheme-->" + url);
// 如果要跳转地图
if (url.startsWith("androidamap:")) {
@@ -120,34 +117,38 @@
//获取问号后的参数
String params = url.substring(url.indexOf('?'));
Log.i("map", params);
- if (url.indexOf("?") != -1) {
+ if (url.contains("?")) {
String str = params.substring(1);
String[] strs = str.split("&");
- for (int i = 0; i < strs.length; i++) {
- String name = strs[i].split("=")[0];
- String value = strs[i].split("=")[1];
- if (name.equals("lng")) {
- lng = value;
- } else if (name.equals("lat")) {
- lat = value;
- } else if (name.equals("poiname")) {
- pointname = value;
+ for (String s : strs) {
+ String name = s.split("=")[0];
+ String value = s.split("=")[1];
+ switch (name) {
+ case "lng":
+ lng = value;
+ break;
+ case "lat":
+ lat = value;
+ break;
+ case "poiname":
+ pointname = value;
+ break;
}
}
}
//用原生sdk加载地图
- Intent intent = new Intent();
- intent.putExtra("lng", lng);
- intent.putExtra("lat", lat);
- intent.putExtra("pointname", pointname);
- intent.setClass(MainActivity.this,
- MapInitActivity.class);
- startActivity(intent);
+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O) {
+ Intent intent = new Intent(MainActivity.this, MapInitActivity.class);
+ intent.putExtra("lng", lng);
+ intent.putExtra("lat", lat);
+ intent.putExtra("pointname", pointname);
+ startActivity(intent);
+ } else {
+ Toast.makeText(MainActivity.this, "系统版本过高,地图无法使用", Toast.LENGTH_SHORT).show();
+ }
} else if (url.startsWith("tel:")) {
- final Intent intent = new Intent(Intent.ACTION_VIEW,
- Uri.parse(url));
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
- | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), "未能识别URL!", Toast.LENGTH_SHORT).show();
@@ -171,20 +172,17 @@
}
@Override
- public void onReceivedError(WebView view, int errorCode, String description,
- String failingUrl) {
+ public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
//错误页面
webview.loadUrl("file:///android_asset/error.html");
}
});
-
// 给web提供调用接口
webview.addJavascriptInterface(new WebAppInterface(), "android");
// 加载html文件,欢迎页面
webview.loadUrl("file:///android_asset/hello.html");
-
}
@@ -203,56 +201,53 @@
//单点登录返回
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 100) {
- switch (requestCode) {
- //单点登录页面的返回结果
- case 1001:
- if (data != null) {
- String result = data.getStringExtra("result");
- Log.e(LOG_TAG, "吉安宝验证结果 result === " + result);
- JiAnBaoCheckResult tokenResult = new Gson().fromJson(result, JiAnBaoCheckResult.class);
- if (tokenResult != null) {
- if (tokenResult.isResult()) {
- token = tokenResult.getSubjectDN();
- Log.e(LOG_TAG, "token === " + token);
+ //单点登录页面的返回结果
+ if (requestCode == 1001) {
+ if (data != null) {
+ String result = data.getStringExtra("result");
+ Log.e(LOG_TAG, "吉安宝验证结果 result === " + result);
+ JiAnBaoCheckResult tokenResult = new Gson().fromJson(result, JiAnBaoCheckResult.class);
+ if (tokenResult != null) {
+ if (tokenResult.isResult()) {
+ token = tokenResult.getSubjectDN();
+ Log.e(LOG_TAG, "token === " + token);
// webview.loadUrl("file:///android_asset/index.html?token="+token);
- if (!TextUtils.isEmpty(token)) {
- HttpOauthCheckUtil.getInstance().getUserInfo(oauth_url, token, new HttpCallback() {
- @Override
- public void onSuccess(String result) {
- Toast.makeText(getApplicationContext(), "认证通过,欢迎使用",
- Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "门户验证结果 === " + result);
- userInfoResult = new Gson().fromJson(result, LoginReturn.class);
- yys = getYys(getApplicationContext());
- String name = userInfoResult.getData().getName();
- String identifyCard = userInfoResult.getData().getIdentityCard();
- deviceData = new DeviceData(name, identifyCard, yys, imei);
- Log.i("deviceData", deviceData.toString());
- webview.loadUrl("file:///android_asset/index.html");
- }
+ if (!TextUtils.isEmpty(token)) {
+ HttpOauthCheckUtil.getInstance().getUserInfo(oauth_url, token, new HttpCallback() {
+ @Override
+ public void onSuccess(String result) {
+ Toast.makeText(getApplicationContext(), "认证通过,欢迎使用",
+ Toast.LENGTH_SHORT).show();
+ Log.e(LOG_TAG, "门户验证结果 === " + result);
+ userInfoResult = new Gson().fromJson(result, LoginReturn.class);
+ yys = getYys(getApplicationContext());
+ String name = userInfoResult.getData().getName();
+ String identifyCard = userInfoResult.getData().getIdentityCard();
+ deviceData = new DeviceData(name, identifyCard, yys, imei);
+ Log.i("deviceData", deviceData.toString());
+ webview.loadUrl("file:///android_asset/index.html");
+ }
- @Override
- public void onFailed(String err) {
- Log.e(LOG_TAG, "错误信息 === " + err);
- Toast.makeText(getApplicationContext(), err,
- Toast.LENGTH_SHORT).show();
- }
- });
- }
- } else {
- //吉安宝认证失败
- Toast.makeText(getApplicationContext(), "吉安宝认证失败",
- Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "吉安宝认证失败 ");
+ @Override
+ public void onFailed(String err) {
+ Log.e(LOG_TAG, "错误信息 === " + err);
+ Toast.makeText(getApplicationContext(), err,
+ Toast.LENGTH_SHORT).show();
+ }
+ });
}
} else {
- Toast.makeText(getApplicationContext(), "请检查网络",
+ //吉安宝认证失败
+ Toast.makeText(getApplicationContext(), "吉安宝认证失败",
Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "请检查网络");
+ Log.e(LOG_TAG, "吉安宝认证失败 ");
}
+ } else {
+ Toast.makeText(getApplicationContext(), "请检查网络",
+ Toast.LENGTH_SHORT).show();
+ Log.e(LOG_TAG, "请检查网络");
}
- default:
- break;
+ }
}
}
// if (requestCode == LOGIN_CODE && resultCode == 100) { // resultCode 固定为100
@@ -277,13 +272,11 @@
@Override
public void onBackPressed() {
Log.i("webUrl", "webviewUrl" + webview.getUrl());
- if (webview.canGoBack() && !webview.getUrl().endsWith("/#/")
- && !webview.getUrl().endsWith("/#/login")) {
+ if (webview.canGoBack() && !webview.getUrl().endsWith("/#/") && !webview.getUrl().endsWith("/#/login")) {
webview.goBack();
} else {
if ((System.currentTimeMillis() - exitTime) > 2000) {
- Toast.makeText(getApplicationContext(), "再按一次退出程序",
- Toast.LENGTH_SHORT).show();
+ Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
super.onBackPressed();
@@ -299,22 +292,20 @@
Log.i("JSON:", json);
return json;
} else {
- String json = "";
- return json;
+ return "";
}
}
@JavascriptInterface
public String getAuth() {
// 返回token
- if (token != null && token != "") {
+ if (token != null && !token.equals("")) {
Toast.makeText(getApplicationContext(), "获取用户权限", Toast.LENGTH_SHORT).show();
return token;
} else {
return null;
}
}
-
}
//获取运营商
@@ -366,5 +357,38 @@
}
return deviceId;
}
+
+ //获取SimSerialNumber
+ @SuppressLint({"HardwareIds"})
+ public String obtainSimCardSerialNumber() {
+ if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+ //Android 10改为获取Android_ID
+ return Settings.System.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
+ } else {
+ TelephonyManager telephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
+ Class> telephonyClass;
+ try {
+ telephonyClass = Class.forName(telephony.getClass().getName());
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE_STATE);
+ }
+ //Android 10以下默认获取deviceId,部分手机获取不到deviceId不到的改为获取sim卡串码,如果依旧获取不到,返回""
+ String imei = telephony.getDeviceId();
+ if (TextUtils.isEmpty(imei)) {
+ Method m = telephonyClass.getMethod("getSimSerialNumber", int.class);
+ //主卡,卡1
+ String mainCard = (String) m.invoke(telephony, 0);
+ //副卡,卡2
+ String otherCard = (String) m.invoke(telephony, 1);
+ return mainCard;
+ } else {
+ return imei;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return "";
+ }
}
diff --git a/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java b/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java
index 1fa8471..ffe3784 100644
--- a/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java
+++ b/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java
@@ -1,12 +1,16 @@
package com.casic.smartwellapp;
+import android.Manifest;
import android.app.Activity;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.TextView;
+import androidx.core.app.ActivityCompat;
+
import com.casic.smartwellapp.Entity.Constant;
import com.easymap.android.maps.v3.EzMap;
import com.easymap.android.maps.v3.EzMap.OnStatusChangeListener;
@@ -20,23 +24,19 @@
import com.easymap.android.maps.v3.layers.ogc.WMTSLayer;
import com.easymap.android.maps.v3.layers.ogc.WMTSLayerInfo;
+import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
public class MapInitActivity extends Activity implements OnStatusChangeListener {
+
+ public static final int REQUEST_PERMISSION = 11;
private MapView mapView;
- private EzMap ezMap;
- private TextView textview;
- private WMTSLayer wmtstdt;
- private WMTSLayerInfo wmtslayerinfo;
- private Marker marker;
private String lng;
private String lat;
private String pointname;
- private GraphicsLayer graphicslayer;
- private BitmapDescriptor iconcircle;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -47,7 +47,7 @@
lng = i.getStringExtra("lng");
lat = i.getStringExtra("lat");
pointname = i.getStringExtra("pointname");
- mapView = (MapView) findViewById(R.id.MapView);
+ mapView = findViewById(R.id.MapView);
if (mapView != null) {
// 注册地图准备就绪监听
mapView.setOnStatusChangeListener(this);
@@ -60,54 +60,77 @@
inStream = getResources().getAssets().open("EzServiceClient4Android.lic");
// inStream = new FileInputStream(file);
} catch (FileNotFoundException e) {
- Log.e("mapError", "fileNotFoundException");
e.printStackTrace();
} catch (IOException e) {
- Log.e("mapError", "streamFileNotFoundException");
e.printStackTrace();
}
// 初始化许可方法
- mapView.initLicenseAsDevelopement(inStream);
+// mapView.initLicenseAsDevelopement(inStream);
+ mapView.initLicense(getAssetsData("EzServiceClient4Android.lic"));//20210525 Pengxh修改
mapView.onCreate(getApplication(), savedInstanceState);
-
-
}
}
@Override
public void onStatusChanged(STATUS arg0) {
- textview = (TextView) findViewById(R.id.textview);
+ TextView textview = findViewById(R.id.textview);
textview.setText(pointname);
// 得到地图对象
- ezMap = mapView.getMap();
+ EzMap ezMap = mapView.getMap();
// 设置地图中心点
- ezMap.centerAt(new GeoPoint(Double.valueOf(lng), Double.valueOf(lat)), false);
+ ezMap.centerAt(new GeoPoint(Double.parseDouble(lng), Double.parseDouble(lat)), false);
// 设置地图级别
ezMap.zoomTo(16, false);
- wmtslayerinfo = new WMTSLayerInfo();
+ WMTSLayerInfo wmtslayerinfo = new WMTSLayerInfo();
wmtslayerinfo.setVersion("1.0.0");
wmtslayerinfo.setFormat("tiles");
wmtslayerinfo.setStyle("default");
wmtslayerinfo.setLayerName("gdsl");
wmtslayerinfo.setTileMatrixSet("c");
// 实例化WMTSLayer 地图
- wmtstdt = new WMTSLayer("http://20.1.12.48/EzServer/Maps/gdsl",
- wmtslayerinfo, "tdt_vec.cache", Environment.getExternalStorageDirectory()
- + "/EzMap/st");
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_PERMISSION);
+ }
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION);
+ }
+ WMTSLayer wmtstdt = new WMTSLayer("http://20.1.12.48/EzServer/Maps/gdsl", wmtslayerinfo,
+ "tdt_vec.cache",
+ Environment.getExternalStorageDirectory() + "/EzMap/st");
ezMap.addLayer(wmtstdt);
- graphicslayer = new GraphicsLayer(SpatialReference.create(4326),
- ezMap.getExtent());
- iconcircle = BitmapDescriptorFactory.defaultMarker();
+ GraphicsLayer graphicslayer = new GraphicsLayer(SpatialReference.create(4326), ezMap.getExtent());
+ BitmapDescriptor iconCircle = BitmapDescriptorFactory.defaultMarker();
ezMap.addLayer(graphicslayer);
// 根据点的位置创建一个Marker的实例
- marker = new Marker(new GeoPoint(Double.valueOf(lng), Double.valueOf(lat)), iconcircle, 0.5f, 0.5f);
-// 将marker添加到图层中
+ Marker marker = new Marker(new GeoPoint(Double.parseDouble(lng), Double.parseDouble(lat)), iconCircle, 0.5f, 0.5f);
+ // 将marker添加到图层中
graphicslayer.addGraphic(marker);
ezMap.refreshMap();
-
-
}
+ /**
+ * 获取本地Asserts文件内容
+ */
+ public String getAssetsData(String fileName) {
+ try {
+ InputStreamReader inputStreamReader = new InputStreamReader(getAssets().open(fileName));
+ BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
+ StringBuilder data = new StringBuilder();
+ String s;
+ try {
+ while ((s = bufferedReader.readLine()) != null) {
+ data.append(s);
+ }
+ Log.d("map", "getAssetsData: " + data);
+ return data.toString();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
}
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..146ab09
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ 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/build.gradle b/app/build.gradle
index 9e9754c..fa31bc0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,13 +2,13 @@
android {
compileSdkVersion 29
- buildToolsVersion "29.0.1"
+ buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.casic.smartwellapp"
minSdkVersion 17
targetSdkVersion 29
- versionCode 6
- versionName "1.1"
+ versionCode 7
+ versionName "v1.1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
@@ -42,8 +42,8 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
- implementation 'androidx.appcompat:appcompat:1.0.2'
- implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
@@ -51,7 +51,7 @@
implementation 'com.lbx:xTools:2.1.2'
implementation 'org.bouncycastle:bcmail-jdk15on:1.59'
implementation 'org.apache.commons:commons-lang3:3.1'
- implementation 'com.alibaba:fastjson:1.2.12'
+ implementation 'com.alibaba:fastjson:1.2.68'
implementation files('libs/guava-17.0.jar')
implementation files('libs/androidsvg-1.2.2-beta-1.jar')
implementation files('libs/EzLicenseAPI4Android.jar')
@@ -62,5 +62,4 @@
implementation files('libs/kxml2-2.3.0.jar')
implementation files('libs/jackson-mapper-lgpl-1.9.5.jar')
implementation files('libs/jackson-core-lgpl-1.9.5.jar')
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 55d30fd..6e34b75 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -23,20 +23,31 @@
android:allowBackup="true"
android:icon="@mipmap/znzj"
android:label="@string/app_name"
+ android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme">
+ android:theme="@style/AppThemeNoActionBar"
+ android:usesCleartextTraffic="true">
-
+
-
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/EzServiceClient4Android.lic b/app/src/main/assets/EzServiceClient4Android.lic
index 2f9a1c1..15c2e85 100644
--- a/app/src/main/assets/EzServiceClient4Android.lic
+++ b/app/src/main/assets/EzServiceClient4Android.lic
@@ -1,6 +1,6 @@
-f276fd50425e1516bd5fa1183d719e5188c3d196594315e14e003fa87c9edb2c5172bc06037febce58bc0cb093a6f99f46dfdd1ec48d8741353d2fb3aeb83b914b05c17e9431fcbd51ab5f05bc3ad8c850fcb169aa98094bedcae7c1687ed72580026733d8ea16ed193577111f96acf6b2bde5cbc093595fc611830331fd9409b33655b1d1734b525eda690fd3b9a525c6eb82869de321130dfce541c14dd51560d8def56d7363c23e50c539710bdf33c339fc9f70cd66319412b8684a2956e70c0e8a47586e2acfcb0292156ebfe275a48928e4f1fad576cff804a7e6efedac10faa1144f5c734e8fd877466b116dde7587da47d0ec9d851f3649145eef20baf8e55cce84ce5c2c469fee3374049e50e6d7e6badbd6f331ab55c3bc68df8fba9ed026ca69d0989d87dd101747d6d4e078fd972f8ec6372ae6d7e6badbd6f331da0c0ea0953023b21f3649145eef20ba876ec217701656916b67f9fc6bbfcf54e1d71aa6968e0d522edce43a825f8266ce240451cc3d2a6cb5f148d610d02c343fd149b7c6371aab62fcde50ab3874a019de7eb6e745bf9072215ec225e991125323109221ba90946ba59f7d8c7f4a96
-0cfa6c2c5eec924477d4869070a624f6338800b0cceeb3798744936e17f5dbe5ffc65ef9607dd62f7470c2075f59152b424800a6f3c2377ca4679102c0f410ea85fe94939f7b08cfa0c82baad441753322d07953b79a7c68e171ee41ac939ae90e153fef75c459a8acc519bae9a396a3754123ca956f1ccf4ed57fe0619215b3
-3082049030820255308201bea0030201020208485c64d3fba087a9300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3730303230313135333232385a180f32393730303230313135333232385a304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f7420436572746966696361746530819f300d06092a864886f70d010101050003818d00308189028181009467336181f34b81907f72d59f096b9e0bc71ec89dfe4ed3a3ccb9d4b493864d900fc2522ef090364ec86266c160101175fcceed985f2d63f598c915bc2096a1f7d42103a03f4798943a411c094da3e90666307c371c41e13ad19ee7ae54ec56219e9a80995dfd41199c43431764caff8d04c4c999818b8ac02590ffe7d97f390203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414a90da8091835c082a5e696dfe7f34066bfb2d4f7300d06092a864886f70d0101050500038181000c3163614e6017d01d1af63b67524528b37e8df1d999c7963681e0cebaf4c8846c56618723a25d5b0518cd8488422900e00720ba3f9f51c8bdbb18ee0c449a86f7e4abedce5684c6c4a558d7f8ca1e40028f2bf78d386337b0f7774220f89747107fbe4130e4f8dcd3d97019a499d73e183f626be08bd6e8f16b1fec8b6f46b2308202333082019ca003020102020863db91e7a94c1470300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f74204365727469666963617465301e170d3139303832323136303030305a170d3230303232323136303030305a302a310b300906035504061302434e311b301906035504030c12e58c97e4baace5b882e585ace5ae89e5b18030819f300d06092a864886f70d010101050003818d00308189028181009c67407ffc5a2cd8461f605e8ff0d96b4b6f9d09c0d776e1a1f67bd75d78426dd18525c0d4b3a5fc7252cc5c98c285e86785323190ad002882f8ad73e7b2e0cab6429fa0fa9884404ecc44dd0b560d798dd1dc52da219c781042c29d5e952fa9967748f21923611a564692d7f87d7b2c28737a69c8a499ce1e8687e3d599f6cd0203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414e873cba8b05182fcf5b0923afe0f7689466bd69a300d06092a864886f70d01010505000381810064368d80681403ac336e2d56125e057297ee491311ebda1ff5a050fe595cecabb285f3d395b6f5febf4d1e63767502acc922afe2452c68e02064e20c3c26c95c0a3d47cad4fdffbbb1640b6c03a67032d0a97ff4e2c2b3cb0f47327a3a644c2e9b5646af94d217c2eb0004117438cb1a7807707d345c3245a5e8a177ad5f1c35
+2510c4e69e269c8687aa62b975a8602285b31397afcbad497365138451765ed014ce89dd0005f08b90f365c081e38158037fe2a8aeae5765c59631f1a3703ce533f397bd9d5ad479c384a0434c2e8b6efca6442f38f3ddef31070f468b6f254008220ed4d33115dee053e46413d5f5a1ed74661b2e1f433a62ee986573dd22212f8061a1bded6b1ac13c4f0563986bcbe6c8086e15baefa963ba5b634ece82d902e83594c665b521dc7a8fce05122d7ed1573cf995ee331ab3f6d838d365cec76e443ceee1098d1dd011162692a0d3e10daf7ffc9d3de23eab186ad41e3cec6abb18bd091996d6040d8f536ea5e3328bf684c2dcede64a13b8549f1b024834e7f936fb7277d042c89d2f8d473272d0b7ab3024361f9779e03c63ce5f131295dcf0f167b96fb42626bb73792cf055412c069021d40678c09eab3024361f9779e0eea4a46ce6916af2b8549f1b024834e7a4b02eccbf324d7e75d2377fdb6279c8896959ccf251cac44da4194093c886834e28736e937a21e6e2c6054b8490c7542fc1ff3ec1e4a556293b42e4da1aa87dc72d8ca4659b7834cdc0181c4ec3700b233e26b1f9747324075a0a63335cfcef
+4d39594536c496286928e6ca5e8e84aadf7b9c8d59409eb6e7d71d4b5ccd13ade769e96bd98099fe859b394d7572698f43f903af899886cfb54a873b19c7721cc6a20613278b157876401f2a29862c43d8748ac8c967dda527dfbd25923ca9e8183e89dfd88ac818fe94ed03360d7dc5f0a76527d7b82173b8f48a0cc70266a3
+3082049230820255308201bea0030201020208485c64d3fba087a9300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3730303230313135333232385a180f32393730303230313135333232385a304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f7420436572746966696361746530819f300d06092a864886f70d010101050003818d00308189028181009467336181f34b81907f72d59f096b9e0bc71ec89dfe4ed3a3ccb9d4b493864d900fc2522ef090364ec86266c160101175fcceed985f2d63f598c915bc2096a1f7d42103a03f4798943a411c094da3e90666307c371c41e13ad19ee7ae54ec56219e9a80995dfd41199c43431764caff8d04c4c999818b8ac02590ffe7d97f390203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414a90da8091835c082a5e696dfe7f34066bfb2d4f7300d06092a864886f70d0101050500038181000c3163614e6017d01d1af63b67524528b37e8df1d999c7963681e0cebaf4c8846c56618723a25d5b0518cd8488422900e00720ba3f9f51c8bdbb18ee0c449a86f7e4abedce5684c6c4a558d7f8ca1e40028f2bf78d386337b0f7774220f89747107fbe4130e4f8dcd3d97019a499d73e183f626be08bd6e8f16b1fec8b6f46b2308202353082019ea00302010202085a09ebe5b8193320300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3231303431323136303030305a180f32303530303431323136303030305a302a310b300906035504061302434e311b301906035504030c12e58c97e4baace5b882e585ace5ae89e5b18030819f300d06092a864886f70d010101050003818d0030818902818100a9d0c339353cd1747bbcbb1573682de0a41f1c190e6aeb6a8af69e91236c0bfd6e6fec41b287b86ef5d7bd09d3631e34386dc8dd328e18364b3d067bdfb0c64a51de72ac238e026ccb32fc798cc350667fbfbfd3e451d009463ca872a99457499c88c7977e5e9f12118296d825de7febc2813f4e86d5bc96e4b477bf4a22e5bd0203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e041604147499564586404aa44a5ef1ad4b836996fdcb01f3300d06092a864886f70d0101050500038181006b57878916c1a3b8c6c15b7213c5ded9704bb66a59c759a3765194926be4f660fec68a6f7b52ffbb15e580eae637341e0c799a9859760bf463ef44a6263e6dff2ef53cbd4d9fddf79dcd771a84e8ba16ff75fad5bc33b0886d21150503dc2e1f55cda1d729699f6e754be4156db47c45805f16cf430db4a1ada8642f0b3e95c8
diff --git a/app/src/main/java/com/casic/smartwellapp/MainActivity.java b/app/src/main/java/com/casic/smartwellapp/MainActivity.java
index cffa4e1..38bef40 100644
--- a/app/src/main/java/com/casic/smartwellapp/MainActivity.java
+++ b/app/src/main/java/com/casic/smartwellapp/MainActivity.java
@@ -34,7 +34,7 @@
import com.telecomyt.oauthlogin.http.HttpCallback;
import com.telecomyt.oauthlogin.http.HttpOauthCheckUtil;
-import java.io.InputStream;
+import java.lang.reflect.Method;
import java.util.List;
import static com.telecomyt.oauthlogin.config.Config.LOG_TAG;
@@ -47,27 +47,24 @@
private String ip; //ip
private String imei; //imei
private String yys; //运营商
- LoginReturn userInfoResult = null; //单点登录返回的用户信息
- DeviceData deviceData = null; //给用户返回的数据
+ private LoginReturn userInfoResult = null; //单点登录返回的用户信息
+ private DeviceData deviceData = null; //给用户返回的数据
- private String oauth_url = "http://menhu.telecomyt.com.cn:8080/"; //单点登录验证地址
+ private static final String oauth_url = "http://menhu.telecomyt.com.cn:8080/"; //单点登录验证地址
private long exitTime = 0; //点击退出时间
private static final int LOGIN_CODE = 1001;
- public final static int REQUEST_READ_PHONE_STATE = 1;
-
+ public static final int REQUEST_READ_PHONE_STATE = 1;
private String msgId; //推送消息id
private String msgContent; //推送消息内容
-
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- InputStream inStream = null;
try {
Intent intent = new Intent("com.telecomyt.portal.OAUTH");
intent.putExtra("appID", "3pb316_oauth");
@@ -79,8 +76,8 @@
}
// imei = getIMEI(getApplicationContext());
- imei = getDeviceId(MainActivity.this);
-
+// imei = getDeviceId(MainActivity.this);
+ imei = obtainSimCardSerialNumber();//20210524 Pengxh修改
// if (getIntent() != null) {
//// Intent intent = getIntent();
@@ -92,27 +89,27 @@
//webview
// 获取控件对象
- webview = (WebView) findViewById(R.id.WV_ID);
+ webview = findViewById(R.id.WV_ID);
WebView.setWebContentsDebuggingEnabled(true);
- webview.getSettings().setJavaScriptEnabled(true);//设置webView属性,允许运行js脚本
- webview.getSettings().setDomStorageEnabled(true);
- webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
- webview.getSettings().setAppCacheEnabled(true);
- String appCatchPath = getApplicationContext().getCacheDir().getAbsolutePath();
- webview.getSettings().setAppCachePath(appCatchPath);
- webview.getSettings().setAllowFileAccess(true);//可访问文件
- webview.getSettings().setDefaultTextEncodingName("UTF-8");
- webview.getSettings().setAllowUniversalAccessFromFileURLs(true);
+ WebSettings settings = webview.getSettings();
+ settings.setJavaScriptEnabled(true);//设置webView属性,允许运行js脚本
+ settings.setDomStorageEnabled(true);
+ settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
+ settings.setAppCacheEnabled(true);
+ settings.setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath());
+ settings.setAllowFileAccess(true);//可访问文件
+ settings.setDefaultTextEncodingName("UTF-8");
+ settings.setAllowUniversalAccessFromFileURLs(true);
// 设置在当前WebView继续加载网页
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
- System.out.println("in shouldOverrideUrlLoading url");
try {
// 处理自定义scheme协议
if (!url.startsWith("http")) {
+ //处理自定义scheme-->androidamap://viewMap?poiname=W00002&lat=39.9055035111111&lng=116.376759027778
Log.e("scheme", "处理自定义scheme-->" + url);
// 如果要跳转地图
if (url.startsWith("androidamap:")) {
@@ -120,34 +117,38 @@
//获取问号后的参数
String params = url.substring(url.indexOf('?'));
Log.i("map", params);
- if (url.indexOf("?") != -1) {
+ if (url.contains("?")) {
String str = params.substring(1);
String[] strs = str.split("&");
- for (int i = 0; i < strs.length; i++) {
- String name = strs[i].split("=")[0];
- String value = strs[i].split("=")[1];
- if (name.equals("lng")) {
- lng = value;
- } else if (name.equals("lat")) {
- lat = value;
- } else if (name.equals("poiname")) {
- pointname = value;
+ for (String s : strs) {
+ String name = s.split("=")[0];
+ String value = s.split("=")[1];
+ switch (name) {
+ case "lng":
+ lng = value;
+ break;
+ case "lat":
+ lat = value;
+ break;
+ case "poiname":
+ pointname = value;
+ break;
}
}
}
//用原生sdk加载地图
- Intent intent = new Intent();
- intent.putExtra("lng", lng);
- intent.putExtra("lat", lat);
- intent.putExtra("pointname", pointname);
- intent.setClass(MainActivity.this,
- MapInitActivity.class);
- startActivity(intent);
+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O) {
+ Intent intent = new Intent(MainActivity.this, MapInitActivity.class);
+ intent.putExtra("lng", lng);
+ intent.putExtra("lat", lat);
+ intent.putExtra("pointname", pointname);
+ startActivity(intent);
+ } else {
+ Toast.makeText(MainActivity.this, "系统版本过高,地图无法使用", Toast.LENGTH_SHORT).show();
+ }
} else if (url.startsWith("tel:")) {
- final Intent intent = new Intent(Intent.ACTION_VIEW,
- Uri.parse(url));
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
- | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), "未能识别URL!", Toast.LENGTH_SHORT).show();
@@ -171,20 +172,17 @@
}
@Override
- public void onReceivedError(WebView view, int errorCode, String description,
- String failingUrl) {
+ public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
//错误页面
webview.loadUrl("file:///android_asset/error.html");
}
});
-
// 给web提供调用接口
webview.addJavascriptInterface(new WebAppInterface(), "android");
// 加载html文件,欢迎页面
webview.loadUrl("file:///android_asset/hello.html");
-
}
@@ -203,56 +201,53 @@
//单点登录返回
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 100) {
- switch (requestCode) {
- //单点登录页面的返回结果
- case 1001:
- if (data != null) {
- String result = data.getStringExtra("result");
- Log.e(LOG_TAG, "吉安宝验证结果 result === " + result);
- JiAnBaoCheckResult tokenResult = new Gson().fromJson(result, JiAnBaoCheckResult.class);
- if (tokenResult != null) {
- if (tokenResult.isResult()) {
- token = tokenResult.getSubjectDN();
- Log.e(LOG_TAG, "token === " + token);
+ //单点登录页面的返回结果
+ if (requestCode == 1001) {
+ if (data != null) {
+ String result = data.getStringExtra("result");
+ Log.e(LOG_TAG, "吉安宝验证结果 result === " + result);
+ JiAnBaoCheckResult tokenResult = new Gson().fromJson(result, JiAnBaoCheckResult.class);
+ if (tokenResult != null) {
+ if (tokenResult.isResult()) {
+ token = tokenResult.getSubjectDN();
+ Log.e(LOG_TAG, "token === " + token);
// webview.loadUrl("file:///android_asset/index.html?token="+token);
- if (!TextUtils.isEmpty(token)) {
- HttpOauthCheckUtil.getInstance().getUserInfo(oauth_url, token, new HttpCallback() {
- @Override
- public void onSuccess(String result) {
- Toast.makeText(getApplicationContext(), "认证通过,欢迎使用",
- Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "门户验证结果 === " + result);
- userInfoResult = new Gson().fromJson(result, LoginReturn.class);
- yys = getYys(getApplicationContext());
- String name = userInfoResult.getData().getName();
- String identifyCard = userInfoResult.getData().getIdentityCard();
- deviceData = new DeviceData(name, identifyCard, yys, imei);
- Log.i("deviceData", deviceData.toString());
- webview.loadUrl("file:///android_asset/index.html");
- }
+ if (!TextUtils.isEmpty(token)) {
+ HttpOauthCheckUtil.getInstance().getUserInfo(oauth_url, token, new HttpCallback() {
+ @Override
+ public void onSuccess(String result) {
+ Toast.makeText(getApplicationContext(), "认证通过,欢迎使用",
+ Toast.LENGTH_SHORT).show();
+ Log.e(LOG_TAG, "门户验证结果 === " + result);
+ userInfoResult = new Gson().fromJson(result, LoginReturn.class);
+ yys = getYys(getApplicationContext());
+ String name = userInfoResult.getData().getName();
+ String identifyCard = userInfoResult.getData().getIdentityCard();
+ deviceData = new DeviceData(name, identifyCard, yys, imei);
+ Log.i("deviceData", deviceData.toString());
+ webview.loadUrl("file:///android_asset/index.html");
+ }
- @Override
- public void onFailed(String err) {
- Log.e(LOG_TAG, "错误信息 === " + err);
- Toast.makeText(getApplicationContext(), err,
- Toast.LENGTH_SHORT).show();
- }
- });
- }
- } else {
- //吉安宝认证失败
- Toast.makeText(getApplicationContext(), "吉安宝认证失败",
- Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "吉安宝认证失败 ");
+ @Override
+ public void onFailed(String err) {
+ Log.e(LOG_TAG, "错误信息 === " + err);
+ Toast.makeText(getApplicationContext(), err,
+ Toast.LENGTH_SHORT).show();
+ }
+ });
}
} else {
- Toast.makeText(getApplicationContext(), "请检查网络",
+ //吉安宝认证失败
+ Toast.makeText(getApplicationContext(), "吉安宝认证失败",
Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "请检查网络");
+ Log.e(LOG_TAG, "吉安宝认证失败 ");
}
+ } else {
+ Toast.makeText(getApplicationContext(), "请检查网络",
+ Toast.LENGTH_SHORT).show();
+ Log.e(LOG_TAG, "请检查网络");
}
- default:
- break;
+ }
}
}
// if (requestCode == LOGIN_CODE && resultCode == 100) { // resultCode 固定为100
@@ -277,13 +272,11 @@
@Override
public void onBackPressed() {
Log.i("webUrl", "webviewUrl" + webview.getUrl());
- if (webview.canGoBack() && !webview.getUrl().endsWith("/#/")
- && !webview.getUrl().endsWith("/#/login")) {
+ if (webview.canGoBack() && !webview.getUrl().endsWith("/#/") && !webview.getUrl().endsWith("/#/login")) {
webview.goBack();
} else {
if ((System.currentTimeMillis() - exitTime) > 2000) {
- Toast.makeText(getApplicationContext(), "再按一次退出程序",
- Toast.LENGTH_SHORT).show();
+ Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
super.onBackPressed();
@@ -299,22 +292,20 @@
Log.i("JSON:", json);
return json;
} else {
- String json = "";
- return json;
+ return "";
}
}
@JavascriptInterface
public String getAuth() {
// 返回token
- if (token != null && token != "") {
+ if (token != null && !token.equals("")) {
Toast.makeText(getApplicationContext(), "获取用户权限", Toast.LENGTH_SHORT).show();
return token;
} else {
return null;
}
}
-
}
//获取运营商
@@ -366,5 +357,38 @@
}
return deviceId;
}
+
+ //获取SimSerialNumber
+ @SuppressLint({"HardwareIds"})
+ public String obtainSimCardSerialNumber() {
+ if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+ //Android 10改为获取Android_ID
+ return Settings.System.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
+ } else {
+ TelephonyManager telephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
+ Class> telephonyClass;
+ try {
+ telephonyClass = Class.forName(telephony.getClass().getName());
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE_STATE);
+ }
+ //Android 10以下默认获取deviceId,部分手机获取不到deviceId不到的改为获取sim卡串码,如果依旧获取不到,返回""
+ String imei = telephony.getDeviceId();
+ if (TextUtils.isEmpty(imei)) {
+ Method m = telephonyClass.getMethod("getSimSerialNumber", int.class);
+ //主卡,卡1
+ String mainCard = (String) m.invoke(telephony, 0);
+ //副卡,卡2
+ String otherCard = (String) m.invoke(telephony, 1);
+ return mainCard;
+ } else {
+ return imei;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return "";
+ }
}
diff --git a/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java b/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java
index 1fa8471..ffe3784 100644
--- a/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java
+++ b/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java
@@ -1,12 +1,16 @@
package com.casic.smartwellapp;
+import android.Manifest;
import android.app.Activity;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.TextView;
+import androidx.core.app.ActivityCompat;
+
import com.casic.smartwellapp.Entity.Constant;
import com.easymap.android.maps.v3.EzMap;
import com.easymap.android.maps.v3.EzMap.OnStatusChangeListener;
@@ -20,23 +24,19 @@
import com.easymap.android.maps.v3.layers.ogc.WMTSLayer;
import com.easymap.android.maps.v3.layers.ogc.WMTSLayerInfo;
+import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
public class MapInitActivity extends Activity implements OnStatusChangeListener {
+
+ public static final int REQUEST_PERMISSION = 11;
private MapView mapView;
- private EzMap ezMap;
- private TextView textview;
- private WMTSLayer wmtstdt;
- private WMTSLayerInfo wmtslayerinfo;
- private Marker marker;
private String lng;
private String lat;
private String pointname;
- private GraphicsLayer graphicslayer;
- private BitmapDescriptor iconcircle;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -47,7 +47,7 @@
lng = i.getStringExtra("lng");
lat = i.getStringExtra("lat");
pointname = i.getStringExtra("pointname");
- mapView = (MapView) findViewById(R.id.MapView);
+ mapView = findViewById(R.id.MapView);
if (mapView != null) {
// 注册地图准备就绪监听
mapView.setOnStatusChangeListener(this);
@@ -60,54 +60,77 @@
inStream = getResources().getAssets().open("EzServiceClient4Android.lic");
// inStream = new FileInputStream(file);
} catch (FileNotFoundException e) {
- Log.e("mapError", "fileNotFoundException");
e.printStackTrace();
} catch (IOException e) {
- Log.e("mapError", "streamFileNotFoundException");
e.printStackTrace();
}
// 初始化许可方法
- mapView.initLicenseAsDevelopement(inStream);
+// mapView.initLicenseAsDevelopement(inStream);
+ mapView.initLicense(getAssetsData("EzServiceClient4Android.lic"));//20210525 Pengxh修改
mapView.onCreate(getApplication(), savedInstanceState);
-
-
}
}
@Override
public void onStatusChanged(STATUS arg0) {
- textview = (TextView) findViewById(R.id.textview);
+ TextView textview = findViewById(R.id.textview);
textview.setText(pointname);
// 得到地图对象
- ezMap = mapView.getMap();
+ EzMap ezMap = mapView.getMap();
// 设置地图中心点
- ezMap.centerAt(new GeoPoint(Double.valueOf(lng), Double.valueOf(lat)), false);
+ ezMap.centerAt(new GeoPoint(Double.parseDouble(lng), Double.parseDouble(lat)), false);
// 设置地图级别
ezMap.zoomTo(16, false);
- wmtslayerinfo = new WMTSLayerInfo();
+ WMTSLayerInfo wmtslayerinfo = new WMTSLayerInfo();
wmtslayerinfo.setVersion("1.0.0");
wmtslayerinfo.setFormat("tiles");
wmtslayerinfo.setStyle("default");
wmtslayerinfo.setLayerName("gdsl");
wmtslayerinfo.setTileMatrixSet("c");
// 实例化WMTSLayer 地图
- wmtstdt = new WMTSLayer("http://20.1.12.48/EzServer/Maps/gdsl",
- wmtslayerinfo, "tdt_vec.cache", Environment.getExternalStorageDirectory()
- + "/EzMap/st");
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_PERMISSION);
+ }
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION);
+ }
+ WMTSLayer wmtstdt = new WMTSLayer("http://20.1.12.48/EzServer/Maps/gdsl", wmtslayerinfo,
+ "tdt_vec.cache",
+ Environment.getExternalStorageDirectory() + "/EzMap/st");
ezMap.addLayer(wmtstdt);
- graphicslayer = new GraphicsLayer(SpatialReference.create(4326),
- ezMap.getExtent());
- iconcircle = BitmapDescriptorFactory.defaultMarker();
+ GraphicsLayer graphicslayer = new GraphicsLayer(SpatialReference.create(4326), ezMap.getExtent());
+ BitmapDescriptor iconCircle = BitmapDescriptorFactory.defaultMarker();
ezMap.addLayer(graphicslayer);
// 根据点的位置创建一个Marker的实例
- marker = new Marker(new GeoPoint(Double.valueOf(lng), Double.valueOf(lat)), iconcircle, 0.5f, 0.5f);
-// 将marker添加到图层中
+ Marker marker = new Marker(new GeoPoint(Double.parseDouble(lng), Double.parseDouble(lat)), iconCircle, 0.5f, 0.5f);
+ // 将marker添加到图层中
graphicslayer.addGraphic(marker);
ezMap.refreshMap();
-
-
}
+ /**
+ * 获取本地Asserts文件内容
+ */
+ public String getAssetsData(String fileName) {
+ try {
+ InputStreamReader inputStreamReader = new InputStreamReader(getAssets().open(fileName));
+ BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
+ StringBuilder data = new StringBuilder();
+ String s;
+ try {
+ while ((s = bufferedReader.readLine()) != null) {
+ data.append(s);
+ }
+ Log.d("map", "getAssetsData: " + data);
+ return data.toString();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
}
diff --git a/app/src/main/res/layout/activity_map_init.xml b/app/src/main/res/layout/activity_map_init.xml
index d621149..622144f 100644
--- a/app/src/main/res/layout/activity_map_init.xml
+++ b/app/src/main/res/layout/activity_map_init.xml
@@ -1,21 +1,22 @@
-
-
-
+ android:orientation="vertical">
+
+
+
+
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..146ab09
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ 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/build.gradle b/app/build.gradle
index 9e9754c..fa31bc0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,13 +2,13 @@
android {
compileSdkVersion 29
- buildToolsVersion "29.0.1"
+ buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.casic.smartwellapp"
minSdkVersion 17
targetSdkVersion 29
- versionCode 6
- versionName "1.1"
+ versionCode 7
+ versionName "v1.1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
@@ -42,8 +42,8 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
- implementation 'androidx.appcompat:appcompat:1.0.2'
- implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
@@ -51,7 +51,7 @@
implementation 'com.lbx:xTools:2.1.2'
implementation 'org.bouncycastle:bcmail-jdk15on:1.59'
implementation 'org.apache.commons:commons-lang3:3.1'
- implementation 'com.alibaba:fastjson:1.2.12'
+ implementation 'com.alibaba:fastjson:1.2.68'
implementation files('libs/guava-17.0.jar')
implementation files('libs/androidsvg-1.2.2-beta-1.jar')
implementation files('libs/EzLicenseAPI4Android.jar')
@@ -62,5 +62,4 @@
implementation files('libs/kxml2-2.3.0.jar')
implementation files('libs/jackson-mapper-lgpl-1.9.5.jar')
implementation files('libs/jackson-core-lgpl-1.9.5.jar')
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 55d30fd..6e34b75 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -23,20 +23,31 @@
android:allowBackup="true"
android:icon="@mipmap/znzj"
android:label="@string/app_name"
+ android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme">
+ android:theme="@style/AppThemeNoActionBar"
+ android:usesCleartextTraffic="true">
-
+
-
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/EzServiceClient4Android.lic b/app/src/main/assets/EzServiceClient4Android.lic
index 2f9a1c1..15c2e85 100644
--- a/app/src/main/assets/EzServiceClient4Android.lic
+++ b/app/src/main/assets/EzServiceClient4Android.lic
@@ -1,6 +1,6 @@
-f276fd50425e1516bd5fa1183d719e5188c3d196594315e14e003fa87c9edb2c5172bc06037febce58bc0cb093a6f99f46dfdd1ec48d8741353d2fb3aeb83b914b05c17e9431fcbd51ab5f05bc3ad8c850fcb169aa98094bedcae7c1687ed72580026733d8ea16ed193577111f96acf6b2bde5cbc093595fc611830331fd9409b33655b1d1734b525eda690fd3b9a525c6eb82869de321130dfce541c14dd51560d8def56d7363c23e50c539710bdf33c339fc9f70cd66319412b8684a2956e70c0e8a47586e2acfcb0292156ebfe275a48928e4f1fad576cff804a7e6efedac10faa1144f5c734e8fd877466b116dde7587da47d0ec9d851f3649145eef20baf8e55cce84ce5c2c469fee3374049e50e6d7e6badbd6f331ab55c3bc68df8fba9ed026ca69d0989d87dd101747d6d4e078fd972f8ec6372ae6d7e6badbd6f331da0c0ea0953023b21f3649145eef20ba876ec217701656916b67f9fc6bbfcf54e1d71aa6968e0d522edce43a825f8266ce240451cc3d2a6cb5f148d610d02c343fd149b7c6371aab62fcde50ab3874a019de7eb6e745bf9072215ec225e991125323109221ba90946ba59f7d8c7f4a96
-0cfa6c2c5eec924477d4869070a624f6338800b0cceeb3798744936e17f5dbe5ffc65ef9607dd62f7470c2075f59152b424800a6f3c2377ca4679102c0f410ea85fe94939f7b08cfa0c82baad441753322d07953b79a7c68e171ee41ac939ae90e153fef75c459a8acc519bae9a396a3754123ca956f1ccf4ed57fe0619215b3
-3082049030820255308201bea0030201020208485c64d3fba087a9300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3730303230313135333232385a180f32393730303230313135333232385a304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f7420436572746966696361746530819f300d06092a864886f70d010101050003818d00308189028181009467336181f34b81907f72d59f096b9e0bc71ec89dfe4ed3a3ccb9d4b493864d900fc2522ef090364ec86266c160101175fcceed985f2d63f598c915bc2096a1f7d42103a03f4798943a411c094da3e90666307c371c41e13ad19ee7ae54ec56219e9a80995dfd41199c43431764caff8d04c4c999818b8ac02590ffe7d97f390203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414a90da8091835c082a5e696dfe7f34066bfb2d4f7300d06092a864886f70d0101050500038181000c3163614e6017d01d1af63b67524528b37e8df1d999c7963681e0cebaf4c8846c56618723a25d5b0518cd8488422900e00720ba3f9f51c8bdbb18ee0c449a86f7e4abedce5684c6c4a558d7f8ca1e40028f2bf78d386337b0f7774220f89747107fbe4130e4f8dcd3d97019a499d73e183f626be08bd6e8f16b1fec8b6f46b2308202333082019ca003020102020863db91e7a94c1470300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f74204365727469666963617465301e170d3139303832323136303030305a170d3230303232323136303030305a302a310b300906035504061302434e311b301906035504030c12e58c97e4baace5b882e585ace5ae89e5b18030819f300d06092a864886f70d010101050003818d00308189028181009c67407ffc5a2cd8461f605e8ff0d96b4b6f9d09c0d776e1a1f67bd75d78426dd18525c0d4b3a5fc7252cc5c98c285e86785323190ad002882f8ad73e7b2e0cab6429fa0fa9884404ecc44dd0b560d798dd1dc52da219c781042c29d5e952fa9967748f21923611a564692d7f87d7b2c28737a69c8a499ce1e8687e3d599f6cd0203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414e873cba8b05182fcf5b0923afe0f7689466bd69a300d06092a864886f70d01010505000381810064368d80681403ac336e2d56125e057297ee491311ebda1ff5a050fe595cecabb285f3d395b6f5febf4d1e63767502acc922afe2452c68e02064e20c3c26c95c0a3d47cad4fdffbbb1640b6c03a67032d0a97ff4e2c2b3cb0f47327a3a644c2e9b5646af94d217c2eb0004117438cb1a7807707d345c3245a5e8a177ad5f1c35
+2510c4e69e269c8687aa62b975a8602285b31397afcbad497365138451765ed014ce89dd0005f08b90f365c081e38158037fe2a8aeae5765c59631f1a3703ce533f397bd9d5ad479c384a0434c2e8b6efca6442f38f3ddef31070f468b6f254008220ed4d33115dee053e46413d5f5a1ed74661b2e1f433a62ee986573dd22212f8061a1bded6b1ac13c4f0563986bcbe6c8086e15baefa963ba5b634ece82d902e83594c665b521dc7a8fce05122d7ed1573cf995ee331ab3f6d838d365cec76e443ceee1098d1dd011162692a0d3e10daf7ffc9d3de23eab186ad41e3cec6abb18bd091996d6040d8f536ea5e3328bf684c2dcede64a13b8549f1b024834e7f936fb7277d042c89d2f8d473272d0b7ab3024361f9779e03c63ce5f131295dcf0f167b96fb42626bb73792cf055412c069021d40678c09eab3024361f9779e0eea4a46ce6916af2b8549f1b024834e7a4b02eccbf324d7e75d2377fdb6279c8896959ccf251cac44da4194093c886834e28736e937a21e6e2c6054b8490c7542fc1ff3ec1e4a556293b42e4da1aa87dc72d8ca4659b7834cdc0181c4ec3700b233e26b1f9747324075a0a63335cfcef
+4d39594536c496286928e6ca5e8e84aadf7b9c8d59409eb6e7d71d4b5ccd13ade769e96bd98099fe859b394d7572698f43f903af899886cfb54a873b19c7721cc6a20613278b157876401f2a29862c43d8748ac8c967dda527dfbd25923ca9e8183e89dfd88ac818fe94ed03360d7dc5f0a76527d7b82173b8f48a0cc70266a3
+3082049230820255308201bea0030201020208485c64d3fba087a9300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3730303230313135333232385a180f32393730303230313135333232385a304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f7420436572746966696361746530819f300d06092a864886f70d010101050003818d00308189028181009467336181f34b81907f72d59f096b9e0bc71ec89dfe4ed3a3ccb9d4b493864d900fc2522ef090364ec86266c160101175fcceed985f2d63f598c915bc2096a1f7d42103a03f4798943a411c094da3e90666307c371c41e13ad19ee7ae54ec56219e9a80995dfd41199c43431764caff8d04c4c999818b8ac02590ffe7d97f390203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414a90da8091835c082a5e696dfe7f34066bfb2d4f7300d06092a864886f70d0101050500038181000c3163614e6017d01d1af63b67524528b37e8df1d999c7963681e0cebaf4c8846c56618723a25d5b0518cd8488422900e00720ba3f9f51c8bdbb18ee0c449a86f7e4abedce5684c6c4a558d7f8ca1e40028f2bf78d386337b0f7774220f89747107fbe4130e4f8dcd3d97019a499d73e183f626be08bd6e8f16b1fec8b6f46b2308202353082019ea00302010202085a09ebe5b8193320300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3231303431323136303030305a180f32303530303431323136303030305a302a310b300906035504061302434e311b301906035504030c12e58c97e4baace5b882e585ace5ae89e5b18030819f300d06092a864886f70d010101050003818d0030818902818100a9d0c339353cd1747bbcbb1573682de0a41f1c190e6aeb6a8af69e91236c0bfd6e6fec41b287b86ef5d7bd09d3631e34386dc8dd328e18364b3d067bdfb0c64a51de72ac238e026ccb32fc798cc350667fbfbfd3e451d009463ca872a99457499c88c7977e5e9f12118296d825de7febc2813f4e86d5bc96e4b477bf4a22e5bd0203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e041604147499564586404aa44a5ef1ad4b836996fdcb01f3300d06092a864886f70d0101050500038181006b57878916c1a3b8c6c15b7213c5ded9704bb66a59c759a3765194926be4f660fec68a6f7b52ffbb15e580eae637341e0c799a9859760bf463ef44a6263e6dff2ef53cbd4d9fddf79dcd771a84e8ba16ff75fad5bc33b0886d21150503dc2e1f55cda1d729699f6e754be4156db47c45805f16cf430db4a1ada8642f0b3e95c8
diff --git a/app/src/main/java/com/casic/smartwellapp/MainActivity.java b/app/src/main/java/com/casic/smartwellapp/MainActivity.java
index cffa4e1..38bef40 100644
--- a/app/src/main/java/com/casic/smartwellapp/MainActivity.java
+++ b/app/src/main/java/com/casic/smartwellapp/MainActivity.java
@@ -34,7 +34,7 @@
import com.telecomyt.oauthlogin.http.HttpCallback;
import com.telecomyt.oauthlogin.http.HttpOauthCheckUtil;
-import java.io.InputStream;
+import java.lang.reflect.Method;
import java.util.List;
import static com.telecomyt.oauthlogin.config.Config.LOG_TAG;
@@ -47,27 +47,24 @@
private String ip; //ip
private String imei; //imei
private String yys; //运营商
- LoginReturn userInfoResult = null; //单点登录返回的用户信息
- DeviceData deviceData = null; //给用户返回的数据
+ private LoginReturn userInfoResult = null; //单点登录返回的用户信息
+ private DeviceData deviceData = null; //给用户返回的数据
- private String oauth_url = "http://menhu.telecomyt.com.cn:8080/"; //单点登录验证地址
+ private static final String oauth_url = "http://menhu.telecomyt.com.cn:8080/"; //单点登录验证地址
private long exitTime = 0; //点击退出时间
private static final int LOGIN_CODE = 1001;
- public final static int REQUEST_READ_PHONE_STATE = 1;
-
+ public static final int REQUEST_READ_PHONE_STATE = 1;
private String msgId; //推送消息id
private String msgContent; //推送消息内容
-
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- InputStream inStream = null;
try {
Intent intent = new Intent("com.telecomyt.portal.OAUTH");
intent.putExtra("appID", "3pb316_oauth");
@@ -79,8 +76,8 @@
}
// imei = getIMEI(getApplicationContext());
- imei = getDeviceId(MainActivity.this);
-
+// imei = getDeviceId(MainActivity.this);
+ imei = obtainSimCardSerialNumber();//20210524 Pengxh修改
// if (getIntent() != null) {
//// Intent intent = getIntent();
@@ -92,27 +89,27 @@
//webview
// 获取控件对象
- webview = (WebView) findViewById(R.id.WV_ID);
+ webview = findViewById(R.id.WV_ID);
WebView.setWebContentsDebuggingEnabled(true);
- webview.getSettings().setJavaScriptEnabled(true);//设置webView属性,允许运行js脚本
- webview.getSettings().setDomStorageEnabled(true);
- webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
- webview.getSettings().setAppCacheEnabled(true);
- String appCatchPath = getApplicationContext().getCacheDir().getAbsolutePath();
- webview.getSettings().setAppCachePath(appCatchPath);
- webview.getSettings().setAllowFileAccess(true);//可访问文件
- webview.getSettings().setDefaultTextEncodingName("UTF-8");
- webview.getSettings().setAllowUniversalAccessFromFileURLs(true);
+ WebSettings settings = webview.getSettings();
+ settings.setJavaScriptEnabled(true);//设置webView属性,允许运行js脚本
+ settings.setDomStorageEnabled(true);
+ settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
+ settings.setAppCacheEnabled(true);
+ settings.setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath());
+ settings.setAllowFileAccess(true);//可访问文件
+ settings.setDefaultTextEncodingName("UTF-8");
+ settings.setAllowUniversalAccessFromFileURLs(true);
// 设置在当前WebView继续加载网页
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
- System.out.println("in shouldOverrideUrlLoading url");
try {
// 处理自定义scheme协议
if (!url.startsWith("http")) {
+ //处理自定义scheme-->androidamap://viewMap?poiname=W00002&lat=39.9055035111111&lng=116.376759027778
Log.e("scheme", "处理自定义scheme-->" + url);
// 如果要跳转地图
if (url.startsWith("androidamap:")) {
@@ -120,34 +117,38 @@
//获取问号后的参数
String params = url.substring(url.indexOf('?'));
Log.i("map", params);
- if (url.indexOf("?") != -1) {
+ if (url.contains("?")) {
String str = params.substring(1);
String[] strs = str.split("&");
- for (int i = 0; i < strs.length; i++) {
- String name = strs[i].split("=")[0];
- String value = strs[i].split("=")[1];
- if (name.equals("lng")) {
- lng = value;
- } else if (name.equals("lat")) {
- lat = value;
- } else if (name.equals("poiname")) {
- pointname = value;
+ for (String s : strs) {
+ String name = s.split("=")[0];
+ String value = s.split("=")[1];
+ switch (name) {
+ case "lng":
+ lng = value;
+ break;
+ case "lat":
+ lat = value;
+ break;
+ case "poiname":
+ pointname = value;
+ break;
}
}
}
//用原生sdk加载地图
- Intent intent = new Intent();
- intent.putExtra("lng", lng);
- intent.putExtra("lat", lat);
- intent.putExtra("pointname", pointname);
- intent.setClass(MainActivity.this,
- MapInitActivity.class);
- startActivity(intent);
+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O) {
+ Intent intent = new Intent(MainActivity.this, MapInitActivity.class);
+ intent.putExtra("lng", lng);
+ intent.putExtra("lat", lat);
+ intent.putExtra("pointname", pointname);
+ startActivity(intent);
+ } else {
+ Toast.makeText(MainActivity.this, "系统版本过高,地图无法使用", Toast.LENGTH_SHORT).show();
+ }
} else if (url.startsWith("tel:")) {
- final Intent intent = new Intent(Intent.ACTION_VIEW,
- Uri.parse(url));
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
- | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), "未能识别URL!", Toast.LENGTH_SHORT).show();
@@ -171,20 +172,17 @@
}
@Override
- public void onReceivedError(WebView view, int errorCode, String description,
- String failingUrl) {
+ public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
//错误页面
webview.loadUrl("file:///android_asset/error.html");
}
});
-
// 给web提供调用接口
webview.addJavascriptInterface(new WebAppInterface(), "android");
// 加载html文件,欢迎页面
webview.loadUrl("file:///android_asset/hello.html");
-
}
@@ -203,56 +201,53 @@
//单点登录返回
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 100) {
- switch (requestCode) {
- //单点登录页面的返回结果
- case 1001:
- if (data != null) {
- String result = data.getStringExtra("result");
- Log.e(LOG_TAG, "吉安宝验证结果 result === " + result);
- JiAnBaoCheckResult tokenResult = new Gson().fromJson(result, JiAnBaoCheckResult.class);
- if (tokenResult != null) {
- if (tokenResult.isResult()) {
- token = tokenResult.getSubjectDN();
- Log.e(LOG_TAG, "token === " + token);
+ //单点登录页面的返回结果
+ if (requestCode == 1001) {
+ if (data != null) {
+ String result = data.getStringExtra("result");
+ Log.e(LOG_TAG, "吉安宝验证结果 result === " + result);
+ JiAnBaoCheckResult tokenResult = new Gson().fromJson(result, JiAnBaoCheckResult.class);
+ if (tokenResult != null) {
+ if (tokenResult.isResult()) {
+ token = tokenResult.getSubjectDN();
+ Log.e(LOG_TAG, "token === " + token);
// webview.loadUrl("file:///android_asset/index.html?token="+token);
- if (!TextUtils.isEmpty(token)) {
- HttpOauthCheckUtil.getInstance().getUserInfo(oauth_url, token, new HttpCallback() {
- @Override
- public void onSuccess(String result) {
- Toast.makeText(getApplicationContext(), "认证通过,欢迎使用",
- Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "门户验证结果 === " + result);
- userInfoResult = new Gson().fromJson(result, LoginReturn.class);
- yys = getYys(getApplicationContext());
- String name = userInfoResult.getData().getName();
- String identifyCard = userInfoResult.getData().getIdentityCard();
- deviceData = new DeviceData(name, identifyCard, yys, imei);
- Log.i("deviceData", deviceData.toString());
- webview.loadUrl("file:///android_asset/index.html");
- }
+ if (!TextUtils.isEmpty(token)) {
+ HttpOauthCheckUtil.getInstance().getUserInfo(oauth_url, token, new HttpCallback() {
+ @Override
+ public void onSuccess(String result) {
+ Toast.makeText(getApplicationContext(), "认证通过,欢迎使用",
+ Toast.LENGTH_SHORT).show();
+ Log.e(LOG_TAG, "门户验证结果 === " + result);
+ userInfoResult = new Gson().fromJson(result, LoginReturn.class);
+ yys = getYys(getApplicationContext());
+ String name = userInfoResult.getData().getName();
+ String identifyCard = userInfoResult.getData().getIdentityCard();
+ deviceData = new DeviceData(name, identifyCard, yys, imei);
+ Log.i("deviceData", deviceData.toString());
+ webview.loadUrl("file:///android_asset/index.html");
+ }
- @Override
- public void onFailed(String err) {
- Log.e(LOG_TAG, "错误信息 === " + err);
- Toast.makeText(getApplicationContext(), err,
- Toast.LENGTH_SHORT).show();
- }
- });
- }
- } else {
- //吉安宝认证失败
- Toast.makeText(getApplicationContext(), "吉安宝认证失败",
- Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "吉安宝认证失败 ");
+ @Override
+ public void onFailed(String err) {
+ Log.e(LOG_TAG, "错误信息 === " + err);
+ Toast.makeText(getApplicationContext(), err,
+ Toast.LENGTH_SHORT).show();
+ }
+ });
}
} else {
- Toast.makeText(getApplicationContext(), "请检查网络",
+ //吉安宝认证失败
+ Toast.makeText(getApplicationContext(), "吉安宝认证失败",
Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "请检查网络");
+ Log.e(LOG_TAG, "吉安宝认证失败 ");
}
+ } else {
+ Toast.makeText(getApplicationContext(), "请检查网络",
+ Toast.LENGTH_SHORT).show();
+ Log.e(LOG_TAG, "请检查网络");
}
- default:
- break;
+ }
}
}
// if (requestCode == LOGIN_CODE && resultCode == 100) { // resultCode 固定为100
@@ -277,13 +272,11 @@
@Override
public void onBackPressed() {
Log.i("webUrl", "webviewUrl" + webview.getUrl());
- if (webview.canGoBack() && !webview.getUrl().endsWith("/#/")
- && !webview.getUrl().endsWith("/#/login")) {
+ if (webview.canGoBack() && !webview.getUrl().endsWith("/#/") && !webview.getUrl().endsWith("/#/login")) {
webview.goBack();
} else {
if ((System.currentTimeMillis() - exitTime) > 2000) {
- Toast.makeText(getApplicationContext(), "再按一次退出程序",
- Toast.LENGTH_SHORT).show();
+ Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
super.onBackPressed();
@@ -299,22 +292,20 @@
Log.i("JSON:", json);
return json;
} else {
- String json = "";
- return json;
+ return "";
}
}
@JavascriptInterface
public String getAuth() {
// 返回token
- if (token != null && token != "") {
+ if (token != null && !token.equals("")) {
Toast.makeText(getApplicationContext(), "获取用户权限", Toast.LENGTH_SHORT).show();
return token;
} else {
return null;
}
}
-
}
//获取运营商
@@ -366,5 +357,38 @@
}
return deviceId;
}
+
+ //获取SimSerialNumber
+ @SuppressLint({"HardwareIds"})
+ public String obtainSimCardSerialNumber() {
+ if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+ //Android 10改为获取Android_ID
+ return Settings.System.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
+ } else {
+ TelephonyManager telephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
+ Class> telephonyClass;
+ try {
+ telephonyClass = Class.forName(telephony.getClass().getName());
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE_STATE);
+ }
+ //Android 10以下默认获取deviceId,部分手机获取不到deviceId不到的改为获取sim卡串码,如果依旧获取不到,返回""
+ String imei = telephony.getDeviceId();
+ if (TextUtils.isEmpty(imei)) {
+ Method m = telephonyClass.getMethod("getSimSerialNumber", int.class);
+ //主卡,卡1
+ String mainCard = (String) m.invoke(telephony, 0);
+ //副卡,卡2
+ String otherCard = (String) m.invoke(telephony, 1);
+ return mainCard;
+ } else {
+ return imei;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return "";
+ }
}
diff --git a/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java b/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java
index 1fa8471..ffe3784 100644
--- a/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java
+++ b/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java
@@ -1,12 +1,16 @@
package com.casic.smartwellapp;
+import android.Manifest;
import android.app.Activity;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.TextView;
+import androidx.core.app.ActivityCompat;
+
import com.casic.smartwellapp.Entity.Constant;
import com.easymap.android.maps.v3.EzMap;
import com.easymap.android.maps.v3.EzMap.OnStatusChangeListener;
@@ -20,23 +24,19 @@
import com.easymap.android.maps.v3.layers.ogc.WMTSLayer;
import com.easymap.android.maps.v3.layers.ogc.WMTSLayerInfo;
+import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
public class MapInitActivity extends Activity implements OnStatusChangeListener {
+
+ public static final int REQUEST_PERMISSION = 11;
private MapView mapView;
- private EzMap ezMap;
- private TextView textview;
- private WMTSLayer wmtstdt;
- private WMTSLayerInfo wmtslayerinfo;
- private Marker marker;
private String lng;
private String lat;
private String pointname;
- private GraphicsLayer graphicslayer;
- private BitmapDescriptor iconcircle;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -47,7 +47,7 @@
lng = i.getStringExtra("lng");
lat = i.getStringExtra("lat");
pointname = i.getStringExtra("pointname");
- mapView = (MapView) findViewById(R.id.MapView);
+ mapView = findViewById(R.id.MapView);
if (mapView != null) {
// 注册地图准备就绪监听
mapView.setOnStatusChangeListener(this);
@@ -60,54 +60,77 @@
inStream = getResources().getAssets().open("EzServiceClient4Android.lic");
// inStream = new FileInputStream(file);
} catch (FileNotFoundException e) {
- Log.e("mapError", "fileNotFoundException");
e.printStackTrace();
} catch (IOException e) {
- Log.e("mapError", "streamFileNotFoundException");
e.printStackTrace();
}
// 初始化许可方法
- mapView.initLicenseAsDevelopement(inStream);
+// mapView.initLicenseAsDevelopement(inStream);
+ mapView.initLicense(getAssetsData("EzServiceClient4Android.lic"));//20210525 Pengxh修改
mapView.onCreate(getApplication(), savedInstanceState);
-
-
}
}
@Override
public void onStatusChanged(STATUS arg0) {
- textview = (TextView) findViewById(R.id.textview);
+ TextView textview = findViewById(R.id.textview);
textview.setText(pointname);
// 得到地图对象
- ezMap = mapView.getMap();
+ EzMap ezMap = mapView.getMap();
// 设置地图中心点
- ezMap.centerAt(new GeoPoint(Double.valueOf(lng), Double.valueOf(lat)), false);
+ ezMap.centerAt(new GeoPoint(Double.parseDouble(lng), Double.parseDouble(lat)), false);
// 设置地图级别
ezMap.zoomTo(16, false);
- wmtslayerinfo = new WMTSLayerInfo();
+ WMTSLayerInfo wmtslayerinfo = new WMTSLayerInfo();
wmtslayerinfo.setVersion("1.0.0");
wmtslayerinfo.setFormat("tiles");
wmtslayerinfo.setStyle("default");
wmtslayerinfo.setLayerName("gdsl");
wmtslayerinfo.setTileMatrixSet("c");
// 实例化WMTSLayer 地图
- wmtstdt = new WMTSLayer("http://20.1.12.48/EzServer/Maps/gdsl",
- wmtslayerinfo, "tdt_vec.cache", Environment.getExternalStorageDirectory()
- + "/EzMap/st");
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_PERMISSION);
+ }
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION);
+ }
+ WMTSLayer wmtstdt = new WMTSLayer("http://20.1.12.48/EzServer/Maps/gdsl", wmtslayerinfo,
+ "tdt_vec.cache",
+ Environment.getExternalStorageDirectory() + "/EzMap/st");
ezMap.addLayer(wmtstdt);
- graphicslayer = new GraphicsLayer(SpatialReference.create(4326),
- ezMap.getExtent());
- iconcircle = BitmapDescriptorFactory.defaultMarker();
+ GraphicsLayer graphicslayer = new GraphicsLayer(SpatialReference.create(4326), ezMap.getExtent());
+ BitmapDescriptor iconCircle = BitmapDescriptorFactory.defaultMarker();
ezMap.addLayer(graphicslayer);
// 根据点的位置创建一个Marker的实例
- marker = new Marker(new GeoPoint(Double.valueOf(lng), Double.valueOf(lat)), iconcircle, 0.5f, 0.5f);
-// 将marker添加到图层中
+ Marker marker = new Marker(new GeoPoint(Double.parseDouble(lng), Double.parseDouble(lat)), iconCircle, 0.5f, 0.5f);
+ // 将marker添加到图层中
graphicslayer.addGraphic(marker);
ezMap.refreshMap();
-
-
}
+ /**
+ * 获取本地Asserts文件内容
+ */
+ public String getAssetsData(String fileName) {
+ try {
+ InputStreamReader inputStreamReader = new InputStreamReader(getAssets().open(fileName));
+ BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
+ StringBuilder data = new StringBuilder();
+ String s;
+ try {
+ while ((s = bufferedReader.readLine()) != null) {
+ data.append(s);
+ }
+ Log.d("map", "getAssetsData: " + data);
+ return data.toString();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
}
diff --git a/app/src/main/res/layout/activity_map_init.xml b/app/src/main/res/layout/activity_map_init.xml
index d621149..622144f 100644
--- a/app/src/main/res/layout/activity_map_init.xml
+++ b/app/src/main/res/layout/activity_map_init.xml
@@ -1,21 +1,22 @@
-
-
-
+ android:orientation="vertical">
+
+
+
+
diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml
new file mode 100644
index 0000000..f1f424b
--- /dev/null
+++ b/app/src/main/res/xml/file_paths.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..146ab09
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ 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/build.gradle b/app/build.gradle
index 9e9754c..fa31bc0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,13 +2,13 @@
android {
compileSdkVersion 29
- buildToolsVersion "29.0.1"
+ buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.casic.smartwellapp"
minSdkVersion 17
targetSdkVersion 29
- versionCode 6
- versionName "1.1"
+ versionCode 7
+ versionName "v1.1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
@@ -42,8 +42,8 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
- implementation 'androidx.appcompat:appcompat:1.0.2'
- implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
@@ -51,7 +51,7 @@
implementation 'com.lbx:xTools:2.1.2'
implementation 'org.bouncycastle:bcmail-jdk15on:1.59'
implementation 'org.apache.commons:commons-lang3:3.1'
- implementation 'com.alibaba:fastjson:1.2.12'
+ implementation 'com.alibaba:fastjson:1.2.68'
implementation files('libs/guava-17.0.jar')
implementation files('libs/androidsvg-1.2.2-beta-1.jar')
implementation files('libs/EzLicenseAPI4Android.jar')
@@ -62,5 +62,4 @@
implementation files('libs/kxml2-2.3.0.jar')
implementation files('libs/jackson-mapper-lgpl-1.9.5.jar')
implementation files('libs/jackson-core-lgpl-1.9.5.jar')
-
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 55d30fd..6e34b75 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -23,20 +23,31 @@
android:allowBackup="true"
android:icon="@mipmap/znzj"
android:label="@string/app_name"
+ android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/AppTheme">
+ android:theme="@style/AppThemeNoActionBar"
+ android:usesCleartextTraffic="true">
-
+
-
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/EzServiceClient4Android.lic b/app/src/main/assets/EzServiceClient4Android.lic
index 2f9a1c1..15c2e85 100644
--- a/app/src/main/assets/EzServiceClient4Android.lic
+++ b/app/src/main/assets/EzServiceClient4Android.lic
@@ -1,6 +1,6 @@
-f276fd50425e1516bd5fa1183d719e5188c3d196594315e14e003fa87c9edb2c5172bc06037febce58bc0cb093a6f99f46dfdd1ec48d8741353d2fb3aeb83b914b05c17e9431fcbd51ab5f05bc3ad8c850fcb169aa98094bedcae7c1687ed72580026733d8ea16ed193577111f96acf6b2bde5cbc093595fc611830331fd9409b33655b1d1734b525eda690fd3b9a525c6eb82869de321130dfce541c14dd51560d8def56d7363c23e50c539710bdf33c339fc9f70cd66319412b8684a2956e70c0e8a47586e2acfcb0292156ebfe275a48928e4f1fad576cff804a7e6efedac10faa1144f5c734e8fd877466b116dde7587da47d0ec9d851f3649145eef20baf8e55cce84ce5c2c469fee3374049e50e6d7e6badbd6f331ab55c3bc68df8fba9ed026ca69d0989d87dd101747d6d4e078fd972f8ec6372ae6d7e6badbd6f331da0c0ea0953023b21f3649145eef20ba876ec217701656916b67f9fc6bbfcf54e1d71aa6968e0d522edce43a825f8266ce240451cc3d2a6cb5f148d610d02c343fd149b7c6371aab62fcde50ab3874a019de7eb6e745bf9072215ec225e991125323109221ba90946ba59f7d8c7f4a96
-0cfa6c2c5eec924477d4869070a624f6338800b0cceeb3798744936e17f5dbe5ffc65ef9607dd62f7470c2075f59152b424800a6f3c2377ca4679102c0f410ea85fe94939f7b08cfa0c82baad441753322d07953b79a7c68e171ee41ac939ae90e153fef75c459a8acc519bae9a396a3754123ca956f1ccf4ed57fe0619215b3
-3082049030820255308201bea0030201020208485c64d3fba087a9300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3730303230313135333232385a180f32393730303230313135333232385a304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f7420436572746966696361746530819f300d06092a864886f70d010101050003818d00308189028181009467336181f34b81907f72d59f096b9e0bc71ec89dfe4ed3a3ccb9d4b493864d900fc2522ef090364ec86266c160101175fcceed985f2d63f598c915bc2096a1f7d42103a03f4798943a411c094da3e90666307c371c41e13ad19ee7ae54ec56219e9a80995dfd41199c43431764caff8d04c4c999818b8ac02590ffe7d97f390203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414a90da8091835c082a5e696dfe7f34066bfb2d4f7300d06092a864886f70d0101050500038181000c3163614e6017d01d1af63b67524528b37e8df1d999c7963681e0cebaf4c8846c56618723a25d5b0518cd8488422900e00720ba3f9f51c8bdbb18ee0c449a86f7e4abedce5684c6c4a558d7f8ca1e40028f2bf78d386337b0f7774220f89747107fbe4130e4f8dcd3d97019a499d73e183f626be08bd6e8f16b1fec8b6f46b2308202333082019ca003020102020863db91e7a94c1470300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f74204365727469666963617465301e170d3139303832323136303030305a170d3230303232323136303030305a302a310b300906035504061302434e311b301906035504030c12e58c97e4baace5b882e585ace5ae89e5b18030819f300d06092a864886f70d010101050003818d00308189028181009c67407ffc5a2cd8461f605e8ff0d96b4b6f9d09c0d776e1a1f67bd75d78426dd18525c0d4b3a5fc7252cc5c98c285e86785323190ad002882f8ad73e7b2e0cab6429fa0fa9884404ecc44dd0b560d798dd1dc52da219c781042c29d5e952fa9967748f21923611a564692d7f87d7b2c28737a69c8a499ce1e8687e3d599f6cd0203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414e873cba8b05182fcf5b0923afe0f7689466bd69a300d06092a864886f70d01010505000381810064368d80681403ac336e2d56125e057297ee491311ebda1ff5a050fe595cecabb285f3d395b6f5febf4d1e63767502acc922afe2452c68e02064e20c3c26c95c0a3d47cad4fdffbbb1640b6c03a67032d0a97ff4e2c2b3cb0f47327a3a644c2e9b5646af94d217c2eb0004117438cb1a7807707d345c3245a5e8a177ad5f1c35
+2510c4e69e269c8687aa62b975a8602285b31397afcbad497365138451765ed014ce89dd0005f08b90f365c081e38158037fe2a8aeae5765c59631f1a3703ce533f397bd9d5ad479c384a0434c2e8b6efca6442f38f3ddef31070f468b6f254008220ed4d33115dee053e46413d5f5a1ed74661b2e1f433a62ee986573dd22212f8061a1bded6b1ac13c4f0563986bcbe6c8086e15baefa963ba5b634ece82d902e83594c665b521dc7a8fce05122d7ed1573cf995ee331ab3f6d838d365cec76e443ceee1098d1dd011162692a0d3e10daf7ffc9d3de23eab186ad41e3cec6abb18bd091996d6040d8f536ea5e3328bf684c2dcede64a13b8549f1b024834e7f936fb7277d042c89d2f8d473272d0b7ab3024361f9779e03c63ce5f131295dcf0f167b96fb42626bb73792cf055412c069021d40678c09eab3024361f9779e0eea4a46ce6916af2b8549f1b024834e7a4b02eccbf324d7e75d2377fdb6279c8896959ccf251cac44da4194093c886834e28736e937a21e6e2c6054b8490c7542fc1ff3ec1e4a556293b42e4da1aa87dc72d8ca4659b7834cdc0181c4ec3700b233e26b1f9747324075a0a63335cfcef
+4d39594536c496286928e6ca5e8e84aadf7b9c8d59409eb6e7d71d4b5ccd13ade769e96bd98099fe859b394d7572698f43f903af899886cfb54a873b19c7721cc6a20613278b157876401f2a29862c43d8748ac8c967dda527dfbd25923ca9e8183e89dfd88ac818fe94ed03360d7dc5f0a76527d7b82173b8f48a0cc70266a3
+3082049230820255308201bea0030201020208485c64d3fba087a9300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3730303230313135333232385a180f32393730303230313135333232385a304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f7420436572746966696361746530819f300d06092a864886f70d010101050003818d00308189028181009467336181f34b81907f72d59f096b9e0bc71ec89dfe4ed3a3ccb9d4b493864d900fc2522ef090364ec86266c160101175fcceed985f2d63f598c915bc2096a1f7d42103a03f4798943a411c094da3e90666307c371c41e13ad19ee7ae54ec56219e9a80995dfd41199c43431764caff8d04c4c999818b8ac02590ffe7d97f390203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e04160414a90da8091835c082a5e696dfe7f34066bfb2d4f7300d06092a864886f70d0101050500038181000c3163614e6017d01d1af63b67524528b37e8df1d999c7963681e0cebaf4c8846c56618723a25d5b0518cd8488422900e00720ba3f9f51c8bdbb18ee0c449a86f7e4abedce5684c6c4a558d7f8ca1e40028f2bf78d386337b0f7774220f89747107fbe4130e4f8dcd3d97019a499d73e183f626be08bd6e8f16b1fec8b6f46b2308202353082019ea00302010202085a09ebe5b8193320300d06092a864886f70d0101050500304a310b300906035504061302434e3110300e060355040a0c07456173794d617031293027060355040b0c20456173794d6170204c6963656e736520526f6f742043657274696669636174653020170d3231303431323136303030305a180f32303530303431323136303030305a302a310b300906035504061302434e311b301906035504030c12e58c97e4baace5b882e585ace5ae89e5b18030819f300d06092a864886f70d010101050003818d0030818902818100a9d0c339353cd1747bbcbb1573682de0a41f1c190e6aeb6a8af69e91236c0bfd6e6fec41b287b86ef5d7bd09d3631e34386dc8dd328e18364b3d067bdfb0c64a51de72ac238e026ccb32fc798cc350667fbfbfd3e451d009463ca872a99457499c88c7977e5e9f12118296d825de7febc2813f4e86d5bc96e4b477bf4a22e5bd0203010001a3423040301f0603551d23041830168014a90da8091835c082a5e696dfe7f34066bfb2d4f7301d0603551d0e041604147499564586404aa44a5ef1ad4b836996fdcb01f3300d06092a864886f70d0101050500038181006b57878916c1a3b8c6c15b7213c5ded9704bb66a59c759a3765194926be4f660fec68a6f7b52ffbb15e580eae637341e0c799a9859760bf463ef44a6263e6dff2ef53cbd4d9fddf79dcd771a84e8ba16ff75fad5bc33b0886d21150503dc2e1f55cda1d729699f6e754be4156db47c45805f16cf430db4a1ada8642f0b3e95c8
diff --git a/app/src/main/java/com/casic/smartwellapp/MainActivity.java b/app/src/main/java/com/casic/smartwellapp/MainActivity.java
index cffa4e1..38bef40 100644
--- a/app/src/main/java/com/casic/smartwellapp/MainActivity.java
+++ b/app/src/main/java/com/casic/smartwellapp/MainActivity.java
@@ -34,7 +34,7 @@
import com.telecomyt.oauthlogin.http.HttpCallback;
import com.telecomyt.oauthlogin.http.HttpOauthCheckUtil;
-import java.io.InputStream;
+import java.lang.reflect.Method;
import java.util.List;
import static com.telecomyt.oauthlogin.config.Config.LOG_TAG;
@@ -47,27 +47,24 @@
private String ip; //ip
private String imei; //imei
private String yys; //运营商
- LoginReturn userInfoResult = null; //单点登录返回的用户信息
- DeviceData deviceData = null; //给用户返回的数据
+ private LoginReturn userInfoResult = null; //单点登录返回的用户信息
+ private DeviceData deviceData = null; //给用户返回的数据
- private String oauth_url = "http://menhu.telecomyt.com.cn:8080/"; //单点登录验证地址
+ private static final String oauth_url = "http://menhu.telecomyt.com.cn:8080/"; //单点登录验证地址
private long exitTime = 0; //点击退出时间
private static final int LOGIN_CODE = 1001;
- public final static int REQUEST_READ_PHONE_STATE = 1;
-
+ public static final int REQUEST_READ_PHONE_STATE = 1;
private String msgId; //推送消息id
private String msgContent; //推送消息内容
-
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- InputStream inStream = null;
try {
Intent intent = new Intent("com.telecomyt.portal.OAUTH");
intent.putExtra("appID", "3pb316_oauth");
@@ -79,8 +76,8 @@
}
// imei = getIMEI(getApplicationContext());
- imei = getDeviceId(MainActivity.this);
-
+// imei = getDeviceId(MainActivity.this);
+ imei = obtainSimCardSerialNumber();//20210524 Pengxh修改
// if (getIntent() != null) {
//// Intent intent = getIntent();
@@ -92,27 +89,27 @@
//webview
// 获取控件对象
- webview = (WebView) findViewById(R.id.WV_ID);
+ webview = findViewById(R.id.WV_ID);
WebView.setWebContentsDebuggingEnabled(true);
- webview.getSettings().setJavaScriptEnabled(true);//设置webView属性,允许运行js脚本
- webview.getSettings().setDomStorageEnabled(true);
- webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
- webview.getSettings().setAppCacheEnabled(true);
- String appCatchPath = getApplicationContext().getCacheDir().getAbsolutePath();
- webview.getSettings().setAppCachePath(appCatchPath);
- webview.getSettings().setAllowFileAccess(true);//可访问文件
- webview.getSettings().setDefaultTextEncodingName("UTF-8");
- webview.getSettings().setAllowUniversalAccessFromFileURLs(true);
+ WebSettings settings = webview.getSettings();
+ settings.setJavaScriptEnabled(true);//设置webView属性,允许运行js脚本
+ settings.setDomStorageEnabled(true);
+ settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
+ settings.setAppCacheEnabled(true);
+ settings.setAppCachePath(getApplicationContext().getCacheDir().getAbsolutePath());
+ settings.setAllowFileAccess(true);//可访问文件
+ settings.setDefaultTextEncodingName("UTF-8");
+ settings.setAllowUniversalAccessFromFileURLs(true);
// 设置在当前WebView继续加载网页
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
- System.out.println("in shouldOverrideUrlLoading url");
try {
// 处理自定义scheme协议
if (!url.startsWith("http")) {
+ //处理自定义scheme-->androidamap://viewMap?poiname=W00002&lat=39.9055035111111&lng=116.376759027778
Log.e("scheme", "处理自定义scheme-->" + url);
// 如果要跳转地图
if (url.startsWith("androidamap:")) {
@@ -120,34 +117,38 @@
//获取问号后的参数
String params = url.substring(url.indexOf('?'));
Log.i("map", params);
- if (url.indexOf("?") != -1) {
+ if (url.contains("?")) {
String str = params.substring(1);
String[] strs = str.split("&");
- for (int i = 0; i < strs.length; i++) {
- String name = strs[i].split("=")[0];
- String value = strs[i].split("=")[1];
- if (name.equals("lng")) {
- lng = value;
- } else if (name.equals("lat")) {
- lat = value;
- } else if (name.equals("poiname")) {
- pointname = value;
+ for (String s : strs) {
+ String name = s.split("=")[0];
+ String value = s.split("=")[1];
+ switch (name) {
+ case "lng":
+ lng = value;
+ break;
+ case "lat":
+ lat = value;
+ break;
+ case "poiname":
+ pointname = value;
+ break;
}
}
}
//用原生sdk加载地图
- Intent intent = new Intent();
- intent.putExtra("lng", lng);
- intent.putExtra("lat", lat);
- intent.putExtra("pointname", pointname);
- intent.setClass(MainActivity.this,
- MapInitActivity.class);
- startActivity(intent);
+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O) {
+ Intent intent = new Intent(MainActivity.this, MapInitActivity.class);
+ intent.putExtra("lng", lng);
+ intent.putExtra("lat", lat);
+ intent.putExtra("pointname", pointname);
+ startActivity(intent);
+ } else {
+ Toast.makeText(MainActivity.this, "系统版本过高,地图无法使用", Toast.LENGTH_SHORT).show();
+ }
} else if (url.startsWith("tel:")) {
- final Intent intent = new Intent(Intent.ACTION_VIEW,
- Uri.parse(url));
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
- | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), "未能识别URL!", Toast.LENGTH_SHORT).show();
@@ -171,20 +172,17 @@
}
@Override
- public void onReceivedError(WebView view, int errorCode, String description,
- String failingUrl) {
+ public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
//错误页面
webview.loadUrl("file:///android_asset/error.html");
}
});
-
// 给web提供调用接口
webview.addJavascriptInterface(new WebAppInterface(), "android");
// 加载html文件,欢迎页面
webview.loadUrl("file:///android_asset/hello.html");
-
}
@@ -203,56 +201,53 @@
//单点登录返回
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 100) {
- switch (requestCode) {
- //单点登录页面的返回结果
- case 1001:
- if (data != null) {
- String result = data.getStringExtra("result");
- Log.e(LOG_TAG, "吉安宝验证结果 result === " + result);
- JiAnBaoCheckResult tokenResult = new Gson().fromJson(result, JiAnBaoCheckResult.class);
- if (tokenResult != null) {
- if (tokenResult.isResult()) {
- token = tokenResult.getSubjectDN();
- Log.e(LOG_TAG, "token === " + token);
+ //单点登录页面的返回结果
+ if (requestCode == 1001) {
+ if (data != null) {
+ String result = data.getStringExtra("result");
+ Log.e(LOG_TAG, "吉安宝验证结果 result === " + result);
+ JiAnBaoCheckResult tokenResult = new Gson().fromJson(result, JiAnBaoCheckResult.class);
+ if (tokenResult != null) {
+ if (tokenResult.isResult()) {
+ token = tokenResult.getSubjectDN();
+ Log.e(LOG_TAG, "token === " + token);
// webview.loadUrl("file:///android_asset/index.html?token="+token);
- if (!TextUtils.isEmpty(token)) {
- HttpOauthCheckUtil.getInstance().getUserInfo(oauth_url, token, new HttpCallback() {
- @Override
- public void onSuccess(String result) {
- Toast.makeText(getApplicationContext(), "认证通过,欢迎使用",
- Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "门户验证结果 === " + result);
- userInfoResult = new Gson().fromJson(result, LoginReturn.class);
- yys = getYys(getApplicationContext());
- String name = userInfoResult.getData().getName();
- String identifyCard = userInfoResult.getData().getIdentityCard();
- deviceData = new DeviceData(name, identifyCard, yys, imei);
- Log.i("deviceData", deviceData.toString());
- webview.loadUrl("file:///android_asset/index.html");
- }
+ if (!TextUtils.isEmpty(token)) {
+ HttpOauthCheckUtil.getInstance().getUserInfo(oauth_url, token, new HttpCallback() {
+ @Override
+ public void onSuccess(String result) {
+ Toast.makeText(getApplicationContext(), "认证通过,欢迎使用",
+ Toast.LENGTH_SHORT).show();
+ Log.e(LOG_TAG, "门户验证结果 === " + result);
+ userInfoResult = new Gson().fromJson(result, LoginReturn.class);
+ yys = getYys(getApplicationContext());
+ String name = userInfoResult.getData().getName();
+ String identifyCard = userInfoResult.getData().getIdentityCard();
+ deviceData = new DeviceData(name, identifyCard, yys, imei);
+ Log.i("deviceData", deviceData.toString());
+ webview.loadUrl("file:///android_asset/index.html");
+ }
- @Override
- public void onFailed(String err) {
- Log.e(LOG_TAG, "错误信息 === " + err);
- Toast.makeText(getApplicationContext(), err,
- Toast.LENGTH_SHORT).show();
- }
- });
- }
- } else {
- //吉安宝认证失败
- Toast.makeText(getApplicationContext(), "吉安宝认证失败",
- Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "吉安宝认证失败 ");
+ @Override
+ public void onFailed(String err) {
+ Log.e(LOG_TAG, "错误信息 === " + err);
+ Toast.makeText(getApplicationContext(), err,
+ Toast.LENGTH_SHORT).show();
+ }
+ });
}
} else {
- Toast.makeText(getApplicationContext(), "请检查网络",
+ //吉安宝认证失败
+ Toast.makeText(getApplicationContext(), "吉安宝认证失败",
Toast.LENGTH_SHORT).show();
- Log.e(LOG_TAG, "请检查网络");
+ Log.e(LOG_TAG, "吉安宝认证失败 ");
}
+ } else {
+ Toast.makeText(getApplicationContext(), "请检查网络",
+ Toast.LENGTH_SHORT).show();
+ Log.e(LOG_TAG, "请检查网络");
}
- default:
- break;
+ }
}
}
// if (requestCode == LOGIN_CODE && resultCode == 100) { // resultCode 固定为100
@@ -277,13 +272,11 @@
@Override
public void onBackPressed() {
Log.i("webUrl", "webviewUrl" + webview.getUrl());
- if (webview.canGoBack() && !webview.getUrl().endsWith("/#/")
- && !webview.getUrl().endsWith("/#/login")) {
+ if (webview.canGoBack() && !webview.getUrl().endsWith("/#/") && !webview.getUrl().endsWith("/#/login")) {
webview.goBack();
} else {
if ((System.currentTimeMillis() - exitTime) > 2000) {
- Toast.makeText(getApplicationContext(), "再按一次退出程序",
- Toast.LENGTH_SHORT).show();
+ Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
super.onBackPressed();
@@ -299,22 +292,20 @@
Log.i("JSON:", json);
return json;
} else {
- String json = "";
- return json;
+ return "";
}
}
@JavascriptInterface
public String getAuth() {
// 返回token
- if (token != null && token != "") {
+ if (token != null && !token.equals("")) {
Toast.makeText(getApplicationContext(), "获取用户权限", Toast.LENGTH_SHORT).show();
return token;
} else {
return null;
}
}
-
}
//获取运营商
@@ -366,5 +357,38 @@
}
return deviceId;
}
+
+ //获取SimSerialNumber
+ @SuppressLint({"HardwareIds"})
+ public String obtainSimCardSerialNumber() {
+ if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+ //Android 10改为获取Android_ID
+ return Settings.System.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
+ } else {
+ TelephonyManager telephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
+ Class> telephonyClass;
+ try {
+ telephonyClass = Class.forName(telephony.getClass().getName());
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE_STATE);
+ }
+ //Android 10以下默认获取deviceId,部分手机获取不到deviceId不到的改为获取sim卡串码,如果依旧获取不到,返回""
+ String imei = telephony.getDeviceId();
+ if (TextUtils.isEmpty(imei)) {
+ Method m = telephonyClass.getMethod("getSimSerialNumber", int.class);
+ //主卡,卡1
+ String mainCard = (String) m.invoke(telephony, 0);
+ //副卡,卡2
+ String otherCard = (String) m.invoke(telephony, 1);
+ return mainCard;
+ } else {
+ return imei;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return "";
+ }
}
diff --git a/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java b/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java
index 1fa8471..ffe3784 100644
--- a/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java
+++ b/app/src/main/java/com/casic/smartwellapp/MapInitActivity.java
@@ -1,12 +1,16 @@
package com.casic.smartwellapp;
+import android.Manifest;
import android.app.Activity;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.TextView;
+import androidx.core.app.ActivityCompat;
+
import com.casic.smartwellapp.Entity.Constant;
import com.easymap.android.maps.v3.EzMap;
import com.easymap.android.maps.v3.EzMap.OnStatusChangeListener;
@@ -20,23 +24,19 @@
import com.easymap.android.maps.v3.layers.ogc.WMTSLayer;
import com.easymap.android.maps.v3.layers.ogc.WMTSLayerInfo;
+import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
public class MapInitActivity extends Activity implements OnStatusChangeListener {
+
+ public static final int REQUEST_PERMISSION = 11;
private MapView mapView;
- private EzMap ezMap;
- private TextView textview;
- private WMTSLayer wmtstdt;
- private WMTSLayerInfo wmtslayerinfo;
- private Marker marker;
private String lng;
private String lat;
private String pointname;
- private GraphicsLayer graphicslayer;
- private BitmapDescriptor iconcircle;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -47,7 +47,7 @@
lng = i.getStringExtra("lng");
lat = i.getStringExtra("lat");
pointname = i.getStringExtra("pointname");
- mapView = (MapView) findViewById(R.id.MapView);
+ mapView = findViewById(R.id.MapView);
if (mapView != null) {
// 注册地图准备就绪监听
mapView.setOnStatusChangeListener(this);
@@ -60,54 +60,77 @@
inStream = getResources().getAssets().open("EzServiceClient4Android.lic");
// inStream = new FileInputStream(file);
} catch (FileNotFoundException e) {
- Log.e("mapError", "fileNotFoundException");
e.printStackTrace();
} catch (IOException e) {
- Log.e("mapError", "streamFileNotFoundException");
e.printStackTrace();
}
// 初始化许可方法
- mapView.initLicenseAsDevelopement(inStream);
+// mapView.initLicenseAsDevelopement(inStream);
+ mapView.initLicense(getAssetsData("EzServiceClient4Android.lic"));//20210525 Pengxh修改
mapView.onCreate(getApplication(), savedInstanceState);
-
-
}
}
@Override
public void onStatusChanged(STATUS arg0) {
- textview = (TextView) findViewById(R.id.textview);
+ TextView textview = findViewById(R.id.textview);
textview.setText(pointname);
// 得到地图对象
- ezMap = mapView.getMap();
+ EzMap ezMap = mapView.getMap();
// 设置地图中心点
- ezMap.centerAt(new GeoPoint(Double.valueOf(lng), Double.valueOf(lat)), false);
+ ezMap.centerAt(new GeoPoint(Double.parseDouble(lng), Double.parseDouble(lat)), false);
// 设置地图级别
ezMap.zoomTo(16, false);
- wmtslayerinfo = new WMTSLayerInfo();
+ WMTSLayerInfo wmtslayerinfo = new WMTSLayerInfo();
wmtslayerinfo.setVersion("1.0.0");
wmtslayerinfo.setFormat("tiles");
wmtslayerinfo.setStyle("default");
wmtslayerinfo.setLayerName("gdsl");
wmtslayerinfo.setTileMatrixSet("c");
// 实例化WMTSLayer 地图
- wmtstdt = new WMTSLayer("http://20.1.12.48/EzServer/Maps/gdsl",
- wmtslayerinfo, "tdt_vec.cache", Environment.getExternalStorageDirectory()
- + "/EzMap/st");
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_PERMISSION);
+ }
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION);
+ }
+ WMTSLayer wmtstdt = new WMTSLayer("http://20.1.12.48/EzServer/Maps/gdsl", wmtslayerinfo,
+ "tdt_vec.cache",
+ Environment.getExternalStorageDirectory() + "/EzMap/st");
ezMap.addLayer(wmtstdt);
- graphicslayer = new GraphicsLayer(SpatialReference.create(4326),
- ezMap.getExtent());
- iconcircle = BitmapDescriptorFactory.defaultMarker();
+ GraphicsLayer graphicslayer = new GraphicsLayer(SpatialReference.create(4326), ezMap.getExtent());
+ BitmapDescriptor iconCircle = BitmapDescriptorFactory.defaultMarker();
ezMap.addLayer(graphicslayer);
// 根据点的位置创建一个Marker的实例
- marker = new Marker(new GeoPoint(Double.valueOf(lng), Double.valueOf(lat)), iconcircle, 0.5f, 0.5f);
-// 将marker添加到图层中
+ Marker marker = new Marker(new GeoPoint(Double.parseDouble(lng), Double.parseDouble(lat)), iconCircle, 0.5f, 0.5f);
+ // 将marker添加到图层中
graphicslayer.addGraphic(marker);
ezMap.refreshMap();
-
-
}
+ /**
+ * 获取本地Asserts文件内容
+ */
+ public String getAssetsData(String fileName) {
+ try {
+ InputStreamReader inputStreamReader = new InputStreamReader(getAssets().open(fileName));
+ BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
+ StringBuilder data = new StringBuilder();
+ String s;
+ try {
+ while ((s = bufferedReader.readLine()) != null) {
+ data.append(s);
+ }
+ Log.d("map", "getAssetsData: " + data);
+ return data.toString();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
}
diff --git a/app/src/main/res/layout/activity_map_init.xml b/app/src/main/res/layout/activity_map_init.xml
index d621149..622144f 100644
--- a/app/src/main/res/layout/activity_map_init.xml
+++ b/app/src/main/res/layout/activity_map_init.xml
@@ -1,21 +1,22 @@
-
-
-
+ android:orientation="vertical">
+
+
+
+
diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml
new file mode 100644
index 0000000..f1f424b
--- /dev/null
+++ b/app/src/main/res/xml/file_paths.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/well.jks b/well.jks
new file mode 100644
index 0000000..45c4bcf
--- /dev/null
+++ b/well.jks
Binary files differ