diff --git a/app/src/main/assets/print_demo.html b/app/src/main/assets/print_demo.html
index 39016e4..22439f3 100644
--- a/app/src/main/assets/print_demo.html
+++ b/app/src/main/assets/print_demo.html
@@ -418,9 +418,17 @@
}
}
+ var lastUploadTime = 0;
// 上传日志
function callUploadLogs() {
+ var now = Date.now();
+ if (now - lastUploadTime < 30000) {
+ alert("请勿频繁上传,请半分钟后再试");
+ return;
+ }
if (window.android && window.android.uploadLogs) {
+ lastUploadTime = now;
+ alert("开始上传日志...");
window.android.uploadLogs();
} else {
alert("上传日志接口不可用");
diff --git a/app/src/main/java/com/stand/standapp/MainActivity.kt b/app/src/main/java/com/stand/standapp/MainActivity.kt
index 3de114e..90ba1bc 100644
--- a/app/src/main/java/com/stand/standapp/MainActivity.kt
+++ b/app/src/main/java/com/stand/standapp/MainActivity.kt
@@ -231,17 +231,81 @@ class MainActivity : AppCompatActivity() {
val result = handleBridgeCall(payload, prompt.defaultValue ?: "")
return GeckoResult.fromValue(prompt.confirm(result))
}
+
// 默认处理(显示对话框)
- return null
+ val res = GeckoResult()
+ runOnUiThread {
+ val input = android.widget.EditText(this@MainActivity)
+ input.setText(prompt.defaultValue)
+ androidx.appcompat.app.AlertDialog.Builder(this@MainActivity)
+ .setTitle(prompt.title ?: "")
+ .setMessage(prompt.message)
+ .setView(input)
+ .setPositiveButton("确定") { _, _ -> res.complete(prompt.confirm(input.text.toString())) }
+ .setNegativeButton("取消") { _, _ -> res.complete(prompt.dismiss()) }
+ .setOnCancelListener { res.complete(prompt.dismiss()) }
+ .show()
+ }
+ return res
}
override fun onAlertPrompt(
session: GeckoSession,
prompt: GeckoSession.PromptDelegate.AlertPrompt
): GeckoResult? {
- Timber.tag("WebConsole").d("Alert: ${prompt.message}")
+ val res = GeckoResult()
+ runOnUiThread {
+ androidx.appcompat.app.AlertDialog.Builder(this@MainActivity)
+ .setMessage(prompt.message)
+ .setPositiveButton("确定") { _, _ -> res.complete(prompt.confirm()) }
+ .setOnCancelListener { res.complete(prompt.dismiss()) }
+ .show()
+ }
+ return res
+ }
+
+ override fun onAuthPrompt(
+ session: GeckoSession,
+ prompt: GeckoSession.PromptDelegate.AuthPrompt
+ ): GeckoResult? {
return null
}
+
+ override fun onChoicePrompt(
+ session: GeckoSession,
+ prompt: GeckoSession.PromptDelegate.ChoicePrompt
+ ): GeckoResult? {
+ val res = GeckoResult()
+ runOnUiThread {
+ val choices = prompt.choices.map { it.label }.toTypedArray()
+ androidx.appcompat.app.AlertDialog.Builder(this@MainActivity)
+ .setTitle(prompt.title)
+ .setSingleChoiceItems(choices, -1) { dialog, which ->
+ dialog.dismiss()
+ res.complete(prompt.confirm(prompt.choices[which]))
+ }
+ .setOnCancelListener { res.complete(prompt.dismiss()) }
+ .show()
+ }
+ return res
+ }
+
+ override fun onButtonPrompt(
+ session: GeckoSession,
+ prompt: GeckoSession.PromptDelegate.ButtonPrompt
+ ): GeckoResult? {
+ val res = GeckoResult()
+ runOnUiThread {
+ androidx.appcompat.app.AlertDialog.Builder(this@MainActivity)
+ .setTitle(prompt.title ?: "提示")
+ .setMessage(prompt.message)
+ .setPositiveButton("确定") { _, _ -> res.complete(prompt.confirm(GeckoSession.PromptDelegate.ButtonPrompt.Type.POSITIVE)) }
+ .setNegativeButton("取消") { _, _ -> res.complete(prompt.dismiss()) }
+ .setOnCancelListener { res.complete(prompt.dismiss()) }
+ .show()
+ }
+ return res
+ }
}
}