From fe426512d1897a19490fa40725b44888d7583ebe Mon Sep 17 00:00:00 2001 From: Alex Lementuev Date: Wed, 13 Nov 2019 15:12:06 -0800 Subject: [PATCH] Apptentive Android SDK 5.5.0 --- .idea/codeStyles/Project.xml | 116 ++++++++++++ .travis.yml | 8 +- CHANGELOG.md | 6 + README.md | 2 +- apptentive/build.gradle | 34 ++-- apptentive/consumer-proguard-rules.pro | 4 +- .../sdk/InstrumentationTestCaseBase.java | 2 +- .../conversation/FileMessageStoreTest.java | 3 +- .../sdk/encryption/AesCbcEncryptionTest.java | 2 +- .../sdk/encryption/SecurityManagerTest.java | 2 +- .../engagement/InteractionLauncherTest.java | 4 +- ...ificationBroadcastReceiverHandlerTest.java | 2 +- ...oteInteractionNotificationAdapterTest.java | 2 +- .../storage/ApptentiveDatabaseHelperTest.java | 25 +-- .../ConcurrentDispatchQueueTest.java | 3 +- .../threading/SerialDispatchQueueTest.java | 2 +- .../apptentive/android/sdk/Apptentive.java | 16 +- .../android/sdk/ApptentiveBaseActivity.java | 7 +- .../android/sdk/ApptentiveConfiguration.java | 4 +- .../android/sdk/ApptentiveInstance.java | 4 +- .../android/sdk/ApptentiveInternal.java | 10 +- .../apptentive/android/sdk/ApptentiveLog.java | 4 +- .../android/sdk/ApptentiveNullInstance.java | 4 +- .../android/sdk/ApptentiveViewActivity.java | 15 +- .../apptentive/android/sdk/Availability.java | 18 ++ .../apptentive/android/sdk/Encryption.java | 2 +- .../adapter/ApptentiveViewPagerAdapter.java | 6 +- .../sdk/conversation/Conversation.java | 4 +- .../sdk/conversation/ConversationData.java | 4 +- .../ConversationDispatchTask.java | 2 +- .../sdk/conversation/ConversationManager.java | 4 +- .../ConversationMetadataItem.java | 2 +- .../sdk/conversation/FileMessageStore.java | 2 +- .../apptentive/android/sdk/debug/Assert.java | 2 +- .../android/sdk/debug/AsyncLogWriter.java | 2 +- .../android/sdk/debug/ErrorMetrics.java | 2 +- .../sdk/debug/LogBroadcastReceiver.java | 2 +- .../android/sdk/debug/LogMonitor.java | 2 +- .../sdk/debug/LogMonitorSessionIO.java | 2 +- .../TroubleshootingNotificationBuilder.java | 4 +- .../sdk/encryption/AesCBCEncryption.java | 2 +- .../sdk/encryption/EncryptionFactory.java | 2 +- .../sdk/encryption/EncryptionHelper.java | 6 +- .../android/sdk/encryption/EncryptionKey.java | 4 +- .../sdk/encryption/SecurityManager.java | 4 +- .../sdk/encryption/resolvers/KeyResolver.java | 4 +- .../encryption/resolvers/KeyResolver18.java | 6 +- .../encryption/resolvers/KeyResolver23.java | 6 +- .../resolvers/KeyResolverFactory.java | 2 +- .../encryption/resolvers/KeyResolverNoOp.java | 2 +- .../ApptentiveActivityLifecycleCallbacks.java | 2 +- .../android/sdk/model/CompoundMessage.java | 2 +- .../android/sdk/model/FragmentFactory.java | 2 +- .../android/sdk/model/JsonPayload.java | 2 +- .../apptentive/android/sdk/model/Payload.java | 4 +- .../DefaultInteractionLauncherFactory.java | 2 +- .../fragment/ApptentiveBaseFragment.java | 26 +-- .../fragment/MessageCenterErrorFragment.java | 2 +- .../fragment/MessageCenterFragment.java | 12 +- .../interaction/fragment/SurveyFragment.java | 2 +- .../fragment/UpgradeMessageFragment.java | 2 +- .../view/survey/BaseSurveyQuestionView.java | 2 +- .../view/survey/RangeSurveyQuestionView.java | 2 +- .../view/survey/SurveyQuestionChoice.java | 2 +- .../view/survey/TextSurveyQuestionView.java | 2 +- .../NoteInteractionNotificationAdapter.java | 2 +- .../NotificationChannelHolder.java | 2 +- .../module/messagecenter/MessageManager.java | 2 +- .../messagecenter/MessagePollingWorker.java | 2 +- .../model/ApptentiveToastNotification.java | 2 +- .../view/AttachmentPreviewDialog.java | 2 +- .../view/MessageCenterRecyclerView.java | 4 +- .../MessageCenterRecyclerViewAdapter.java | 2 +- .../view/holder/AutomatedMessageHolder.java | 2 +- .../view/holder/ContextMessageHolder.java | 2 +- .../view/holder/GreetingHolder.java | 2 +- .../holder/IncomingCompoundMessageHolder.java | 2 +- .../view/holder/MessageComposerHolder.java | 6 +- .../view/holder/MessageHolder.java | 2 +- .../holder/OutgoingCompoundMessageHolder.java | 2 +- .../view/holder/StatusHolder.java | 2 +- .../view/holder/WhoCardHolder.java | 4 +- .../apptimize/ApptentiveApptimize.java | 2 +- .../serialization/ObjectSerialization.java | 4 +- .../sdk/storage/ApptentiveDatabaseHelper.java | 2 +- .../android/sdk/storage/DatabaseMigrator.java | 2 +- .../android/sdk/storage/FileSerializer.java | 2 +- .../android/sdk/storage/Person.java | 2 +- .../android/sdk/util/AdvertiserManager.java | 2 +- .../android/sdk/util/Constants.java | 2 +- .../android/sdk/util/ContextUtils.java | 4 +- .../android/sdk/util/NotificationUtils.java | 4 +- .../android/sdk/util/ObjectUtils.java | 2 +- .../android/sdk/util/RuntimeUtils.java | 2 +- .../com/apptentive/android/sdk/util/Util.java | 10 +- .../sdk/util/cache/ImageMemoryCache.java | 2 +- .../sdk/util/image/ImageGridViewAdapter.java | 4 +- .../sdk/util/image/PreviewImageView.java | 4 +- .../sdk/view/ApptentiveAlertDialog.java | 8 +- .../sdk/view/ApptentiveNestedScrollView.java | 30 ++-- .../apptentive_image_grid_view_item.xml | 4 +- .../res/layout/apptentive_message_auto.xml | 8 +- .../res/layout/apptentive_message_center.xml | 46 ++--- ...tentive_message_center_context_message.xml | 4 +- .../apptentive_message_center_error.xml | 2 +- .../apptentive_message_center_status.xml | 2 +- .../apptentive_message_center_who_card.xml | 28 +-- .../layout/apptentive_message_incoming.xml | 4 +- .../layout/apptentive_message_outgoing.xml | 4 +- .../apptentive_survey_question_base.xml | 4 +- ...ive_survey_question_multichoice_choice.xml | 18 +- ...ive_survey_question_multiselect_choice.xml | 16 +- .../apptentive_survey_question_singleline.xml | 18 +- .../res/layout/apptentive_viewactivity.xml | 8 +- .../android/sdk/debug/AsyncLogWriterTest.java | 2 +- .../com/apptentive/android/sdk/TestUtils.java | 2 +- build.gradle | 4 +- gradle.properties | 21 +++ gradle/wrapper/gradle-wrapper.properties | 4 +- samples/apptentive-example/.gitignore | 1 + samples/apptentive-example/build.gradle | 58 +++--- samples/apptentive-example/proguard-rules.pro | 21 +++ .../com/example/ExampleInstrumentedTest.java | 27 +++ .../src/main/AndroidManifest.xml | 48 ++--- .../apptentive/com/example/MainActivity.kt | 30 ++++ .../apptentive/com/example/MyApplication.kt | 15 ++ .../android/example/ExampleActivity.java | 40 ----- .../android/example/ExampleApplication.java | 21 --- .../push/MyFirebaseInstanceIdService.java | 23 --- .../push/MyFirebaseMessagingService.java | 72 -------- .../main/res/drawable-hdpi/notification.png | Bin 373 -> 0 bytes .../main/res/drawable-mdpi/notification.png | Bin 303 -> 0 bytes .../drawable-v24/ic_launcher_foreground.xml | 34 ++++ .../main/res/drawable-xhdpi/notification.png | Bin 464 -> 0 bytes .../main/res/drawable-xxhdpi/notification.png | Bin 650 -> 0 bytes .../res/drawable-xxxhdpi/notification.png | Bin 865 -> 0 bytes .../res/drawable/ic_launcher_background.xml | 170 ++++++++++++++++++ .../src/main/res/drawable/icon.png | Bin 10887 -> 0 bytes .../src/main/res/layout/activity_main.xml | 66 +++++++ .../src/main/res/layout/main.xml | 21 --- .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2963 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4905 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2060 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2783 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4490 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6895 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6387 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10413 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9128 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15132 bytes .../src/main/res/values/colors.xml | 6 + .../src/main/res/values/strings.xml | 10 -- .../src/main/res/values/styles.xml | 11 ++ .../com/example/ExampleUnitTest.java | 17 ++ settings.gradle | 5 - tests/test-app/build.gradle | 10 +- .../sdk/tests/ApptentiveTestCaseBase.java | 2 +- .../android/sdk/tests/misc/RandomTests.java | 2 +- .../tests/model/DateTimeComparisonTest.java | 2 +- .../android/sdk/tests/model/EventTests.java | 2 +- .../sdk/tests/model/ExtendedDataTests.java | 2 +- .../sdk/tests/model/ObjectDiffingTests.java | 2 +- .../tests/model/VersionComparisonTest.java | 2 +- .../tests/model/VersionHistoryStoreTest.java | 2 +- .../engagement/CriteriaParsingTest.java | 2 +- .../engagement/DataObjectQueryTest.java | 5 +- .../tests/module/engagement/EventTest.java | 2 +- .../module/engagement/InteractionTest.java | 2 +- .../NavigateToLinkInteractionTest.java | 2 +- .../engagement/SurveyInteractionTest.java | 2 +- .../engagement/TextModalInteractionTest.java | 2 +- .../CodePointAndInteractionStoreTest.java | 2 +- .../engagement/criteria/CornerCases.java | 2 +- .../engagement/criteria/DefaultValues.java | 2 +- .../engagement/criteria/OperatorTests.java | 2 +- .../criteria/WhitespaceTrimmingTest.java | 2 +- .../messagecenter/JsonObjectBindingTest.java | 2 +- .../sdk/tests/push/ApptentivePayload.java | 4 +- .../android/sdk/tests/push/AwsSns.java | 2 +- .../android/sdk/tests/push/Fcm.java | 2 +- .../android/sdk/tests/push/Gcm.java | 2 +- .../android/sdk/tests/push/OldStylePush.java | 2 +- .../android/sdk/tests/push/UrbanAirship.java | 2 +- 185 files changed, 952 insertions(+), 597 deletions(-) create mode 100644 .idea/codeStyles/Project.xml create mode 100644 apptentive/src/main/java/com/apptentive/android/sdk/Availability.java create mode 100644 gradle.properties create mode 100644 samples/apptentive-example/.gitignore create mode 100644 samples/apptentive-example/proguard-rules.pro create mode 100644 samples/apptentive-example/src/androidTest/java/apptentive/com/example/ExampleInstrumentedTest.java mode change 100755 => 100644 samples/apptentive-example/src/main/AndroidManifest.xml create mode 100644 samples/apptentive-example/src/main/java/apptentive/com/example/MainActivity.kt create mode 100644 samples/apptentive-example/src/main/java/apptentive/com/example/MyApplication.kt delete mode 100755 samples/apptentive-example/src/main/java/com/apptentive/android/example/ExampleActivity.java delete mode 100644 samples/apptentive-example/src/main/java/com/apptentive/android/example/ExampleApplication.java delete mode 100644 samples/apptentive-example/src/main/java/com/apptentive/android/example/push/MyFirebaseInstanceIdService.java delete mode 100644 samples/apptentive-example/src/main/java/com/apptentive/android/example/push/MyFirebaseMessagingService.java delete mode 100644 samples/apptentive-example/src/main/res/drawable-hdpi/notification.png delete mode 100644 samples/apptentive-example/src/main/res/drawable-mdpi/notification.png create mode 100644 samples/apptentive-example/src/main/res/drawable-v24/ic_launcher_foreground.xml delete mode 100644 samples/apptentive-example/src/main/res/drawable-xhdpi/notification.png delete mode 100644 samples/apptentive-example/src/main/res/drawable-xxhdpi/notification.png delete mode 100644 samples/apptentive-example/src/main/res/drawable-xxxhdpi/notification.png create mode 100644 samples/apptentive-example/src/main/res/drawable/ic_launcher_background.xml delete mode 100644 samples/apptentive-example/src/main/res/drawable/icon.png create mode 100644 samples/apptentive-example/src/main/res/layout/activity_main.xml delete mode 100755 samples/apptentive-example/src/main/res/layout/main.xml create mode 100644 samples/apptentive-example/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 samples/apptentive-example/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 samples/apptentive-example/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 samples/apptentive-example/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 samples/apptentive-example/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 samples/apptentive-example/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 samples/apptentive-example/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 samples/apptentive-example/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 samples/apptentive-example/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 samples/apptentive-example/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 samples/apptentive-example/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 samples/apptentive-example/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 samples/apptentive-example/src/main/res/values/colors.xml mode change 100755 => 100644 samples/apptentive-example/src/main/res/values/strings.xml create mode 100644 samples/apptentive-example/src/main/res/values/styles.xml create mode 100644 samples/apptentive-example/src/test/java/apptentive/com/example/ExampleUnitTest.java diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 000000000..681f41ae2 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,116 @@ + + + + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
+
+
\ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 0edfdb0fc..8c8f5daec 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,13 +20,13 @@ android: - tools # to get the new `repository-11.xml` - tools # see https://github.com/travis-ci/travis-ci/issues/6040#issuecomment-219367943) - platform-tools - - build-tools-28.0.3 + - build-tools-29.0.2 # - android-25 - - android-28 + - android-29 - extra-android-m2repository - extra-google-m2repository - extra-google-google_play_services - - addon-google_apis-google-28 + - addon-google_apis-google-29 # - sys-img-armeabi-v7a-google_apis-25 # - sys-img-armeabi-v7a-android-25 licenses: @@ -34,7 +34,7 @@ android: - 'android-sdk-license-.+' - 'google-gdk-license-.+' before_install: - - yes | sdkmanager "platforms;android-28" + - yes | sdkmanager "platforms;android-29" install: true before_script: # - echo "y" | android update sdk -a --no-ui --filter android-25 diff --git a/CHANGELOG.md b/CHANGELOG.md index cce528a49..66f1c3c9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# 2019-11-12 - v5.5.0 + +#### Fixes + +* Added support for AndroidX. + # 2019-10-24 - v5.4.7 #### Fixes diff --git a/README.md b/README.md index 468f7683c..f0f2cc5c1 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ use your app, to talk to them at the right time, and in the right way. ##### [Release Notes](https://learn.apptentive.com/knowledge-base/android-sdk-release-notes/) -##### Binary releases are hosted for Maven [here](http://search.maven.org/#artifactdetails|com.apptentive|apptentive-android|5.4.7|aar) +##### Binary releases are hosted for Maven [here](http://search.maven.org/#artifactdetails|com.apptentive|apptentive-android|5.5.0|aar) #### Reporting Bugs diff --git a/apptentive/build.gradle b/apptentive/build.gradle index de2476856..d6210bdf6 100644 --- a/apptentive/build.gradle +++ b/apptentive/build.gradle @@ -3,34 +3,35 @@ init() apply plugin: 'com.android.library' dependencies { - implementation 'com.android.support:support-v4: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:design:28.0.0' + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'androidx.cardview:cardview:1.0.0' + implementation 'com.google.android.material:material:1.0.0' + testImplementation 'junit:junit:4.12' - testImplementation "org.powermock:powermock-module-junit4:1.6.2" - testImplementation "org.powermock:powermock-module-junit4-rule:1.6.2" - testImplementation "org.powermock:powermock-api-mockito:1.6.2" - testImplementation "org.powermock:powermock-classloading-xstream:1.6.2" + testImplementation 'org.powermock:powermock-module-junit4:1.6.6' + testImplementation 'org.powermock:powermock-module-junit4-rule:1.6.6' + testImplementation 'org.powermock:powermock-api-mockito:1.6.6' + testImplementation 'org.powermock:powermock-classloading-xstream:1.6.6' // Required for instrumented tests - androidTestImplementation 'com.android.support:support-annotations:28.0.0' - androidTestImplementation 'com.android.support.test:runner:1.0.2' - androidTestImplementation 'com.android.support.test:rules:1.0.2' + androidTestImplementation 'androidx.annotation:annotation:1.1.0' + androidTestImplementation 'androidx.test:runner:1.2.0' + androidTestImplementation 'androidx.test:rules:1.2.0' } android { - compileSdkVersion 28 - buildToolsVersion '28.0.3' + compileSdkVersion 29 + buildToolsVersion '29.0.2' defaultConfig { minSdkVersion 14 - targetSdkVersion 28 + targetSdkVersion 29 // BUILD_NUMBER is provided by Jenkins. Default to 1 in dev builds. versionCode System.getenv("BUILD_NUMBER") as Integer ?: System.getenv("TRAVIS_BUILD_NUMBER") as Integer ?: 1 versionName project.version consumerProguardFiles 'consumer-proguard-rules.pro' - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "apptentive_distribution_version", versionName vectorDrawables.useSupportLibrary = true } @@ -182,6 +183,9 @@ artifacts { afterEvaluate { androidJavadocs.classpath += project.android.libraryVariants.toList().first().javaCompile.classpath } +repositories { + mavenCentral() +} def init() { // Set project information that will be available to all tasks. diff --git a/apptentive/consumer-proguard-rules.pro b/apptentive/consumer-proguard-rules.pro index c7a6c3e33..208bc198a 100644 --- a/apptentive/consumer-proguard-rules.pro +++ b/apptentive/consumer-proguard-rules.pro @@ -15,5 +15,5 @@ -keep class android.os.Build { *; } -keep class android.graphics.Typeface { *; } --keep class android.support.v4.app.Fragment { *; } --keep class android.support.v4.app.FragmentManagerImpl { *; } +-keep class androidx.fragment.app.Fragment { *; } +-keep class androidx.fragment.app.FragmentManagerImpl { *; } diff --git a/apptentive/src/androidTest/java/com/apptentive/android/sdk/InstrumentationTestCaseBase.java b/apptentive/src/androidTest/java/com/apptentive/android/sdk/InstrumentationTestCaseBase.java index af2b08b7b..871bf3946 100644 --- a/apptentive/src/androidTest/java/com/apptentive/android/sdk/InstrumentationTestCaseBase.java +++ b/apptentive/src/androidTest/java/com/apptentive/android/sdk/InstrumentationTestCaseBase.java @@ -7,7 +7,7 @@ package com.apptentive.android.sdk; import android.content.Context; -import android.support.test.InstrumentationRegistry; +import androidx.test.InstrumentationRegistry; public class InstrumentationTestCaseBase extends TestCaseBase { protected Context getContext() { diff --git a/apptentive/src/androidTest/java/com/apptentive/android/sdk/conversation/FileMessageStoreTest.java b/apptentive/src/androidTest/java/com/apptentive/android/sdk/conversation/FileMessageStoreTest.java index 04c9d35d9..0d3acd1ef 100644 --- a/apptentive/src/androidTest/java/com/apptentive/android/sdk/conversation/FileMessageStoreTest.java +++ b/apptentive/src/androidTest/java/com/apptentive/android/sdk/conversation/FileMessageStoreTest.java @@ -6,8 +6,7 @@ package com.apptentive.android.sdk.conversation; -import android.support.test.InstrumentationRegistry; - +import androidx.test.InstrumentationRegistry; import com.apptentive.android.sdk.ApptentiveInternal; import com.apptentive.android.sdk.Encryption; import com.apptentive.android.sdk.TestCaseBase; diff --git a/apptentive/src/androidTest/java/com/apptentive/android/sdk/encryption/AesCbcEncryptionTest.java b/apptentive/src/androidTest/java/com/apptentive/android/sdk/encryption/AesCbcEncryptionTest.java index 1ba67b263..3cf907c47 100644 --- a/apptentive/src/androidTest/java/com/apptentive/android/sdk/encryption/AesCbcEncryptionTest.java +++ b/apptentive/src/androidTest/java/com/apptentive/android/sdk/encryption/AesCbcEncryptionTest.java @@ -2,7 +2,7 @@ import android.security.keystore.KeyGenParameterSpec; import android.security.keystore.KeyProperties; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.Encryption; diff --git a/apptentive/src/androidTest/java/com/apptentive/android/sdk/encryption/SecurityManagerTest.java b/apptentive/src/androidTest/java/com/apptentive/android/sdk/encryption/SecurityManagerTest.java index 51a168aaa..7f51b59aa 100644 --- a/apptentive/src/androidTest/java/com/apptentive/android/sdk/encryption/SecurityManagerTest.java +++ b/apptentive/src/androidTest/java/com/apptentive/android/sdk/encryption/SecurityManagerTest.java @@ -2,7 +2,7 @@ import android.security.keystore.KeyGenParameterSpec; import android.security.keystore.KeyProperties; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.Encryption; import com.apptentive.android.sdk.InstrumentationTestCaseBase; diff --git a/apptentive/src/androidTest/java/com/apptentive/android/sdk/module/engagement/InteractionLauncherTest.java b/apptentive/src/androidTest/java/com/apptentive/android/sdk/module/engagement/InteractionLauncherTest.java index 0c98baa1e..be41410b5 100644 --- a/apptentive/src/androidTest/java/com/apptentive/android/sdk/module/engagement/InteractionLauncherTest.java +++ b/apptentive/src/androidTest/java/com/apptentive/android/sdk/module/engagement/InteractionLauncherTest.java @@ -7,8 +7,8 @@ package com.apptentive.android.sdk.module.engagement; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.test.runner.AndroidJUnit4; +import androidx.annotation.NonNull; +import androidx.test.runner.AndroidJUnit4; import com.apptentive.android.sdk.InstrumentationTestCaseBase; import com.apptentive.android.sdk.module.engagement.interaction.model.Interaction; diff --git a/apptentive/src/androidTest/java/com/apptentive/android/sdk/module/engagement/InteractionNotificationBroadcastReceiverHandlerTest.java b/apptentive/src/androidTest/java/com/apptentive/android/sdk/module/engagement/InteractionNotificationBroadcastReceiverHandlerTest.java index 4b7a9bcd3..da804a712 100644 --- a/apptentive/src/androidTest/java/com/apptentive/android/sdk/module/engagement/InteractionNotificationBroadcastReceiverHandlerTest.java +++ b/apptentive/src/androidTest/java/com/apptentive/android/sdk/module/engagement/InteractionNotificationBroadcastReceiverHandlerTest.java @@ -8,7 +8,7 @@ import android.content.Context; import android.content.Intent; -import android.support.test.runner.AndroidJUnit4; +import androidx.test.runner.AndroidJUnit4; import com.apptentive.android.sdk.InstrumentationTestCaseBase; import com.apptentive.android.sdk.module.engagement.interaction.model.Interaction; diff --git a/apptentive/src/androidTest/java/com/apptentive/android/sdk/module/engagement/NoteInteractionNotificationAdapterTest.java b/apptentive/src/androidTest/java/com/apptentive/android/sdk/module/engagement/NoteInteractionNotificationAdapterTest.java index 9f44889d9..c666793fb 100644 --- a/apptentive/src/androidTest/java/com/apptentive/android/sdk/module/engagement/NoteInteractionNotificationAdapterTest.java +++ b/apptentive/src/androidTest/java/com/apptentive/android/sdk/module/engagement/NoteInteractionNotificationAdapterTest.java @@ -7,8 +7,8 @@ package com.apptentive.android.sdk.module.engagement; import android.content.Context; -import android.support.test.runner.AndroidJUnit4; +import androidx.test.runner.AndroidJUnit4; import com.apptentive.android.sdk.InstrumentationTestCaseBase; import com.apptentive.android.sdk.module.engagement.interaction.model.Interaction; import com.apptentive.android.sdk.module.engagement.interaction.model.TextModalInteraction; diff --git a/apptentive/src/androidTest/java/com/apptentive/android/sdk/storage/ApptentiveDatabaseHelperTest.java b/apptentive/src/androidTest/java/com/apptentive/android/sdk/storage/ApptentiveDatabaseHelperTest.java index 31f924df0..c7a2ba44f 100644 --- a/apptentive/src/androidTest/java/com/apptentive/android/sdk/storage/ApptentiveDatabaseHelperTest.java +++ b/apptentive/src/androidTest/java/com/apptentive/android/sdk/storage/ApptentiveDatabaseHelperTest.java @@ -7,32 +7,15 @@ package com.apptentive.android.sdk.storage; import android.content.Context; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; - -import com.apptentive.android.sdk.encryption.EncryptionKey; -import com.apptentive.android.sdk.model.AppReleasePayload; -import com.apptentive.android.sdk.model.DevicePayload; -import com.apptentive.android.sdk.model.EventPayload; -import com.apptentive.android.sdk.model.Payload; -import com.apptentive.android.sdk.model.PersonPayload; -import com.apptentive.android.sdk.model.SdkPayload; +import androidx.test.InstrumentationRegistry; +import androidx.test.runner.AndroidJUnit4; +import com.apptentive.android.sdk.model.*; import com.apptentive.android.sdk.module.messagecenter.model.MessageFactory; - -import org.json.JSONException; import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.List; +import java.io.*; @RunWith(AndroidJUnit4.class) public class ApptentiveDatabaseHelperTest { diff --git a/apptentive/src/androidTest/java/com/apptentive/android/sdk/util/threading/ConcurrentDispatchQueueTest.java b/apptentive/src/androidTest/java/com/apptentive/android/sdk/util/threading/ConcurrentDispatchQueueTest.java index d10fa1cdb..04e42b0f8 100644 --- a/apptentive/src/androidTest/java/com/apptentive/android/sdk/util/threading/ConcurrentDispatchQueueTest.java +++ b/apptentive/src/androidTest/java/com/apptentive/android/sdk/util/threading/ConcurrentDispatchQueueTest.java @@ -6,8 +6,7 @@ package com.apptentive.android.sdk.util.threading; -import android.support.test.runner.AndroidJUnit4; - +import androidx.test.runner.AndroidJUnit4; import com.apptentive.android.sdk.TestCaseBase; import org.junit.After; diff --git a/apptentive/src/androidTest/java/com/apptentive/android/sdk/util/threading/SerialDispatchQueueTest.java b/apptentive/src/androidTest/java/com/apptentive/android/sdk/util/threading/SerialDispatchQueueTest.java index c319bee4c..e44889ef9 100644 --- a/apptentive/src/androidTest/java/com/apptentive/android/sdk/util/threading/SerialDispatchQueueTest.java +++ b/apptentive/src/androidTest/java/com/apptentive/android/sdk/util/threading/SerialDispatchQueueTest.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.util.threading; -import android.support.test.runner.AndroidJUnit4; +import androidx.test.runner.AndroidJUnit4; import com.apptentive.android.sdk.TestCaseBase; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/Apptentive.java b/apptentive/src/main/java/com/apptentive/android/sdk/Apptentive.java index d73e8b20f..264bee999 100755 --- a/apptentive/src/main/java/com/apptentive/android/sdk/Apptentive.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/Apptentive.java @@ -13,8 +13,8 @@ import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.text.TextUtils; import android.webkit.MimeTypeMap; @@ -31,7 +31,6 @@ import com.apptentive.android.sdk.model.TimeExtendedData; import com.apptentive.android.sdk.module.engagement.EngagementModule; import com.apptentive.android.sdk.module.messagecenter.UnreadMessagesListener; -import com.apptentive.android.sdk.module.metric.MetricModule; import com.apptentive.android.sdk.module.rating.IRatingProvider; import com.apptentive.android.sdk.module.survey.OnSurveyFinishedListener; import com.apptentive.android.sdk.util.Constants; @@ -125,6 +124,11 @@ public static void register(Application application, ApptentiveConfiguration con throw new IllegalArgumentException("Apptentive configuration is null"); } + if (!Availability.isAndroidX()) { + ApptentiveLog.e("Unable to register Apptentive SDK: AndroidX support required. For more information see: https://learn.apptentive.com/knowledge-base/android-integration-reference/#migrating-from-support-library-to-androidx"); + return; + } + try { ApptentiveInternal.createInstance(application, configuration); } catch (Exception e) { @@ -548,7 +552,7 @@ public static boolean isApptentivePushNotification(Map data) { /** *

Use this method in your push receiver to build a pending Intent when an Apptentive push * notification is received. Pass the generated PendingIntent to - * {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent} to allow Apptentive + * {@link androidx.core.app.NotificationCompat.Builder#setContentIntent} to allow Apptentive * to display Interactions such as Message Center. Calling this method for a push {@link Intent} that did * not come from Apptentive will return a null object. If you receive a null object, your app will * need to handle this notification itself.

@@ -591,7 +595,7 @@ protected void execute() { /** *

Use this method in your push receiver to build a pending Intent when an Apptentive push * notification is received. Pass the generated PendingIntent to - * {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent} to allow Apptentive + * {@link androidx.core.app.NotificationCompat.Builder#setContentIntent} to allow Apptentive * to display Interactions such as Message Center. Calling this method for a push {@link Bundle} that * did not come from Apptentive will return a null object. If you receive a null object, your app * will need to handle this notification itself.

@@ -632,7 +636,7 @@ protected void execute() { /** *

Use this method in your push receiver to build a pending Intent when an Apptentive push * notification is received. Pass the generated PendingIntent to - * {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent} to allow Apptentive + * {@link androidx.core.app.NotificationCompat.Builder#setContentIntent} to allow Apptentive * to display Interactions such as Message Center. Calling this method for a push {@link Bundle} that * did not come from Apptentive will return a null object. If you receive a null object, your app * will need to handle this notification itself.

diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveBaseActivity.java b/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveBaseActivity.java index f3486853b..3c3248892 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveBaseActivity.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveBaseActivity.java @@ -1,15 +1,12 @@ package com.apptentive.android.sdk; -import android.content.Context; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatActivity; - +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; import com.apptentive.android.sdk.conversation.Conversation; import com.apptentive.android.sdk.conversation.ConversationDispatchTask; import com.apptentive.android.sdk.debug.ErrorMetrics; import com.apptentive.android.sdk.module.engagement.EngagementModule; -import com.apptentive.android.sdk.module.engagement.interaction.model.Interaction; import com.apptentive.android.sdk.notifications.ApptentiveNotification; import com.apptentive.android.sdk.notifications.ApptentiveNotificationCenter; import com.apptentive.android.sdk.notifications.ApptentiveNotificationObserver; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveConfiguration.java b/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveConfiguration.java index f8a52d078..77eafcb61 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveConfiguration.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveConfiguration.java @@ -6,8 +6,8 @@ package com.apptentive.android.sdk; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.util.StringUtils; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveInstance.java b/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveInstance.java index e6b1f2492..efd7eaaf6 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveInstance.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveInstance.java @@ -10,8 +10,8 @@ import android.content.Context; import android.content.SharedPreferences; import android.content.res.Resources; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.Apptentive.AuthenticationFailedListener; import com.apptentive.android.sdk.Apptentive.LoginCallback; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveInternal.java b/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveInternal.java index f5a5bff7c..8fe183d8c 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveInternal.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveInternal.java @@ -21,9 +21,9 @@ import android.content.res.TypedArray; import android.os.Build; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.content.ContextCompat; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; import android.text.TextUtils; import com.apptentive.android.sdk.Apptentive.LoginCallback; @@ -295,9 +295,9 @@ private boolean setApplicationDefaultTheme(int themeResId) { Resources.Theme appDefaultTheme = appContext.getResources().newTheme(); appDefaultTheme.applyStyle(themeResId, true); - TypedArray a = appDefaultTheme.obtainStyledAttributes(android.support.v7.appcompat.R.styleable.AppCompatTheme); + TypedArray a = appDefaultTheme.obtainStyledAttributes(androidx.appcompat.R.styleable.AppCompatTheme); try { - if (a.hasValue(android.support.v7.appcompat.R.styleable.AppCompatTheme_colorPrimaryDark)) { + if (a.hasValue(androidx.appcompat.R.styleable.AppCompatTheme_colorPrimaryDark)) { // Only set to use if it's an AppCompat theme. See updateApptentiveInteractionTheme() for theme inheritance chain appDefaultAppCompatThemeId = themeResId; return true; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveLog.java b/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveLog.java index aa559094d..d379b125c 100755 --- a/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveLog.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveLog.java @@ -7,8 +7,8 @@ package com.apptentive.android.sdk; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import android.util.Log; import com.apptentive.android.sdk.debug.AsyncLogWriter; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveNullInstance.java b/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveNullInstance.java index 8eca3f20c..ca8ea439a 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveNullInstance.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveNullInstance.java @@ -10,8 +10,8 @@ import android.content.Context; import android.content.SharedPreferences; import android.content.res.Resources; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.comm.ApptentiveHttpClient; import com.apptentive.android.sdk.conversation.Conversation; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveViewActivity.java b/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveViewActivity.java index 82444a50f..b83892ad4 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveViewActivity.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/ApptentiveViewActivity.java @@ -17,19 +17,18 @@ import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; -import android.support.v4.app.FragmentManager; -import android.support.v4.content.ContextCompat; -import android.support.v4.content.IntentCompat; -import android.support.v4.content.res.ResourcesCompat; -import android.support.v4.view.ViewPager; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatDelegate; -import android.support.v7.widget.Toolbar; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatDelegate; +import androidx.appcompat.widget.Toolbar; +import androidx.core.content.ContextCompat; +import androidx.core.content.res.ResourcesCompat; import android.view.MenuItem; import android.view.View; import android.view.ViewTreeObserver; import android.view.WindowManager; +import androidx.fragment.app.FragmentManager; +import androidx.viewpager.widget.ViewPager; import com.apptentive.android.sdk.adapter.ApptentiveViewPagerAdapter; import com.apptentive.android.sdk.conversation.Conversation; import com.apptentive.android.sdk.debug.Assert; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/Availability.java b/apptentive/src/main/java/com/apptentive/android/sdk/Availability.java new file mode 100644 index 000000000..49f9a10b7 --- /dev/null +++ b/apptentive/src/main/java/com/apptentive/android/sdk/Availability.java @@ -0,0 +1,18 @@ +package com.apptentive.android.sdk; + +import androidx.appcompat.app.AppCompatActivity; + +public class Availability { + /** + * Checks if the app is built with AndroidX dependencies + */ + public static boolean isAndroidX() { + try { + // we check if a class from androidx.appcompat:appcompat library is available + AppCompatActivity.class.getName(); + return true; + } catch (NoClassDefFoundError e) { + return false; + } + } +} diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/Encryption.java b/apptentive/src/main/java/com/apptentive/android/sdk/Encryption.java index 177a4f9e3..18f64dad4 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/Encryption.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/Encryption.java @@ -1,6 +1,6 @@ package com.apptentive.android.sdk; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.encryption.EncryptionException; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/adapter/ApptentiveViewPagerAdapter.java b/apptentive/src/main/java/com/apptentive/android/sdk/adapter/ApptentiveViewPagerAdapter.java index 67acfcd13..4de9afb09 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/adapter/ApptentiveViewPagerAdapter.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/adapter/ApptentiveViewPagerAdapter.java @@ -8,11 +8,11 @@ import java.util.ArrayList; import java.util.List; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentPagerAdapter; +import androidx.fragment.app.Fragment; import android.view.ViewGroup; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentPagerAdapter; import com.apptentive.android.sdk.module.engagement.interaction.fragment.ApptentiveBaseFragment; public class ApptentiveViewPagerAdapter extends FragmentPagerAdapter { diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/conversation/Conversation.java b/apptentive/src/main/java/com/apptentive/android/sdk/conversation/Conversation.java index 6995ff823..b734f6f06 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/conversation/Conversation.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/conversation/Conversation.java @@ -8,8 +8,8 @@ import android.content.Context; import android.content.SharedPreferences; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.Apptentive; import com.apptentive.android.sdk.ApptentiveInternal; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationData.java b/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationData.java index 0cd98dfee..871a9c2d2 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationData.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationData.java @@ -6,8 +6,8 @@ package com.apptentive.android.sdk.conversation; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.debug.Assert; import com.apptentive.android.sdk.storage.AppRelease; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationDispatchTask.java b/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationDispatchTask.java index c6389e023..45b46e913 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationDispatchTask.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationDispatchTask.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.conversation; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.Apptentive; import com.apptentive.android.sdk.ApptentiveInstance; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationManager.java b/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationManager.java index ab233d99c..fb9139360 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationManager.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationManager.java @@ -8,8 +8,8 @@ import android.content.Context; import android.content.SharedPreferences; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.Apptentive; import com.apptentive.android.sdk.Apptentive.LoginCallback; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationMetadataItem.java b/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationMetadataItem.java index f2561c955..ff5f0753e 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationMetadataItem.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/conversation/ConversationMetadataItem.java @@ -1,6 +1,6 @@ package com.apptentive.android.sdk.conversation; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.encryption.SecurityManager; import com.apptentive.android.sdk.serialization.SerializableObject; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/conversation/FileMessageStore.java b/apptentive/src/main/java/com/apptentive/android/sdk/conversation/FileMessageStore.java index b928b24c7..66ad586ac 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/conversation/FileMessageStore.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/conversation/FileMessageStore.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.conversation; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.Encryption; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/debug/Assert.java b/apptentive/src/main/java/com/apptentive/android/sdk/debug/Assert.java index 14864d1fb..1c6b52188 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/debug/Assert.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/debug/Assert.java @@ -1,6 +1,6 @@ package com.apptentive.android.sdk.debug; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.util.ObjectUtils; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/debug/AsyncLogWriter.java b/apptentive/src/main/java/com/apptentive/android/sdk/debug/AsyncLogWriter.java index d4a90b1b4..7a1850c77 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/debug/AsyncLogWriter.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/debug/AsyncLogWriter.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.debug; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.util.Util; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/debug/ErrorMetrics.java b/apptentive/src/main/java/com/apptentive/android/sdk/debug/ErrorMetrics.java index a1c8b14ce..3a46ed53b 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/debug/ErrorMetrics.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/debug/ErrorMetrics.java @@ -1,6 +1,6 @@ package com.apptentive.android.sdk.debug; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.util.ObjectUtils; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/debug/LogBroadcastReceiver.java b/apptentive/src/main/java/com/apptentive/android/sdk/debug/LogBroadcastReceiver.java index 8a23709cc..af3b563c3 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/debug/LogBroadcastReceiver.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/debug/LogBroadcastReceiver.java @@ -10,7 +10,7 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; -import android.support.v4.app.NotificationManagerCompat; +import androidx.core.app.NotificationManagerCompat; import com.apptentive.android.sdk.ApptentiveLog; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/debug/LogMonitor.java b/apptentive/src/main/java/com/apptentive/android/sdk/debug/LogMonitor.java index 125ab3af2..213b13f75 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/debug/LogMonitor.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/debug/LogMonitor.java @@ -7,7 +7,7 @@ package com.apptentive.android.sdk.debug; import android.content.Context; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.widget.Toast; import com.apptentive.android.sdk.ApptentiveLog; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/debug/LogMonitorSessionIO.java b/apptentive/src/main/java/com/apptentive/android/sdk/debug/LogMonitorSessionIO.java index dacc2eeb1..41b6b488f 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/debug/LogMonitorSessionIO.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/debug/LogMonitorSessionIO.java @@ -8,7 +8,7 @@ import android.content.Context; import android.content.SharedPreferences; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.util.Jwt; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/debug/TroubleshootingNotificationBuilder.java b/apptentive/src/main/java/com/apptentive/android/sdk/debug/TroubleshootingNotificationBuilder.java index 87a43b050..c7d94abe4 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/debug/TroubleshootingNotificationBuilder.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/debug/TroubleshootingNotificationBuilder.java @@ -15,8 +15,8 @@ import android.content.res.Resources; import android.graphics.Color; import android.os.Build; -import android.support.annotation.NonNull; -import android.support.v4.app.NotificationCompat; +import androidx.annotation.NonNull; +import androidx.core.app.NotificationCompat; import com.apptentive.android.sdk.R; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/AesCBCEncryption.java b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/AesCBCEncryption.java index 9f05983c3..6b0409e2d 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/AesCBCEncryption.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/AesCBCEncryption.java @@ -1,6 +1,6 @@ package com.apptentive.android.sdk.encryption; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.Encryption; import com.apptentive.android.sdk.util.StringUtils; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/EncryptionFactory.java b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/EncryptionFactory.java index d34531ccd..e8584a76f 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/EncryptionFactory.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/EncryptionFactory.java @@ -1,6 +1,6 @@ package com.apptentive.android.sdk.encryption; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.Encryption; import com.apptentive.android.sdk.encryption.EncryptionKey.Transformation; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/EncryptionHelper.java b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/EncryptionHelper.java index d18f5562b..ee5966d51 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/EncryptionHelper.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/EncryptionHelper.java @@ -1,8 +1,8 @@ package com.apptentive.android.sdk.encryption; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.util.AtomicFile; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.util.AtomicFile; import com.apptentive.android.sdk.Encryption; import com.apptentive.android.sdk.util.Util; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/EncryptionKey.java b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/EncryptionKey.java index 7a95d0ca0..4e7bf4d2f 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/EncryptionKey.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/EncryptionKey.java @@ -1,7 +1,7 @@ package com.apptentive.android.sdk.encryption; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.util.StringUtils; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/SecurityManager.java b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/SecurityManager.java index 8fdb128f4..179b997a2 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/SecurityManager.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/SecurityManager.java @@ -3,8 +3,8 @@ import android.content.Context; import android.content.SharedPreferences; import android.os.Build; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.Encryption; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolver.java b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolver.java index 28cd1c66e..6f17e47ae 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolver.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolver.java @@ -1,8 +1,8 @@ package com.apptentive.android.sdk.encryption.resolvers; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.encryption.EncryptionKey; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolver18.java b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolver18.java index 4692a726f..7bbc1f5f8 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolver18.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolver18.java @@ -4,9 +4,9 @@ import android.content.SharedPreferences; import android.os.Build; import android.security.KeyPairGeneratorSpec; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.RequiresApi; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; import android.util.Base64; import com.apptentive.android.sdk.ApptentiveLog; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolver23.java b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolver23.java index 8914992b8..78f1c07ed 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolver23.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolver23.java @@ -4,9 +4,9 @@ import android.os.Build; import android.security.keystore.KeyGenParameterSpec; import android.security.keystore.KeyProperties; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.RequiresApi; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; import com.apptentive.android.sdk.encryption.EncryptionKey; import com.apptentive.android.sdk.util.ObjectUtils; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolverFactory.java b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolverFactory.java index 37dbacf0f..a3db855aa 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolverFactory.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolverFactory.java @@ -1,7 +1,7 @@ package com.apptentive.android.sdk.encryption.resolvers; import android.os.Build; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; public class KeyResolverFactory { public static @NonNull KeyResolver createKeyResolver(int versionCode) { diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolverNoOp.java b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolverNoOp.java index eea57fc4b..7a3b865bc 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolverNoOp.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/encryption/resolvers/KeyResolverNoOp.java @@ -1,7 +1,7 @@ package com.apptentive.android.sdk.encryption.resolvers; import android.content.Context; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.encryption.EncryptionKey; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/lifecycle/ApptentiveActivityLifecycleCallbacks.java b/apptentive/src/main/java/com/apptentive/android/sdk/lifecycle/ApptentiveActivityLifecycleCallbacks.java index a2b60fef2..68825572e 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/lifecycle/ApptentiveActivityLifecycleCallbacks.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/lifecycle/ApptentiveActivityLifecycleCallbacks.java @@ -10,7 +10,7 @@ import android.app.Application; import android.os.Bundle; import android.os.Handler; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.debug.ErrorMetrics; import com.apptentive.android.sdk.notifications.ApptentiveNotificationCenter; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/model/CompoundMessage.java b/apptentive/src/main/java/com/apptentive/android/sdk/model/CompoundMessage.java index e64cf87e6..ac9b0a9ee 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/model/CompoundMessage.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/model/CompoundMessage.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.model; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.ApptentiveInternal; import com.apptentive.android.sdk.ApptentiveLog; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/model/FragmentFactory.java b/apptentive/src/main/java/com/apptentive/android/sdk/model/FragmentFactory.java index edaf41c9e..43d5e1dcf 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/model/FragmentFactory.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/model/FragmentFactory.java @@ -7,7 +7,7 @@ package com.apptentive.android.sdk.model; import android.os.Bundle; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.module.engagement.interaction.fragment.AboutFragment; import com.apptentive.android.sdk.module.engagement.interaction.fragment.AppStoreRatingFragment; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/model/JsonPayload.java b/apptentive/src/main/java/com/apptentive/android/sdk/model/JsonPayload.java index 35e32de93..63fdbfe38 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/model/JsonPayload.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/model/JsonPayload.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.model; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.network.HttpRequestMethod; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/model/Payload.java b/apptentive/src/main/java/com/apptentive/android/sdk/model/Payload.java index 3f0a48422..18b394366 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/model/Payload.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/model/Payload.java @@ -6,8 +6,8 @@ package com.apptentive.android.sdk.model; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.Encryption; import com.apptentive.android.sdk.encryption.EncryptionKey; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/DefaultInteractionLauncherFactory.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/DefaultInteractionLauncherFactory.java index daafe3f74..078ee2c6a 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/DefaultInteractionLauncherFactory.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/DefaultInteractionLauncherFactory.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.module.engagement; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.module.engagement.interaction.model.Interaction; import com.apptentive.android.sdk.module.engagement.interaction.model.Interaction.DisplayType; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/ApptentiveBaseFragment.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/ApptentiveBaseFragment.java index 0780cbf72..a7f46ba01 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/ApptentiveBaseFragment.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/ApptentiveBaseFragment.java @@ -16,15 +16,6 @@ import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.text.TextUtils; import android.view.Menu; import android.view.MenuInflater; @@ -54,6 +45,16 @@ import java.util.List; import java.util.Map; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + import static com.apptentive.android.sdk.ApptentiveHelper.dispatchConversationTask; public abstract class ApptentiveBaseFragment extends DialogFragment implements InteractionManager.InteractionUpdateListener { @@ -198,7 +199,7 @@ public void onViewCreated(View view, Bundle savedInstanceState) { if (!parentMenuItems.contains(Integer.valueOf(menuItemId))) { fragmentMenuItems.add(Integer.valueOf(menuItemId)); Drawable drawable = combinedMenu.getItem(i).getIcon(); - if(drawable != null) { + if (drawable != null) { drawable.mutate(); drawable.setColorFilter(colorControlNormal, PorterDuff.Mode.SRC_ATOP); } @@ -281,9 +282,9 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { // Make menu icon color same as toolbar up arrow. Both use ?colorControlNormal // By default colorControlNormal has same value as textColorPrimary defined in toolbar theme overlay int colorControlNormal = Util.getThemeColor(ApptentiveInternal.getInstance().getApptentiveToolbarTheme(), R.attr.colorControlNormal); - for(int i = 0; i < menu.size(); i++){ + for (int i = 0; i < menu.size(); i++) { Drawable drawable = menu.getItem(i).getIcon(); - if(drawable != null) { + if (drawable != null) { drawable.mutate(); drawable.setColorFilter(colorControlNormal, PorterDuff.Mode.SRC_ATOP); } @@ -362,6 +363,7 @@ public void showToolbarElevation(boolean visible) { /** * Delegates the hardware or software back button press to the Interaction Fragment. + * * @return */ /* Guarded */ diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/MessageCenterErrorFragment.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/MessageCenterErrorFragment.java index 7e3aea1ce..73abb4f14 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/MessageCenterErrorFragment.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/MessageCenterErrorFragment.java @@ -10,12 +10,12 @@ import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; -import android.support.v7.widget.AppCompatImageView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import androidx.appcompat.widget.AppCompatImageView; import com.apptentive.android.sdk.ApptentiveInternal; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.ApptentiveViewExitType; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/MessageCenterFragment.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/MessageCenterFragment.java index b90895ced..b576983ac 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/MessageCenterFragment.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/MessageCenterFragment.java @@ -19,12 +19,8 @@ import android.os.Handler; import android.os.Message; import android.os.Parcelable; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.view.ViewCompat; -import android.support.v7.widget.LinearLayoutManager; +import androidx.annotation.Nullable; +import androidx.core.view.ViewCompat; import android.text.Editable; import android.text.TextUtils; import android.view.LayoutInflater; @@ -37,6 +33,10 @@ import android.widget.AbsListView; import android.widget.EditText; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; +import androidx.recyclerview.widget.LinearLayoutManager; import com.apptentive.android.sdk.Apptentive; import com.apptentive.android.sdk.ApptentiveInternal; import com.apptentive.android.sdk.ApptentiveLog; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/SurveyFragment.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/SurveyFragment.java index 4941744b3..72b56ab01 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/SurveyFragment.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/SurveyFragment.java @@ -11,7 +11,6 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; -import android.support.v4.app.Fragment; import android.text.TextUtils; import android.view.Gravity; import android.view.LayoutInflater; @@ -26,6 +25,7 @@ import android.widget.TextView; import android.widget.Toast; +import androidx.fragment.app.Fragment; import com.apptentive.android.sdk.ApptentiveInternal; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.ApptentiveViewExitType; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/UpgradeMessageFragment.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/UpgradeMessageFragment.java index da2217ff9..4b3ac5bdf 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/UpgradeMessageFragment.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/fragment/UpgradeMessageFragment.java @@ -12,7 +12,7 @@ import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; -import android.support.v4.content.ContextCompat; +import androidx.core.content.ContextCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/BaseSurveyQuestionView.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/BaseSurveyQuestionView.java index 3b966647f..f29534623 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/BaseSurveyQuestionView.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/BaseSurveyQuestionView.java @@ -7,7 +7,6 @@ package com.apptentive.android.sdk.module.engagement.interaction.view.survey; import android.os.Bundle; -import android.support.v4.app.Fragment; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; @@ -16,6 +15,7 @@ import android.widget.LinearLayout; import android.widget.TextView; +import androidx.fragment.app.Fragment; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.R; import com.apptentive.android.sdk.module.survey.OnSurveyQuestionAnsweredListener; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/RangeSurveyQuestionView.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/RangeSurveyQuestionView.java index 2a6b9ce67..9bf7c0e60 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/RangeSurveyQuestionView.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/RangeSurveyQuestionView.java @@ -7,7 +7,7 @@ package com.apptentive.android.sdk.module.engagement.interaction.view.survey; import android.os.Bundle; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/SurveyQuestionChoice.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/SurveyQuestionChoice.java index 98a3a7846..f7a615b02 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/SurveyQuestionChoice.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/SurveyQuestionChoice.java @@ -7,7 +7,6 @@ package com.apptentive.android.sdk.module.engagement.interaction.view.survey; import android.content.Context; -import android.support.design.widget.TextInputLayout; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; @@ -23,6 +22,7 @@ import com.apptentive.android.sdk.module.engagement.interaction.model.survey.AnswerDefinition; import com.apptentive.android.sdk.module.engagement.interaction.model.survey.Question; +import com.google.android.material.textfield.TextInputLayout; import org.json.JSONObject; import static com.apptentive.android.sdk.debug.ErrorMetrics.logException; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/TextSurveyQuestionView.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/TextSurveyQuestionView.java index 6c8747cfe..ea1582bc8 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/TextSurveyQuestionView.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/interaction/view/survey/TextSurveyQuestionView.java @@ -8,7 +8,6 @@ import android.os.Build; import android.os.Bundle; -import android.support.design.widget.TextInputLayout; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; @@ -23,6 +22,7 @@ import com.apptentive.android.sdk.R; import com.apptentive.android.sdk.module.engagement.interaction.model.survey.SinglelineQuestion; +import com.google.android.material.textfield.TextInputLayout; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/notification/NoteInteractionNotificationAdapter.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/notification/NoteInteractionNotificationAdapter.java index 0c3454bba..bf3840702 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/notification/NoteInteractionNotificationAdapter.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/notification/NoteInteractionNotificationAdapter.java @@ -12,7 +12,7 @@ import android.content.Context; import android.content.Intent; import android.content.res.Resources; -import android.support.v4.app.NotificationCompat; +import androidx.core.app.NotificationCompat; import android.util.TypedValue; import com.apptentive.android.sdk.ApptentiveHelper; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/notification/NotificationChannelHolder.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/notification/NotificationChannelHolder.java index 1b05a5e01..3fe031a8b 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/notification/NotificationChannelHolder.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/engagement/notification/NotificationChannelHolder.java @@ -9,7 +9,7 @@ import android.app.NotificationChannel; import android.app.NotificationManager; import android.graphics.Color; -import android.support.annotation.RequiresApi; +import androidx.annotation.RequiresApi; import static com.apptentive.android.sdk.util.Constants.NOTIFICATION_CHANNEL_DEFAULT; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/MessageManager.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/MessageManager.java index 2ca91229c..2c3b86198 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/MessageManager.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/MessageManager.java @@ -10,7 +10,7 @@ import android.app.Notification; import android.app.PendingIntent; import android.content.Context; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.ApptentiveInternal; import com.apptentive.android.sdk.ApptentiveLog; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/MessagePollingWorker.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/MessagePollingWorker.java index 1276bf2e8..bfa143054 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/MessagePollingWorker.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/MessagePollingWorker.java @@ -7,7 +7,7 @@ package com.apptentive.android.sdk.module.messagecenter; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.ApptentiveInternal; import com.apptentive.android.sdk.ApptentiveLog; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/model/ApptentiveToastNotification.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/model/ApptentiveToastNotification.java index 1b595b07a..c6e7a34a8 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/model/ApptentiveToastNotification.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/model/ApptentiveToastNotification.java @@ -8,7 +8,7 @@ import android.app.Notification; import android.content.Context; -import android.support.v4.app.NotificationCompat; +import androidx.core.app.NotificationCompat; import android.view.View; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/AttachmentPreviewDialog.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/AttachmentPreviewDialog.java index 9cb3ad07c..cd175164f 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/AttachmentPreviewDialog.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/AttachmentPreviewDialog.java @@ -12,7 +12,6 @@ import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; -import android.support.v4.app.DialogFragment; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; @@ -24,6 +23,7 @@ import android.widget.LinearLayout; import android.widget.ProgressBar; +import androidx.fragment.app.DialogFragment; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.R; import com.apptentive.android.sdk.util.image.ApptentiveAttachmentLoader; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/MessageCenterRecyclerView.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/MessageCenterRecyclerView.java index 5903be6e0..a46a3c46d 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/MessageCenterRecyclerView.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/MessageCenterRecyclerView.java @@ -7,8 +7,8 @@ package com.apptentive.android.sdk.module.messagecenter.view; import android.content.Context; -import android.support.annotation.Nullable; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.RecyclerView; import android.util.AttributeSet; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/MessageCenterRecyclerViewAdapter.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/MessageCenterRecyclerViewAdapter.java index 47f90209f..6a167e7aa 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/MessageCenterRecyclerViewAdapter.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/MessageCenterRecyclerViewAdapter.java @@ -7,7 +7,7 @@ package com.apptentive.android.sdk.module.messagecenter.view; import android.os.AsyncTask; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/AutomatedMessageHolder.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/AutomatedMessageHolder.java index 0bc999954..cdaf8f619 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/AutomatedMessageHolder.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/AutomatedMessageHolder.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.module.messagecenter.view.holder; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; import android.widget.TextView; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/ContextMessageHolder.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/ContextMessageHolder.java index f1f1af45a..f3a7cf1a8 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/ContextMessageHolder.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/ContextMessageHolder.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.module.messagecenter.view.holder; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; import android.widget.TextView; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/GreetingHolder.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/GreetingHolder.java index 7a89bb89e..64b677862 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/GreetingHolder.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/GreetingHolder.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.module.messagecenter.view.holder; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; import android.widget.ImageButton; import android.widget.TextView; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/IncomingCompoundMessageHolder.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/IncomingCompoundMessageHolder.java index a7c443ead..94939b831 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/IncomingCompoundMessageHolder.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/IncomingCompoundMessageHolder.java @@ -7,7 +7,7 @@ package com.apptentive.android.sdk.module.messagecenter.view.holder; import android.accessibilityservice.AccessibilityServiceInfo; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.text.TextUtils; import android.view.View; import android.view.accessibility.AccessibilityManager; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/MessageComposerHolder.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/MessageComposerHolder.java index 8ccaf5804..b8705ee80 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/MessageComposerHolder.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/MessageComposerHolder.java @@ -10,9 +10,8 @@ import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; -import android.support.v4.content.ContextCompat; -import android.support.v4.graphics.drawable.DrawableCompat; -import android.support.v7.widget.RecyclerView; +import androidx.core.content.ContextCompat; +import androidx.core.graphics.drawable.DrawableCompat; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; @@ -22,6 +21,7 @@ import android.widget.ImageButton; import android.widget.TextView; +import androidx.recyclerview.widget.RecyclerView; import com.apptentive.android.sdk.R; import com.apptentive.android.sdk.module.engagement.interaction.fragment.MessageCenterFragment; import com.apptentive.android.sdk.module.messagecenter.model.Composer; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/MessageHolder.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/MessageHolder.java index d912a8ac1..0cb868c85 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/MessageHolder.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/MessageHolder.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.module.messagecenter.view.holder; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.text.TextUtils; import android.view.View; import android.widget.TextView; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/OutgoingCompoundMessageHolder.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/OutgoingCompoundMessageHolder.java index 53910d588..40520c722 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/OutgoingCompoundMessageHolder.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/OutgoingCompoundMessageHolder.java @@ -7,7 +7,7 @@ package com.apptentive.android.sdk.module.messagecenter.view.holder; import android.accessibilityservice.AccessibilityServiceInfo; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.text.TextUtils; import android.view.View; import android.view.accessibility.AccessibilityManager; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/StatusHolder.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/StatusHolder.java index d59ce11d8..eb102adad 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/StatusHolder.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/StatusHolder.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.module.messagecenter.view.holder; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; import android.widget.ImageView; import android.widget.TextView; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/WhoCardHolder.java b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/WhoCardHolder.java index 8adcb0884..d489c9cac 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/WhoCardHolder.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/module/messagecenter/view/holder/WhoCardHolder.java @@ -7,8 +7,7 @@ package com.apptentive.android.sdk.module.messagecenter.view.holder; import android.os.Build; -import android.support.design.widget.TextInputLayout; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; @@ -25,6 +24,7 @@ import com.apptentive.android.sdk.util.Util; import com.apptentive.android.sdk.util.threading.DispatchQueue; import com.apptentive.android.sdk.util.threading.DispatchTask; +import com.google.android.material.textfield.TextInputLayout; import static android.view.View.GONE; import static android.view.View.VISIBLE; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/partners/apptimize/ApptentiveApptimize.java b/apptentive/src/main/java/com/apptentive/android/sdk/partners/apptimize/ApptentiveApptimize.java index de487edd9..93eef3a82 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/partners/apptimize/ApptentiveApptimize.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/partners/apptimize/ApptentiveApptimize.java @@ -1,6 +1,6 @@ package com.apptentive.android.sdk.partners.apptimize; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.ApptentiveLogTag; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/serialization/ObjectSerialization.java b/apptentive/src/main/java/com/apptentive/android/sdk/serialization/ObjectSerialization.java index 9e9fafb82..a8ca4cd0b 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/serialization/ObjectSerialization.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/serialization/ObjectSerialization.java @@ -1,7 +1,7 @@ package com.apptentive.android.sdk.serialization; -import android.support.annotation.NonNull; -import android.support.v4.util.AtomicFile; +import androidx.annotation.NonNull; +import androidx.core.util.AtomicFile; import com.apptentive.android.sdk.Encryption; import com.apptentive.android.sdk.util.Util; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/storage/ApptentiveDatabaseHelper.java b/apptentive/src/main/java/com/apptentive/android/sdk/storage/ApptentiveDatabaseHelper.java index bf5df1e14..11fd1510f 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/storage/ApptentiveDatabaseHelper.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/storage/ApptentiveDatabaseHelper.java @@ -12,7 +12,7 @@ import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.Encryption; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/storage/DatabaseMigrator.java b/apptentive/src/main/java/com/apptentive/android/sdk/storage/DatabaseMigrator.java index 9c038b00f..c9a88e7f5 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/storage/DatabaseMigrator.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/storage/DatabaseMigrator.java @@ -2,7 +2,7 @@ import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.Encryption; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/storage/FileSerializer.java b/apptentive/src/main/java/com/apptentive/android/sdk/storage/FileSerializer.java index 8177bdf63..a42c4a372 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/storage/FileSerializer.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/storage/FileSerializer.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.storage; -import android.support.v4.util.AtomicFile; +import androidx.core.util.AtomicFile; import com.apptentive.android.sdk.util.Util; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/storage/Person.java b/apptentive/src/main/java/com/apptentive/android/sdk/storage/Person.java index d8551fb92..924b6474e 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/storage/Person.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/storage/Person.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.storage; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.util.StringUtils; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/util/AdvertiserManager.java b/apptentive/src/main/java/com/apptentive/android/sdk/util/AdvertiserManager.java index e0418d58f..6e94d2e0e 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/util/AdvertiserManager.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/util/AdvertiserManager.java @@ -7,7 +7,7 @@ package com.apptentive.android.sdk.util; import android.content.Context; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.notifications.ApptentiveNotificationCenter; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/util/Constants.java b/apptentive/src/main/java/com/apptentive/android/sdk/util/Constants.java index cd5d85e0a..1b7e65d7c 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/util/Constants.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/util/Constants.java @@ -9,7 +9,7 @@ public class Constants { public static final int API_VERSION = 9; - private static final String APPTENTIVE_SDK_VERSION = "5.4.7"; + private static final String APPTENTIVE_SDK_VERSION = "5.5.0"; public static final int DEFAULT_CONNECT_TIMEOUT_MILLIS = 45000; public static final int DEFAULT_READ_TIMEOUT_MILLIS = 45000; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/util/ContextUtils.java b/apptentive/src/main/java/com/apptentive/android/sdk/util/ContextUtils.java index b1aa6813a..751932078 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/util/ContextUtils.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/util/ContextUtils.java @@ -8,8 +8,8 @@ import android.app.NotificationManager; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.debug.Assert; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/util/NotificationUtils.java b/apptentive/src/main/java/com/apptentive/android/sdk/util/NotificationUtils.java index 7ab647502..e05407f35 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/util/NotificationUtils.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/util/NotificationUtils.java @@ -10,8 +10,8 @@ import android.app.NotificationManager; import android.content.Context; import android.os.Build; -import android.support.annotation.NonNull; -import android.support.v4.app.NotificationManagerCompat; +import androidx.annotation.NonNull; +import androidx.core.app.NotificationManagerCompat; public class NotificationUtils { public static boolean isNotificationChannelEnabled(Context context, @NonNull String channelId){ diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/util/ObjectUtils.java b/apptentive/src/main/java/com/apptentive/android/sdk/util/ObjectUtils.java index 16c05e4b1..c8ce67f7f 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/util/ObjectUtils.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/util/ObjectUtils.java @@ -21,7 +21,7 @@ package com.apptentive.android.sdk.util; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import java.util.HashMap; import java.util.Map; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/util/RuntimeUtils.java b/apptentive/src/main/java/com/apptentive/android/sdk/util/RuntimeUtils.java index f8676e9a0..f3f64621b 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/util/RuntimeUtils.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/util/RuntimeUtils.java @@ -9,7 +9,7 @@ import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.Apptentive; import com.apptentive.android.sdk.ApptentiveLog; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/util/Util.java b/apptentive/src/main/java/com/apptentive/android/sdk/util/Util.java index ac2130421..1dc4b68c9 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/util/Util.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/util/Util.java @@ -36,11 +36,11 @@ import android.os.Environment; import android.provider.MediaStore; import android.provider.Settings; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.content.ContextCompat; -import android.support.v4.content.IntentCompat; -import android.support.v4.util.AtomicFile; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.core.content.IntentCompat; +import androidx.core.util.AtomicFile; import android.text.TextUtils; import android.util.Patterns; import android.util.TypedValue; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/util/cache/ImageMemoryCache.java b/apptentive/src/main/java/com/apptentive/android/sdk/util/cache/ImageMemoryCache.java index 19ee45238..7a075c4da 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/util/cache/ImageMemoryCache.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/util/cache/ImageMemoryCache.java @@ -7,7 +7,7 @@ import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; -import android.support.v4.util.LruCache; +import androidx.collection.LruCache; import java.util.ArrayList; import java.util.Comparator; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/util/image/ImageGridViewAdapter.java b/apptentive/src/main/java/com/apptentive/android/sdk/util/image/ImageGridViewAdapter.java index 1651e9cd4..b128b5cea 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/util/image/ImageGridViewAdapter.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/util/image/ImageGridViewAdapter.java @@ -9,8 +9,6 @@ import android.content.Context; import android.graphics.Bitmap; import android.os.Environment; -import android.support.v7.app.AppCompatDelegate; -import android.support.v7.widget.AppCompatImageView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; @@ -22,6 +20,8 @@ import android.widget.ProgressBar; import android.widget.TextView; +import androidx.appcompat.app.AppCompatDelegate; +import androidx.appcompat.widget.AppCompatImageView; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.R; import com.apptentive.android.sdk.util.Util; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/util/image/PreviewImageView.java b/apptentive/src/main/java/com/apptentive/android/sdk/util/image/PreviewImageView.java index 8e7c140ca..407389312 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/util/image/PreviewImageView.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/util/image/PreviewImageView.java @@ -10,8 +10,8 @@ import android.graphics.Matrix; import android.graphics.RectF; import android.graphics.drawable.Drawable; -import android.support.v4.view.GestureDetectorCompat; -import android.support.v7.widget.AppCompatImageView; +import androidx.appcompat.widget.AppCompatImageView; +import androidx.core.view.GestureDetectorCompat; import android.util.AttributeSet; import android.view.GestureDetector; import android.view.MotionEvent; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/view/ApptentiveAlertDialog.java b/apptentive/src/main/java/com/apptentive/android/sdk/view/ApptentiveAlertDialog.java index 5947ca671..1165282b7 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/view/ApptentiveAlertDialog.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/view/ApptentiveAlertDialog.java @@ -4,15 +4,15 @@ import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentTransaction; -import android.support.v7.app.AlertDialog; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.TextView; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; import com.apptentive.android.sdk.ApptentiveLog; import com.apptentive.android.sdk.R; import com.apptentive.android.sdk.debug.ErrorMetrics; diff --git a/apptentive/src/main/java/com/apptentive/android/sdk/view/ApptentiveNestedScrollView.java b/apptentive/src/main/java/com/apptentive/android/sdk/view/ApptentiveNestedScrollView.java index 985f5c3b9..df29d400a 100644 --- a/apptentive/src/main/java/com/apptentive/android/sdk/view/ApptentiveNestedScrollView.java +++ b/apptentive/src/main/java/com/apptentive/android/sdk/view/ApptentiveNestedScrollView.java @@ -24,21 +24,21 @@ import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; -import android.support.v4.view.AccessibilityDelegateCompat; -import android.support.v4.view.InputDeviceCompat; -import android.support.v4.view.MotionEventCompat; -import android.support.v4.view.NestedScrollingChild; -import android.support.v4.view.NestedScrollingChildHelper; -import android.support.v4.view.NestedScrollingParent; -import android.support.v4.view.NestedScrollingParentHelper; -import android.support.v4.view.ScrollingView; -import android.support.v4.view.VelocityTrackerCompat; -import android.support.v4.view.ViewCompat; -import android.support.v4.view.accessibility.AccessibilityEventCompat; -import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; -import android.support.v4.view.accessibility.AccessibilityRecordCompat; -import android.support.v4.widget.EdgeEffectCompat; -import android.support.v4.widget.ScrollerCompat; +import androidx.core.view.AccessibilityDelegateCompat; +import androidx.core.view.InputDeviceCompat; +import androidx.core.view.MotionEventCompat; +import androidx.core.view.NestedScrollingChild; +import androidx.core.view.NestedScrollingChildHelper; +import androidx.core.view.NestedScrollingParent; +import androidx.core.view.NestedScrollingParentHelper; +import androidx.core.view.ScrollingView; +import androidx.core.view.VelocityTrackerCompat; +import androidx.core.view.ViewCompat; +import androidx.core.view.accessibility.AccessibilityEventCompat; +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; +import androidx.core.view.accessibility.AccessibilityRecordCompat; +import androidx.core.widget.EdgeEffectCompat; +import androidx.core.widget.ScrollerCompat; import android.util.AttributeSet; import android.util.Log; import android.util.TypedValue; diff --git a/apptentive/src/main/res/layout/apptentive_image_grid_view_item.xml b/apptentive/src/main/res/layout/apptentive_image_grid_view_item.xml index af26b07be..d43381e4c 100644 --- a/apptentive/src/main/res/layout/apptentive_image_grid_view_item.xml +++ b/apptentive/src/main/res/layout/apptentive_image_grid_view_item.xml @@ -12,7 +12,7 @@ android:layout_height="match_parent" android:clipToPadding="false" android:background="?apptentiveAttachmentItemBackground"> - - - + - + \ No newline at end of file diff --git a/apptentive/src/main/res/layout/apptentive_message_center.xml b/apptentive/src/main/res/layout/apptentive_message_center.xml index 69f17c221..82770df31 100644 --- a/apptentive/src/main/res/layout/apptentive_message_center.xml +++ b/apptentive/src/main/res/layout/apptentive_message_center.xml @@ -6,25 +6,27 @@ ~ under which redistribution and use of this file is permitted. --> - - - - \ No newline at end of file + + + + \ No newline at end of file diff --git a/apptentive/src/main/res/layout/apptentive_message_center_context_message.xml b/apptentive/src/main/res/layout/apptentive_message_center_context_message.xml index fa1b5fd27..a9afbb057 100644 --- a/apptentive/src/main/res/layout/apptentive_message_center_context_message.xml +++ b/apptentive/src/main/res/layout/apptentive_message_center_context_message.xml @@ -14,7 +14,7 @@ android:paddingBottom="8dp" android:paddingLeft="@dimen/apptentive_message_center_message_list_margin_side" android:paddingRight="@dimen/apptentive_message_center_message_list_margin_side"> - - + \ No newline at end of file diff --git a/apptentive/src/main/res/layout/apptentive_message_center_error.xml b/apptentive/src/main/res/layout/apptentive_message_center_error.xml index 66a4536d7..412cc1450 100644 --- a/apptentive/src/main/res/layout/apptentive_message_center_error.xml +++ b/apptentive/src/main/res/layout/apptentive_message_center_error.xml @@ -15,7 +15,7 @@ android:paddingRight="@dimen/apptentive_message_center_greeting_side_margin" android:gravity="center" android:orientation="vertical"> - - - + - + - + - + - + - + \ No newline at end of file diff --git a/apptentive/src/main/res/layout/apptentive_message_incoming.xml b/apptentive/src/main/res/layout/apptentive_message_incoming.xml index 011ea6e6a..9a6587475 100644 --- a/apptentive/src/main/res/layout/apptentive_message_incoming.xml +++ b/apptentive/src/main/res/layout/apptentive_message_incoming.xml @@ -17,7 +17,7 @@ android:textAppearance="@style/Apptentive.TextAppearance.Caption.Bold" style="@style/Apptentive.Style.TextView.Timestamp" android:focusable="true"/> - - + \ No newline at end of file diff --git a/apptentive/src/main/res/layout/apptentive_message_outgoing.xml b/apptentive/src/main/res/layout/apptentive_message_outgoing.xml index 464157ee2..9aee8c90b 100644 --- a/apptentive/src/main/res/layout/apptentive_message_outgoing.xml +++ b/apptentive/src/main/res/layout/apptentive_message_outgoing.xml @@ -18,7 +18,7 @@ style="@style/Apptentive.Style.TextView.Timestamp" android:visibility="gone" android:focusable="true"/> - - + diff --git a/apptentive/src/main/res/layout/apptentive_survey_question_base.xml b/apptentive/src/main/res/layout/apptentive_survey_question_base.xml index 9a351f048..7317154c0 100644 --- a/apptentive/src/main/res/layout/apptentive_survey_question_base.xml +++ b/apptentive/src/main/res/layout/apptentive_survey_question_base.xml @@ -14,7 +14,7 @@ android:paddingLeft="@dimen/apptentive_card_view_gap_horizontal" android:paddingRight="@dimen/apptentive_card_view_gap_horizontal" android:background="@android:color/transparent"> - - + \ No newline at end of file diff --git a/apptentive/src/main/res/layout/apptentive_survey_question_multichoice_choice.xml b/apptentive/src/main/res/layout/apptentive_survey_question_multichoice_choice.xml index 068719a4d..7e61c4466 100644 --- a/apptentive/src/main/res/layout/apptentive_survey_question_multichoice_choice.xml +++ b/apptentive/src/main/res/layout/apptentive_survey_question_multichoice_choice.xml @@ -22,13 +22,13 @@ android:gravity="top|start" android:saveEnabled="false" android:text=""/> - + - - + + \ No newline at end of file diff --git a/apptentive/src/main/res/layout/apptentive_survey_question_multiselect_choice.xml b/apptentive/src/main/res/layout/apptentive_survey_question_multiselect_choice.xml index 3be626ffe..3d07dd1cc 100644 --- a/apptentive/src/main/res/layout/apptentive_survey_question_multiselect_choice.xml +++ b/apptentive/src/main/res/layout/apptentive_survey_question_multiselect_choice.xml @@ -22,13 +22,13 @@ android:gravity="top|start" android:saveEnabled="false" android:text=""/> - + - + diff --git a/apptentive/src/main/res/layout/apptentive_survey_question_singleline.xml b/apptentive/src/main/res/layout/apptentive_survey_question_singleline.xml index 427afb7b2..1834ac77c 100644 --- a/apptentive/src/main/res/layout/apptentive_survey_question_singleline.xml +++ b/apptentive/src/main/res/layout/apptentive_survey_question_singleline.xml @@ -6,18 +6,18 @@ ~ under which redistribution and use of this file is permitted. --> - + - + diff --git a/apptentive/src/main/res/layout/apptentive_viewactivity.xml b/apptentive/src/main/res/layout/apptentive_viewactivity.xml index f71b53a54..f32ab3204 100644 --- a/apptentive/src/main/res/layout/apptentive_viewactivity.xml +++ b/apptentive/src/main/res/layout/apptentive_viewactivity.xml @@ -5,7 +5,7 @@ android:layout_height="match_parent" android:orientation="vertical" tools:context="com.apptentive.android.sdk.ApptentiveViewActivity"> - - + \ No newline at end of file diff --git a/apptentive/src/test/java/com/apptentive/android/sdk/debug/AsyncLogWriterTest.java b/apptentive/src/test/java/com/apptentive/android/sdk/debug/AsyncLogWriterTest.java index 2300e201c..ef8f61393 100644 --- a/apptentive/src/test/java/com/apptentive/android/sdk/debug/AsyncLogWriterTest.java +++ b/apptentive/src/test/java/com/apptentive/android/sdk/debug/AsyncLogWriterTest.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk.debug; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import com.apptentive.android.sdk.LogicTestCaseBase; import com.apptentive.android.sdk.TestUtils; diff --git a/apptentive/src/testCommon/java/com/apptentive/android/sdk/TestUtils.java b/apptentive/src/testCommon/java/com/apptentive/android/sdk/TestUtils.java index c3d8b1b19..f8840f7b0 100644 --- a/apptentive/src/testCommon/java/com/apptentive/android/sdk/TestUtils.java +++ b/apptentive/src/testCommon/java/com/apptentive/android/sdk/TestUtils.java @@ -6,7 +6,7 @@ package com.apptentive.android.sdk; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import com.apptentive.android.sdk.util.Util; diff --git a/build.gradle b/build.gradle index a9784273f..e9296f2c4 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,12 @@ buildscript { - ext.kotlin_version = '1.3.31' + ext.kotlin_version = '1.3.50' repositories { google() // "https://maven.google.com" jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.4.1' + classpath 'com.android.tools.build:gradle:3.5.2' classpath 'com.github.3mph4515:gradle-hockeyapp-plugin:3.7.6' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 000000000..027ef9db8 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +android.useAndroidX=true +android.enableJetifier=true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0b9e9620f..6a62f0e38 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon May 13 15:42:16 PDT 2019 +#Thu Nov 07 15:53:09 PST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip diff --git a/samples/apptentive-example/.gitignore b/samples/apptentive-example/.gitignore new file mode 100644 index 000000000..796b96d1c --- /dev/null +++ b/samples/apptentive-example/.gitignore @@ -0,0 +1 @@ +/build diff --git a/samples/apptentive-example/build.gradle b/samples/apptentive-example/build.gradle index c18e7b375..d672914a8 100644 --- a/samples/apptentive-example/build.gradle +++ b/samples/apptentive-example/build.gradle @@ -1,40 +1,44 @@ -buildscript { - repositories { - google() - jcenter() - } - dependencies { - classpath 'com.google.gms:google-services:4.2.0' - } -} - apply plugin: 'com.android.application' - -repositories { - google() - jcenter() -} - -dependencies { - implementation 'com.apptentive:apptentive-android:5.4.2' - implementation 'com.google.firebase:firebase-messaging:17.3.4' -} +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-android' android { - compileSdkVersion 28 - buildToolsVersion '28.0.3' + compileSdkVersion 29 + buildToolsVersion "29.0.2" + defaultConfig { + applicationId "apptentive.com.example" minSdkVersion 14 - targetSdkVersion 28 + targetSdkVersion 29 versionCode 1 versionName "1.0" - multiDexEnabled true + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - lintOptions { - abortOnError false + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } } + } -apply plugin: 'com.google.gms.google-services' +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation project(':apptentive') + + implementation 'androidx.core:core-ktx:1.1.0' + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' +} +repositories { + mavenCentral() +} diff --git a/samples/apptentive-example/proguard-rules.pro b/samples/apptentive-example/proguard-rules.pro new file mode 100644 index 000000000..f1b424510 --- /dev/null +++ b/samples/apptentive-example/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/samples/apptentive-example/src/androidTest/java/apptentive/com/example/ExampleInstrumentedTest.java b/samples/apptentive-example/src/androidTest/java/apptentive/com/example/ExampleInstrumentedTest.java new file mode 100644 index 000000000..421f21564 --- /dev/null +++ b/samples/apptentive-example/src/androidTest/java/apptentive/com/example/ExampleInstrumentedTest.java @@ -0,0 +1,27 @@ +package apptentive.com.example; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + + assertEquals("apptentive.com.example", appContext.getPackageName()); + } +} diff --git a/samples/apptentive-example/src/main/AndroidManifest.xml b/samples/apptentive-example/src/main/AndroidManifest.xml old mode 100755 new mode 100644 index 9245f8732..82530435d --- a/samples/apptentive-example/src/main/AndroidManifest.xml +++ b/samples/apptentive-example/src/main/AndroidManifest.xml @@ -1,40 +1,24 @@ - - - - - - - - + xmlns:tools="http://schemas.android.com/tools" + package="apptentive.com.example"> - - + + - - - + - - - + - - + + \ No newline at end of file diff --git a/samples/apptentive-example/src/main/java/apptentive/com/example/MainActivity.kt b/samples/apptentive-example/src/main/java/apptentive/com/example/MainActivity.kt new file mode 100644 index 000000000..88d49305a --- /dev/null +++ b/samples/apptentive-example/src/main/java/apptentive/com/example/MainActivity.kt @@ -0,0 +1,30 @@ +package apptentive.com.example + +import android.os.Bundle +import android.widget.Toast +import android.widget.Toast.LENGTH_LONG +import androidx.appcompat.app.AppCompatActivity +import com.apptentive.android.sdk.Apptentive +import kotlinx.android.synthetic.main.activity_main.* + +class MainActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + + button_love_dialog.setOnClickListener { engage("love_dialog") } + button_survey.setOnClickListener { engage("survey") } + button_note.setOnClickListener { engage("note") } + button_upgrade_message.setOnClickListener { engage("upgrade_message") } + button_message_center.setOnClickListener { Apptentive.showMessageCenter(this) } + } + + private fun engage(event: String) { + Apptentive.engage(this, event) { engaged -> + if (!engaged) { + Toast.makeText(this, "Event not engaged '$event'", LENGTH_LONG).show() + } + } + } +} diff --git a/samples/apptentive-example/src/main/java/apptentive/com/example/MyApplication.kt b/samples/apptentive-example/src/main/java/apptentive/com/example/MyApplication.kt new file mode 100644 index 000000000..c9391c604 --- /dev/null +++ b/samples/apptentive-example/src/main/java/apptentive/com/example/MyApplication.kt @@ -0,0 +1,15 @@ +package apptentive.com.example + +import android.app.Application +import com.apptentive.android.sdk.Apptentive +import com.apptentive.android.sdk.ApptentiveConfiguration +import com.apptentive.android.sdk.ApptentiveLog + +class MyApplication : Application() { + override fun onCreate() { + super.onCreate() + + val configuration = ApptentiveConfiguration("", "") + Apptentive.register(this, configuration) + } +} \ No newline at end of file diff --git a/samples/apptentive-example/src/main/java/com/apptentive/android/example/ExampleActivity.java b/samples/apptentive-example/src/main/java/com/apptentive/android/example/ExampleActivity.java deleted file mode 100755 index 1751a2190..000000000 --- a/samples/apptentive-example/src/main/java/com/apptentive/android/example/ExampleActivity.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2017, Apptentive, Inc. All Rights Reserved. - * Please refer to the LICENSE file for the terms and conditions - * under which redistribution and use of this file is permitted. - */ - -package com.apptentive.android.example; - -import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.view.View; - -import com.apptentive.android.sdk.Apptentive; - -/** - * This is an example integration of Apptentive. - */ -public class ExampleActivity extends AppCompatActivity { - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.main); - } - - /** - * Provide a simple feedback button in your app. - */ - public void onMessageCenterButtonPressed(@SuppressWarnings("unused") View view) { - Apptentive.showMessageCenter(this); - } - - @Override - public void onWindowFocusChanged(boolean hasFocus) { - super.onWindowFocusChanged(hasFocus); - if (true) { - Apptentive.engage(this, "main_activity_focused"); - } - } -} diff --git a/samples/apptentive-example/src/main/java/com/apptentive/android/example/ExampleApplication.java b/samples/apptentive-example/src/main/java/com/apptentive/android/example/ExampleApplication.java deleted file mode 100644 index ad24b033d..000000000 --- a/samples/apptentive-example/src/main/java/com/apptentive/android/example/ExampleApplication.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2017, Apptentive, Inc. All Rights Reserved. - * Please refer to the LICENSE file for the terms and conditions - * under which redistribution and use of this file is permitted. - */ - -package com.apptentive.android.example; - -import android.app.Application; - -import com.apptentive.android.sdk.Apptentive; - -public class ExampleApplication extends Application { - public static final String TAG = "ApptentiveExample"; - - @Override - public void onCreate() { - super.onCreate(); - Apptentive.register(this, "", ""); - } -} diff --git a/samples/apptentive-example/src/main/java/com/apptentive/android/example/push/MyFirebaseInstanceIdService.java b/samples/apptentive-example/src/main/java/com/apptentive/android/example/push/MyFirebaseInstanceIdService.java deleted file mode 100644 index fb2fcd61c..000000000 --- a/samples/apptentive-example/src/main/java/com/apptentive/android/example/push/MyFirebaseInstanceIdService.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2017, Apptentive, Inc. All Rights Reserved. - * Please refer to the LICENSE file for the terms and conditions - * under which redistribution and use of this file is permitted. - */ - -package com.apptentive.android.example.push; - -import android.util.Log; - -import com.apptentive.android.example.ExampleApplication; -import com.apptentive.android.sdk.Apptentive; -import com.google.firebase.iid.FirebaseInstanceId; -import com.google.firebase.iid.FirebaseInstanceIdService; - -public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService { - @Override - public void onTokenRefresh() { - String token = FirebaseInstanceId.getInstance().getToken(); - Log.i(ExampleApplication.TAG, "Refreshed InstanceId token: " + token); - Apptentive.setPushNotificationIntegration(Apptentive.PUSH_PROVIDER_APPTENTIVE, token); - } -} diff --git a/samples/apptentive-example/src/main/java/com/apptentive/android/example/push/MyFirebaseMessagingService.java b/samples/apptentive-example/src/main/java/com/apptentive/android/example/push/MyFirebaseMessagingService.java deleted file mode 100644 index f0880427c..000000000 --- a/samples/apptentive-example/src/main/java/com/apptentive/android/example/push/MyFirebaseMessagingService.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2017, Apptentive, Inc. All Rights Reserved. - * Please refer to the LICENSE file for the terms and conditions - * under which redistribution and use of this file is permitted. - */ - -package com.apptentive.android.example.push; - -import android.app.NotificationManager; -import android.app.PendingIntent; -import android.content.Context; -import android.media.RingtoneManager; -import android.net.Uri; -import android.support.v4.app.NotificationCompat; -import android.util.Log; - -import com.apptentive.android.example.ExampleApplication; -import com.apptentive.android.example.R; -import com.apptentive.android.sdk.Apptentive; -import com.apptentive.android.sdk.ApptentiveLog; -import com.google.firebase.messaging.FirebaseMessagingService; -import com.google.firebase.messaging.RemoteMessage; - -import java.util.Map; - -public class MyFirebaseMessagingService extends FirebaseMessagingService { - - @Override - public void onMessageReceived(RemoteMessage remoteMessage) { - super.onMessageReceived(remoteMessage); - Log.e(ExampleApplication.TAG, "onMessageReceived()"); - logPushBundle(remoteMessage); - final Map data = remoteMessage.getData(); - - if (Apptentive.isApptentivePushNotification(data)) { - Apptentive.buildPendingIntentFromPushNotification(new Apptentive.PendingIntentCallback() { - @Override - public void onPendingIntent(PendingIntent pendingIntent) { - if (pendingIntent != null) { - String title = Apptentive.getTitleFromApptentivePush(data); - String body = Apptentive.getBodyFromApptentivePush(data); - - - ApptentiveLog.e("Title: " + title); - ApptentiveLog.e("Body: " + body); - - Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); - NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(MyFirebaseMessagingService.this) - .setSmallIcon(R.drawable.notification) - .setContentTitle(title) - .setContentText(body) - .setAutoCancel(true) - .setSound(defaultSoundUri) - .setContentIntent(pendingIntent); - NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); - notificationManager.notify(0, notificationBuilder.build()); - } - } - }, data); - } - } - - private static void logPushBundle(RemoteMessage remoteMessage) { - Map data = remoteMessage.getData(); - Log.e(ExampleApplication.TAG, "Push Data:"); - for (String key : data.keySet()) { - String value = data.get(key); - Log.e(ExampleApplication.TAG, " " + key + " : " + value); - } - Log.e(ExampleApplication.TAG, data.get("title") + ": " + data.get("body")); - } -} diff --git a/samples/apptentive-example/src/main/res/drawable-hdpi/notification.png b/samples/apptentive-example/src/main/res/drawable-hdpi/notification.png deleted file mode 100644 index 10620c014d3b815367a86c3f3954bf98d5347b89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|l3?zm1T2})p-2k5u*Z-t|1(yt1ff^Z0g8YIR z9G=}s196hP-CY z&_PcZ#}JM4ODFkq9WoGTWnRne*yMilT5ko@NlqK*{s$9n8Y`wa=!&(Jvn`)F|4Pcu zMl<91_+^);TWvRVFf?Jw;C$w^uF2r4QdhXH(akuoaZ>+M;fCtWHa*c9blwt?fQ z?)J+^?5s~({Zl+}=A~tN|Dx#X2p1c-)*9y%lD!$nB~r3COpcvr+xY%k{9AU3E{`sf0~Q`3Ii+gXh4nz8 zYEKu(5Q)pR{Tl@v6nI>NZ&V)lIP-wz%oCP#4;aM!9`I=H+5GVzkD7|3R^7*kANxNj zN@cNGeB)enoH6vYJVQQrgx@)il0;^&<6fd>Z?cwbjGCy;+rVeU#r|Q9u~y1QZ{`~r y^RDFAZ@HGResM0(9*tkuzU{rldc-hm0so18rDc)XZ#M&-!QkoY=d#Wzp$Pyd;(*%# diff --git a/samples/apptentive-example/src/main/res/drawable-v24/ic_launcher_foreground.xml b/samples/apptentive-example/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 000000000..c7bd21dbd --- /dev/null +++ b/samples/apptentive-example/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/samples/apptentive-example/src/main/res/drawable-xhdpi/notification.png b/samples/apptentive-example/src/main/res/drawable-xhdpi/notification.png deleted file mode 100644 index f57e76d57e50278de8ed70ef873320791b961470..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 464 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDB3?!H8JlO)IbOU@sT>p~-7F;r51!`n03GxeO zaCmkj4a7 zJu;pyjv*GO_f9#;d&q#twYh;=t7}Gsq?M!l3MwQvAIGQRaGFM5gXSd^Imc8OlqHCR(d;L28 z=*OH_r8mRu*Pi&O(=~f$xPi-g<^6&gEGy1d#J;Q!YUARq|Jzu@U^(fM?w8cMY+%qa Nc)I$ztaD0e0ssMf&gcLD diff --git a/samples/apptentive-example/src/main/res/drawable-xxhdpi/notification.png b/samples/apptentive-example/src/main/res/drawable-xxhdpi/notification.png deleted file mode 100644 index 11128925cbde2a78a129fa73cf6cea68794a6279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 650 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xZ3?!EyURMI7bOU@sT>p~-7F;r51!`n03GxeO zaCmkj4a79oChhYSQ7dKYl5IPvPz_k@=hRFg8U>L$H7W4xhswZzM&kkVI&jK6Ry zE%BSGHSeI1OMv80Nv)*$#p&@*WqVXC>!<%d`BTp+=2F#9gJ=I%3hq4B8@oAbN%{q; z>kg7_Jm)2LiOo6rn!!jbZPEn8c8N)XDP0pJCDPV1XB>4r{_Mhy@V%cVWPMbUdZ2K{ z|L)uTxu%l@S#*=_Q#ig_q`$q~^8b(fqjbTeW#LhE;&X#$UHY+M;gJ_ley{zc)gZTF zrl~_$80U(dJ8|q#yJYpAj*N4TO2JE({?wb}rhA>+WG{vOV%wFvZ+*DSypf^=_O3~Tv8JFLv=PDG+UAov}XKj4T>C=~;Cu43L zD=w~@anU9t&1<=_l^x&XWAl5S&p&^>``1UI|Ap2H{0rYi&jdy~gQu&X%Q~loCII!| BF_ZuR diff --git a/samples/apptentive-example/src/main/res/drawable-xxxhdpi/notification.png b/samples/apptentive-example/src/main/res/drawable-xxxhdpi/notification.png deleted file mode 100644 index 727a20f17c754fe606d5f38cbb9b9f81edf1d2f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 865 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeE3?v1%WpM*3-2k5u*Z-t|1(yt1ff^Z0g8YIR z9G=}s196hP-CYiV1`Zg-@;_xCS2r*zVPq5hVc0@en;^KD5yAS(4I^mrOD=s=ChH&m`iv+Vkmdxl{RU z7k0#ax+EI*>10EnW}@LDeiggYC|92y;{2;Os~0h z?3+&STd^&V8p_SsUutOIOTDI9r^*zt%`F8OOdd=N397Q{KCF+!Uoha90cyGGp ze7hUt&c&Y}?^9sd{@zmjAgj)kcYA+-Rkc5UcE{r%3B5g?#cHRTwr)-6a}gA)e;6s_ z!nia2_UWabmLJ!)H!(1Av}}Ag=Z@GueriODm^;TRZj9(X?03{EuF}eRlnm+gIzv{xc@LzWO7=z{U5;>tmb4 z?IXI^Mr4F7c;BK@A`xSBZTtG-Gxd-6O}g9k^O%5XMz#IBI?4X}t + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/apptentive-example/src/main/res/drawable/icon.png b/samples/apptentive-example/src/main/res/drawable/icon.png deleted file mode 100644 index 27ccefdafd68461c47d3126a6b9e137b23ca72fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10887 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 + + +