Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/kotlin update Conversione Kotlin #11

Closed
wants to merge 14 commits into from
111 changes: 61 additions & 50 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,70 +3,81 @@
* https://www.ubique.ch
* Copyright (c) 2020. All rights reserved.
*/

plugins {
id 'com.android.application'
id 'com.android.application'
}
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

def cfg = rootProject.ext.configuration

android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
compileSdkVersion cfg.compileVersion
buildToolsVersion "29.0.3"

defaultConfig {
applicationId "org.dpppt.android.app"
minSdkVersion 23
targetSdkVersion 29
versionCode 1
versionName "1.0"
}
defaultConfig {
applicationId cfg.package
minSdkVersion cfg.minSdk
targetSdkVersion cfg.targetSdk
versionCode cfg.versionCode
versionName cfg.versionName
}

flavorDimensions "version"
productFlavors {
dev {
}
prod {
}
}
flavorDimensions "version"
productFlavors {
demo {
applicationIdSuffix ".demo"
}
dev {
}
prod {
}
}

signingConfigs {
release {
storeFile file('testKeystore')
storePassword '123456'
keyAlias 'keyAlias'
keyPassword '123456'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
signingConfigs {
release {
storeFile file('testKeystore')
storePassword '123456'
keyAlias 'keyAlias'
keyPassword '123456'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}

compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation 'org.dpppt:dp3t-sdk-android:0.1.2'
implementation 'org.dpppt:dp3t-sdk-android:0.1.2'

implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.fragment:fragment:1.2.4'
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.2.0'
implementation 'androidx.lifecycle:lifecycle-livedata:2.2.0'
implementation 'androidx.viewpager2:viewpager2:1.0.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.fragment:fragment:1.2.4'
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.2.0'
implementation 'androidx.lifecycle:lifecycle-livedata:2.2.0'
implementation 'androidx.viewpager2:viewpager2:1.0.0'

implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
implementation 'io.reactivex.rxjava3:rxjava:3.0.0'
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
implementation 'io.reactivex.rxjava3:rxjava:3.0.0'

implementation 'com.google.android.material:material:1.1.0'
implementation 'com.google.android.material:material:1.1.0'

implementation 'com.squareup.retrofit2:retrofit:2.6.2'
implementation 'com.squareup.retrofit2:converter-gson:2.6.2'
implementation 'com.squareup.retrofit2:retrofit:2.6.2'
implementation 'com.squareup.retrofit2:converter-gson:2.6.2'
implementation "androidx.core:core-ktx:1.2.0"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}
repositories {
mavenCentral()
}
97 changes: 0 additions & 97 deletions app/src/main/java/org/dpppt/android/app/MainApplication.java

This file was deleted.

77 changes: 77 additions & 0 deletions app/src/main/java/org/dpppt/android/app/MainApplication.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/*
* Created by Ubique Innovation AG
* https://www.ubique.ch
* Copyright (c) 2020. All rights reserved.
*/
package org.dpppt.android.app

import android.app.*
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.os.Build
import androidx.annotation.RequiresApi
import androidx.core.app.NotificationCompat
import org.dpppt.android.sdk.DP3T
import org.dpppt.android.sdk.internal.backend.models.ApplicationInfo
import org.dpppt.android.sdk.internal.util.ProcessUtil

class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
if (ProcessUtil.isMainProcess(this)) {
registerReceiver(broadcastReceiver, DP3T.getUpdateIntentFilter())
DP3T.init(this, ApplicationInfo("it.noiapp.demo", "https://protetti.app/"))
}
}

override fun onTerminate() {
if (ProcessUtil.isMainProcess(this)) {
unregisterReceiver(broadcastReceiver)
}
super.onTerminate()
}

private val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val prefs = context.getSharedPreferences("notification_prefs", Context.MODE_PRIVATE)
if (!prefs.getBoolean("notification_shown", false)) {
val status = DP3T.getStatus(context)
if (status.wasContactExposed()) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createNotificationChannel()
}
var contentIntent: PendingIntent? = null

context.packageManager.getLaunchIntentForPackage(context.packageName)?.let { launchIntent ->
contentIntent = PendingIntent.getActivity(context, 0, launchIntent, PendingIntent.FLAG_UPDATE_CURRENT)
}

val notification = NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID)
.setContentTitle(context.getString(R.string.push_exposed_title))
.setContentText(context.getString(R.string.push_exposed_text))
.setPriority(NotificationCompat.PRIORITY_MAX)
.setSmallIcon(R.drawable.ic_begegnungen)
.setContentIntent(contentIntent)
.build()
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(42, notification)
prefs.edit().putBoolean("notification_shown", true).commit()
}
}
}
}

@RequiresApi(api = Build.VERSION_CODES.O)
private fun createNotificationChannel() {
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
val channelName = getString(R.string.app_name)
val channel = NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_HIGH)
channel.lockscreenVisibility = Notification.VISIBILITY_PRIVATE
notificationManager.createNotificationChannel(channel)
}

companion object {
private const val NOTIFICATION_CHANNEL_ID = "contact-channel"
}
}
Loading