aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2022-01-03 19:32:38 -0600
committerIván Ávalos <avalos@disroot.org>2022-01-03 19:32:38 -0600
commitc95542f9b2ea1c0b9100daecb60a74ac949d32b3 (patch)
tree6c61f99ebf906a45871e61b26bfb257188388519
parent287d0b62126b36ed4b268c99957143924ea295e6 (diff)
downloadetbsa-traccar-manager-android-c95542f9b2ea1c0b9100daecb60a74ac949d32b3.tar.gz
etbsa-traccar-manager-android-c95542f9b2ea1c0b9100daecb60a74ac949d32b3.tar.bz2
etbsa-traccar-manager-android-c95542f9b2ea1c0b9100daecb60a74ac949d32b3.zip
Removed Google Analytics, bumped dependency versions, fixed base URL for modern version, enabled cookie persistence, and improved FCM token auto-registration.
-rw-r--r--.gitignore1
-rw-r--r--app/build.gradle6
-rw-r--r--app/src/google/java/org/traccar/manager/GoogleMainApplication.kt4
-rw-r--r--app/src/main/AndroidManifest.xml2
-rw-r--r--app/src/main/java/org/traccar/manager/MainActivity.kt1
-rw-r--r--app/src/main/java/org/traccar/manager/MainFragment.kt47
-rw-r--r--app/src/main/res/xml/network_security_config.xml2
-rw-r--r--build.gradle6
8 files changed, 45 insertions, 24 deletions
diff --git a/.gitignore b/.gitignore
index b84795a..afb1ddb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@ build/
app/src/main/assets
.DS_Store
google-services.json
+environment/ \ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 12fbc96..0d01785 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -33,18 +33,14 @@ dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
googleImplementation platform('com.google.firebase:firebase-bom:29.0.3')
- googleImplementation 'com.google.firebase:firebase-core'
- googleImplementation 'com.google.firebase:firebase-analytics'
- googleImplementation 'com.google.firebase:firebase-crashlytics'
googleImplementation 'com.google.firebase:firebase-messaging'
}
if (getGradle().getStartParameter().getTaskRequests().toString().contains('Google')) {
apply plugin: 'com.google.gms.google-services'
- apply plugin: 'com.google.firebase.crashlytics'
task copyJson(type: Copy) {
- from '../../environment/google-services'
+ from '../environment/google-services'
into '.'
include 'traccar-manager-android.json'
rename('traccar-manager-android.json', 'google-services.json')
diff --git a/app/src/google/java/org/traccar/manager/GoogleMainApplication.kt b/app/src/google/java/org/traccar/manager/GoogleMainApplication.kt
index 1c28987..2539897 100644
--- a/app/src/google/java/org/traccar/manager/GoogleMainApplication.kt
+++ b/app/src/google/java/org/traccar/manager/GoogleMainApplication.kt
@@ -24,16 +24,12 @@ import android.content.Intent
import android.content.IntentFilter
import android.os.Build
import androidx.localbroadcastmanager.content.LocalBroadcastManager
-import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.messaging.FirebaseMessaging
class GoogleMainApplication : Application() {
- private lateinit var firebaseAnalytics: FirebaseAnalytics
-
override fun onCreate() {
super.onCreate()
- firebaseAnalytics = FirebaseAnalytics.getInstance(this)
val intentFilter = IntentFilter(MainFragment.EVENT_LOGIN)
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, intentFilter)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c3177f4..d4e0b51 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -10,10 +10,10 @@
<application
android:allowBackup="true"
+ android:fullBackupContent="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
- android:networkSecurityConfig="@xml/network_security_config"
tools:ignore="GoogleAppIndexingWarning">
<activity
diff --git a/app/src/main/java/org/traccar/manager/MainActivity.kt b/app/src/main/java/org/traccar/manager/MainActivity.kt
index ce56296..d48cd31 100644
--- a/app/src/main/java/org/traccar/manager/MainActivity.kt
+++ b/app/src/main/java/org/traccar/manager/MainActivity.kt
@@ -48,5 +48,6 @@ class MainActivity : AppCompatActivity() {
companion object {
const val PREFERENCE_URL = "url"
+ const val PREFERENCE_TOKEN = "token"
}
}
diff --git a/app/src/main/java/org/traccar/manager/MainFragment.kt b/app/src/main/java/org/traccar/manager/MainFragment.kt
index bb8ade8..ecb93e3 100644
--- a/app/src/main/java/org/traccar/manager/MainFragment.kt
+++ b/app/src/main/java/org/traccar/manager/MainFragment.kt
@@ -30,14 +30,10 @@ import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
+import android.util.Log
import android.view.View
-import android.webkit.GeolocationPermissions
-import android.webkit.JavascriptInterface
-import android.webkit.ValueCallback
-import android.webkit.WebChromeClient
-import android.webkit.WebView
-import android.webkit.WebViewClient
-import android.webkit.WebViewFragment
+import android.webkit.*
+import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
@@ -47,6 +43,34 @@ import androidx.preference.PreferenceManager
class MainFragment : WebViewFragment() {
private lateinit var broadcastManager: LocalBroadcastManager
+ private var tokenSet = false
+
+ private val webViewClient = object: WebViewClient() {
+ override fun onPageFinished(view: WebView?, url: String?) {
+ super.onPageFinished(view, url)
+ CookieManager.getInstance().setAcceptCookie(true)
+ CookieManager.getInstance().acceptCookie()
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ CookieManager.getInstance().flush()
+ }
+
+ val cookies = CookieManager.getInstance().getCookie(url)
+ if (cookies.contains("JSESSIONID") && !tokenSet) {
+ // Register token on server
+ if (PreferenceManager.getDefaultSharedPreferences(activity)
+ .contains(MainActivity.PREFERENCE_TOKEN)
+ ) {
+ val token = PreferenceManager.getDefaultSharedPreferences(activity)
+ .getString(MainActivity.PREFERENCE_TOKEN, "")
+ val code = "updateNotificationToken && updateNotificationToken('$token')"
+ Log.d("MainFragment", code)
+ Toast.makeText(activity, code, Toast.LENGTH_LONG).show()
+ webView.evaluateJavascript(code, null)
+ tokenSet = true
+ }
+ }
+ }
+ }
inner class AppInterface {
@JavascriptInterface
@@ -77,6 +101,7 @@ class MainFragment : WebViewFragment() {
webView.webViewClient = WebViewClient() // handle redirects in the app
webView.webChromeClient = webChromeClient
webView.addJavascriptInterface(AppInterface(), "appInterface")
+ webView.webViewClient = webViewClient
val webSettings = webView.settings
webSettings.javaScriptEnabled = true
webSettings.domStorageEnabled = true
@@ -85,7 +110,7 @@ class MainFragment : WebViewFragment() {
val url = PreferenceManager.getDefaultSharedPreferences(activity)
.getString(MainActivity.PREFERENCE_URL, null)
if (url != null) {
- webView.loadUrl(url)
+ webView.loadUrl(Uri.parse(url).buildUpon().appendEncodedPath("gps").build().toString())
} else {
activity.fragmentManager
.beginTransaction().replace(android.R.id.content, StartFragment())
@@ -96,8 +121,10 @@ class MainFragment : WebViewFragment() {
private val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val token = intent.getStringExtra(KEY_TOKEN)
- val code = "updateNotificationToken && updateNotificationToken('$token')"
- webView.evaluateJavascript(code, null)
+ PreferenceManager.getDefaultSharedPreferences(activity)
+ .edit()
+ .putString(MainActivity.PREFERENCE_TOKEN, token)
+ .apply()
}
}
diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml
index 2439f15..6115950 100644
--- a/app/src/main/res/xml/network_security_config.xml
+++ b/app/src/main/res/xml/network_security_config.xml
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
- <base-config cleartextTrafficPermitted="true" />
+ <base-config cleartextTrafficPermitted="false" />
</network-security-config>
diff --git a/build.gradle b/build.gradle
index 03807b6..74dce81 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,12 +1,12 @@
buildscript {
- ext.kotlin_version = '1.6.0'
+ ext.kotlin_version = '1.6.10'
repositories {
google()
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.0.2'
- classpath 'com.google.gms:google-services:4.3.8'
+ classpath 'com.android.tools.build:gradle:7.0.4'
+ classpath 'com.google.gms:google-services:4.3.10'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}