Support event id payload
Этот коммит содержится в:
@@ -16,18 +16,27 @@
|
|||||||
@file:Suppress("DEPRECATION")
|
@file:Suppress("DEPRECATION")
|
||||||
package org.traccar.manager
|
package org.traccar.manager
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.webkit.WebViewFragment
|
import android.webkit.WebViewFragment
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
|
var pendingEventId: Long? = null
|
||||||
|
|
||||||
|
private fun updateEventId(intent: Intent?) {
|
||||||
|
intent?.getStringExtra("eventId")?.let { pendingEventId = it.toLongOrNull() }
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_main)
|
setContentView(R.layout.activity_main)
|
||||||
|
updateEventId(intent)
|
||||||
if (savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
initContent()
|
initContent()
|
||||||
}
|
}
|
||||||
@@ -41,6 +50,12 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onNewIntent(intent: Intent?) {
|
||||||
|
super.onNewIntent(intent)
|
||||||
|
updateEventId(intent)
|
||||||
|
LocalBroadcastManager.getInstance(this).sendBroadcast(Intent(MainFragment.EVENT_EVENT))
|
||||||
|
}
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.M)
|
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||||
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
|
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
|
||||||
val fragment = fragmentManager.findFragmentById(android.R.id.content)
|
val fragment = fragmentManager.findFragmentById(android.R.id.content)
|
||||||
@@ -51,7 +66,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
val fragment = fragmentManager.findFragmentById(android.R.id.content) as? WebViewFragment
|
val fragment = fragmentManager.findFragmentById(android.R.id.content) as? WebViewFragment
|
||||||
if (fragment?.webView?.canGoBack() == true) {
|
if (fragment?.webView?.canGoBack() == true) {
|
||||||
fragment.webView.goBack();
|
fragment.webView.goBack()
|
||||||
} else {
|
} else {
|
||||||
super.onBackPressed()
|
super.onBackPressed()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ class MainFragment : WebViewFragment() {
|
|||||||
val url = message.substring(7)
|
val url = message.substring(7)
|
||||||
PreferenceManager.getDefaultSharedPreferences(activity)
|
PreferenceManager.getDefaultSharedPreferences(activity)
|
||||||
.edit().putString(MainActivity.PREFERENCE_URL, url).apply()
|
.edit().putString(MainActivity.PREFERENCE_URL, url).apply()
|
||||||
activity.runOnUiThread { webView.loadUrl(url) }
|
activity.runOnUiThread { loadPage() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -73,10 +73,21 @@ class MainFragment : WebViewFragment() {
|
|||||||
webSettings.databaseEnabled = true
|
webSettings.databaseEnabled = true
|
||||||
webSettings.mediaPlaybackRequiresUserGesture = false
|
webSettings.mediaPlaybackRequiresUserGesture = false
|
||||||
webSettings.setSupportMultipleWindows(true)
|
webSettings.setSupportMultipleWindows(true)
|
||||||
|
loadPage()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun loadPage() {
|
||||||
val url = PreferenceManager.getDefaultSharedPreferences(activity)
|
val url = PreferenceManager.getDefaultSharedPreferences(activity)
|
||||||
.getString(MainActivity.PREFERENCE_URL, null)
|
.getString(MainActivity.PREFERENCE_URL, null)
|
||||||
if (url != null) {
|
if (url != null) {
|
||||||
|
val mainActivity = activity as? MainActivity
|
||||||
|
val eventId = mainActivity?.pendingEventId
|
||||||
|
mainActivity?.pendingEventId = null
|
||||||
|
if (eventId != null) {
|
||||||
|
webView.loadUrl("$url?eventId=$eventId")
|
||||||
|
} else {
|
||||||
webView.loadUrl(url)
|
webView.loadUrl(url)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
activity.fragmentManager
|
activity.fragmentManager
|
||||||
.beginTransaction().replace(android.R.id.content, StartFragment())
|
.beginTransaction().replace(android.R.id.content, StartFragment())
|
||||||
@@ -84,7 +95,7 @@ class MainFragment : WebViewFragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
|
private val tokenBroadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
|
||||||
override fun onReceive(context: Context, intent: Intent) {
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
val token = intent.getStringExtra(KEY_TOKEN)
|
val token = intent.getStringExtra(KEY_TOKEN)
|
||||||
val code = "updateNotificationToken && updateNotificationToken('$token')"
|
val code = "updateNotificationToken && updateNotificationToken('$token')"
|
||||||
@@ -92,15 +103,22 @@ class MainFragment : WebViewFragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val eventIdBroadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
|
||||||
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
|
loadPage()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super.onStart()
|
super.onStart()
|
||||||
val intentFilter = IntentFilter(EVENT_TOKEN)
|
broadcastManager.registerReceiver(tokenBroadcastReceiver, IntentFilter(EVENT_TOKEN))
|
||||||
broadcastManager.registerReceiver(broadcastReceiver, intentFilter)
|
broadcastManager.registerReceiver(eventIdBroadcastReceiver, IntentFilter(EVENT_EVENT))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStop() {
|
override fun onStop() {
|
||||||
super.onStop()
|
super.onStop()
|
||||||
broadcastManager.unregisterReceiver(broadcastReceiver)
|
broadcastManager.unregisterReceiver(tokenBroadcastReceiver)
|
||||||
|
broadcastManager.unregisterReceiver(eventIdBroadcastReceiver)
|
||||||
}
|
}
|
||||||
|
|
||||||
private var openFileCallback: ValueCallback<Uri?>? = null
|
private var openFileCallback: ValueCallback<Uri?>? = null
|
||||||
@@ -225,6 +243,7 @@ class MainFragment : WebViewFragment() {
|
|||||||
companion object {
|
companion object {
|
||||||
const val EVENT_LOGIN = "eventLogin"
|
const val EVENT_LOGIN = "eventLogin"
|
||||||
const val EVENT_TOKEN = "eventToken"
|
const val EVENT_TOKEN = "eventToken"
|
||||||
|
const val EVENT_EVENT = "eventEvent"
|
||||||
const val KEY_TOKEN = "keyToken"
|
const val KEY_TOKEN = "keyToken"
|
||||||
private const val REQUEST_PERMISSIONS_LOCATION = 1
|
private const val REQUEST_PERMISSIONS_LOCATION = 1
|
||||||
private const val REQUEST_FILE_CHOOSER = 1
|
private const val REQUEST_FILE_CHOOSER = 1
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user