diff options
author | Iván Ávalos <avalos@disroot.org> | 2022-01-03 19:32:38 -0600 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2022-01-03 19:32:38 -0600 |
commit | c95542f9b2ea1c0b9100daecb60a74ac949d32b3 (patch) | |
tree | 6c61f99ebf906a45871e61b26bfb257188388519 | |
parent | 287d0b62126b36ed4b268c99957143924ea295e6 (diff) | |
download | etbsa-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-- | .gitignore | 1 | ||||
-rw-r--r-- | app/build.gradle | 6 | ||||
-rw-r--r-- | app/src/google/java/org/traccar/manager/GoogleMainApplication.kt | 4 | ||||
-rw-r--r-- | app/src/main/AndroidManifest.xml | 2 | ||||
-rw-r--r-- | app/src/main/java/org/traccar/manager/MainActivity.kt | 1 | ||||
-rw-r--r-- | app/src/main/java/org/traccar/manager/MainFragment.kt | 47 | ||||
-rw-r--r-- | app/src/main/res/xml/network_security_config.xml | 2 | ||||
-rw-r--r-- | build.gradle | 6 |
8 files changed, 45 insertions, 24 deletions
@@ -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" } } |