Prevent direct execution of intentURLs with confirmation dialog
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
package com.github.gotify.messages
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.github.gotify.databinding.ActivityDialogIntentUrlBinding
|
||||
|
||||
internal class IntentUrlDialogActivity : AppCompatActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setFinishOnTouchOutside(false)
|
||||
val binding = ActivityDialogIntentUrlBinding.inflate(layoutInflater)
|
||||
val intentUrl = intent.getStringExtra(EXTRA_KEY_URL)
|
||||
assert(intentUrl != null) { "intentUrl may not be empty" }
|
||||
|
||||
binding.urlView.text = intentUrl
|
||||
binding.openButton.setOnClickListener {
|
||||
finish()
|
||||
Intent(Intent.ACTION_VIEW).apply {
|
||||
data = Uri.parse(intentUrl)
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
startActivity(this)
|
||||
}
|
||||
}
|
||||
binding.cancelButton.setOnClickListener { finish() }
|
||||
setContentView(binding.root)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val EXTRA_KEY_URL = "url"
|
||||
}
|
||||
}
|
||||
@@ -31,6 +31,7 @@ import com.github.gotify.client.model.Message
|
||||
import com.github.gotify.log.Log
|
||||
import com.github.gotify.log.UncaughtExceptionHandler
|
||||
import com.github.gotify.messages.Extras
|
||||
import com.github.gotify.messages.IntentUrlDialogActivity
|
||||
import com.github.gotify.messages.MessagesActivity
|
||||
import com.github.gotify.picasso.PicassoHandler
|
||||
import io.noties.markwon.Markwon
|
||||
@@ -320,9 +321,10 @@ internal class WebSocketService : Service() {
|
||||
)
|
||||
|
||||
if (intentUrl != null) {
|
||||
intent = Intent(Intent.ACTION_VIEW)
|
||||
intent.data = Uri.parse(intentUrl)
|
||||
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
intent = Intent(this, IntentUrlDialogActivity::class.java).apply {
|
||||
putExtra(IntentUrlDialogActivity.EXTRA_KEY_URL, intentUrl)
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
}
|
||||
startActivity(intent)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user