diff --git a/android-studio-sample-app/app/build.gradle b/android-studio-sample-app/app/build.gradle index 235ad8d..21a671b 100644 --- a/android-studio-sample-app/app/build.gradle +++ b/android-studio-sample-app/app/build.gradle @@ -7,8 +7,8 @@ android { applicationId "com.iovation.mobile.android.sample.sampleapp" minSdkVersion 21 targetSdkVersion 31 - versionCode 4 - versionName "5.0.0" + versionCode 9 + versionName "5.0.1" } buildTypes { release { diff --git a/android-studio-sample-app/build.gradle b/android-studio-sample-app/build.gradle index 37f8076..6f2793f 100644 --- a/android-studio-sample-app/build.gradle +++ b/android-studio-sample-app/build.gradle @@ -7,7 +7,8 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:4.0.2' + classpath 'com.android.tools.build:gradle:7.0.3' + classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/android-studio-sample-app/gradle.properties b/android-studio-sample-app/gradle.properties index 1d3591c..915f0e6 100644 --- a/android-studio-sample-app/gradle.properties +++ b/android-studio-sample-app/gradle.properties @@ -15,4 +15,6 @@ # 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 \ No newline at end of file +# org.gradle.parallel=true +android.enableJetifier=true +android.useAndroidX=true \ No newline at end of file diff --git a/android-studio-sample-app/gradle/wrapper/gradle-wrapper.properties b/android-studio-sample-app/gradle/wrapper/gradle-wrapper.properties index f00adf5..124ff49 100644 --- a/android-studio-sample-app/gradle/wrapper/gradle-wrapper.properties +++ b/android-studio-sample-app/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Nov 09 08:29:48 PST 2020 +#Thu Mar 30 14:27:27 EDT 2023 distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip \ No newline at end of file +zipStoreBase=GRADLE_USER_HOME diff --git a/android-studio-sample-app/kotlinApp/.gitignore b/android-studio-sample-app/kotlinApp/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/android-studio-sample-app/kotlinApp/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/android-studio-sample-app/kotlinApp/build.gradle b/android-studio-sample-app/kotlinApp/build.gradle new file mode 100644 index 0000000..64b8aa7 --- /dev/null +++ b/android-studio-sample-app/kotlinApp/build.gradle @@ -0,0 +1,40 @@ +plugins { + id 'com.android.application' + id 'org.jetbrains.kotlin.android' +} + +android { + compileSdk 32 + + defaultConfig { + applicationId "com.iovation.mobile.android.sample.kotlinApp" + minSdk 21 + targetSdk 32 + versionCode 10 + versionName "5.0.1" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } + + buildFeatures { + viewBinding true + } +} + +dependencies { + implementation 'androidx.appcompat:appcompat:1.0.0' + implementation files('libs/fraudforce-lib-release-5.0.0.aar') + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3' +} \ No newline at end of file diff --git a/android-studio-sample-app/kotlinApp/libs/fraudforce-lib-release-5.0.0.aar b/android-studio-sample-app/kotlinApp/libs/fraudforce-lib-release-5.0.0.aar new file mode 100644 index 0000000..fe89c74 Binary files /dev/null and b/android-studio-sample-app/kotlinApp/libs/fraudforce-lib-release-5.0.0.aar differ diff --git a/android-studio-sample-app/kotlinApp/proguard-rules.pro b/android-studio-sample-app/kotlinApp/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/android-studio-sample-app/kotlinApp/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/android-studio-sample-app/kotlinApp/src/main/AndroidManifest.xml b/android-studio-sample-app/kotlinApp/src/main/AndroidManifest.xml new file mode 100644 index 0000000..0822c04 --- /dev/null +++ b/android-studio-sample-app/kotlinApp/src/main/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android-studio-sample-app/kotlinApp/src/main/java/com/iovation/mobile/android/sample/kotlinApp/MainActivity.kt b/android-studio-sample-app/kotlinApp/src/main/java/com/iovation/mobile/android/sample/kotlinApp/MainActivity.kt new file mode 100644 index 0000000..9a01949 --- /dev/null +++ b/android-studio-sample-app/kotlinApp/src/main/java/com/iovation/mobile/android/sample/kotlinApp/MainActivity.kt @@ -0,0 +1,63 @@ +package com.iovation.mobile.android.sample.kotlinApp + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.view.View +import com.iovation.mobile.android.FraudForceManager +import com.iovation.mobile.android.sample.kotlinApp.databinding.ActivityMainBinding +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +class MainActivity : AppCompatActivity() { + private lateinit var binding: ActivityMainBinding + + private val uiScope = CoroutineScope(Dispatchers.IO) + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + FraudForceManager.refresh(applicationContext) + + binding = ActivityMainBinding.inflate(layoutInflater) + setContentView(binding.root) + + binding.button.setOnClickListener{ + blackboxRequestHandler() + } + } + + private fun blackboxRequestHandler() { + binding.blackboxResult.text = "" + binding.blackboxResult.visibility = View.GONE + + binding.blackboxResultLine.visibility = View.GONE + + binding.blackboxLabel.text = getString(R.string.printing_wait_msg) + binding.blackboxLabel.visibility = View.VISIBLE + + uiScope.launch { + val blackbox : String = getBlackbox() + withContext(Dispatchers.Main) { + printBlackbox(blackbox) + } + } + } + + private fun getBlackbox() : String { + return FraudForceManager.getBlackbox(applicationContext) + } + + private fun printBlackbox(blackbox : String){ + binding.blackboxLabel.text = getString(R.string.blackbox_label) + binding.blackboxLabel.visibility = View.VISIBLE + + binding.blackboxResultLine.visibility = View.VISIBLE + + binding.blackboxResult.text = blackbox + binding.blackboxResult.visibility = View.VISIBLE + + FraudForceManager.refresh(applicationContext) + } +} \ No newline at end of file diff --git a/android-studio-sample-app/kotlinApp/src/main/java/com/iovation/mobile/android/sample/kotlinApp/MainApplication.kt b/android-studio-sample-app/kotlinApp/src/main/java/com/iovation/mobile/android/sample/kotlinApp/MainApplication.kt new file mode 100644 index 0000000..adbf532 --- /dev/null +++ b/android-studio-sample-app/kotlinApp/src/main/java/com/iovation/mobile/android/sample/kotlinApp/MainApplication.kt @@ -0,0 +1,21 @@ +package com.iovation.mobile.android.sample.kotlinApp + +import android.app.Application +import com.iovation.mobile.android.FraudForceConfiguration +import com.iovation.mobile.android.FraudForceManager + +/** + * Created by Jacob Schmit on 03/27/23. + */ + +class MainApplication : Application() { + override fun onCreate() { + super.onCreate() + val configuration = FraudForceConfiguration.Builder() + .subscriberKey("M1WrRSwcjUBQmHamij3DxQJWr00YzfRhXaMkI+zhhiY=") + .enableNetworkCalls(true) + .build() + + FraudForceManager.initialize(configuration, applicationContext) + } +} \ No newline at end of file diff --git a/android-studio-sample-app/kotlinApp/src/main/res/drawable-v24/ic_launcher_foreground.xml b/android-studio-sample-app/kotlinApp/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/android-studio-sample-app/kotlinApp/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/android-studio-sample-app/kotlinApp/src/main/res/drawable/ic_launcher_background.xml b/android-studio-sample-app/kotlinApp/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/android-studio-sample-app/kotlinApp/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android-studio-sample-app/kotlinApp/src/main/res/layout/activity_main.xml b/android-studio-sample-app/kotlinApp/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..a4c176a --- /dev/null +++ b/android-studio-sample-app/kotlinApp/src/main/res/layout/activity_main.xml @@ -0,0 +1,47 @@ + + + + + + + +