Android Studio версии 3.4
app / build.gradle:
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 18
targetSdkVersion 28
versionCode 427
versionName "2.1.427"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
def AAVersion = '4.5.2'
dependencies {
annotationProcessor "org.androidannotations:androidannotations:$AAVersion"
annotationProcessor "org.androidannotations:ormlite:$AAVersion"
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:customtabs:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.7'
implementation 'com.google.android.gms:play-services-gcm:16.0.0'
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'com.j256.ormlite:ormlite-android:5.1'
implementation 'commons-codec:commons-codec:1.11'
implementation 'commons-io:commons-io:2.6'
implementation 'org.apache.commons:commons-lang3:3.8.1'
implementation 'org.apache.httpcomponents:httpclient:4.3.6'
implementation "org.androidannotations:androidannotations-api:$AAVersion"
implementation "org.androidannotations:ormlite-api:$AAVersion"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
}
import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
private static NotificationInvoice getNotificationInvoice(NotificationFO notification) {
String notificationText = notification.getNotificationText();
String payload = "";
NotificationType type = null;
Log.d(TAG, "check_notificationText:\n" + notificationText);
List<NameValuePair> params = URLEncodedUtils.parse(new URI(notificationText), "UTF-8");
Log.d(TAG, "check_params(" + params.size() + "):\n" + params);
}
В Android 6.0 успех "notificationText
"разбор L ist<NameValuePair>
:
check_notificationText:
http://11.1.1:54401/notify?receiver=testok&system=factura_mobile&device_type=android&type=invoice&payload=11111;0000000;5.55;2019-05-16;2019-05-16;ecb6f683-63b3-4efd-b8c3-0877f1aeae8d
check_params(5):
receiver=testok, system=factura_mobile, device_type=android, type=invoice, payload=11111;0000000;5.55;2019-05-16;2019-05-16;ecb6f683-63b3-4efd-b8c3-0877f1aeae8d
Как вы можете видеть параметр "payload
" = 11111;0000000;5.55;2019-05-16;2019-05-16;ecb6f683-63b3-4efd-b8c3-0877f1aeae8d
Хорошо, это правильно.
Но на Android 9.0"notificationText
" не разбирается успешно :
check_notificationText:
http://11.11.11.11:54401/notify?receiver=22222222222222&system=factura_mobile&device_type=android&type=invoice&payload=3c55ba74-a85e-401b-8c1c-40ca83947768;0000000;5.55;2019-05-16;2019-05-16;1a87fb32-4543-4111-89a4-e150a7f71168
check_params(10):
[receiver=22222222222222, system=factura_mobile, device_type=android, type=invoice, payload=3c55ba74-a85e-401b-8c1c-40ca83947768, 0000000, 5.55, 2019-05-16, 2019-05-16, 1a87fb32-4543-4111-89a4-e150a7f71168]
getNotificationInvoice_FOUND_PAYLOAD -> set_to_payload_param.getValue = 3c55ba74-a85e-401b-8c1c-40ca83947768
Как вы можете видеть параметр "payload
" = 3c55ba74-a85e-401b-8c1c-40ca83947768
, но должен быть
3c55ba74-a85e-401b-8c1c-40ca83947768;0000000;5.55;2019-05-16;2019-05-16;1a87fb32-4543-4111-89a4-e150a7f71168
Почему URLEncodedUtils
не правильно анализирует текст в Android 9.0?