fix: 修复当剪贴板存在贴吧链接时重复弹窗
This commit is contained in:
parent
542f053a1f
commit
91873eac34
|
|
@ -4,7 +4,6 @@ import android.app.Activity
|
|||
import android.app.ActivityManager
|
||||
import android.app.Application
|
||||
import android.app.Dialog
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.res.ColorStateList
|
||||
|
|
@ -87,30 +86,20 @@ class BaseApplication : Application(), IApp {
|
|||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
|
||||
LitePal.initialize(this)
|
||||
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
|
||||
private var clipBoardHash: Int = 0
|
||||
private var clipBoardHash: String? = null
|
||||
private fun updateClipBoardHashCode() {
|
||||
clipBoardHash = getClipBoardHash()
|
||||
}
|
||||
|
||||
private fun getClipBoardHash(): Int {
|
||||
val cm = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
||||
val data = cm.primaryClip
|
||||
if (data != null) {
|
||||
val item = data.getItemAt(0)
|
||||
return item.hashCode()
|
||||
}
|
||||
return 0
|
||||
private fun getClipBoardHash(): String? {
|
||||
return "$clipBoard $clipBoardTimestamp"
|
||||
}
|
||||
|
||||
private val clipBoard: String
|
||||
get() {
|
||||
val cm = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
||||
val data = cm.primaryClip ?: return ""
|
||||
val item = data.getItemAt(0)
|
||||
return if (item == null || item.text == null) {
|
||||
""
|
||||
} else item.text.toString()
|
||||
}
|
||||
private val clipBoard: String?
|
||||
get() = getClipBoardText()
|
||||
|
||||
private val clipBoardTimestamp: Long
|
||||
get() = getClipBoardTimestamp()
|
||||
|
||||
private fun isTiebaDomain(host: String?): Boolean {
|
||||
return host != null && (host.equals("wapp.baidu.com", ignoreCase = true) ||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
package com.huanchengfly.tieba.post.utils
|
||||
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import android.os.Build
|
||||
|
||||
private val Context.clipBoardManager
|
||||
get() = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
||||
|
||||
fun Context.getClipBoardHtmlText(): String? {
|
||||
val data = clipBoardManager.primaryClip ?: return null
|
||||
val item = data.getItemAt(0)
|
||||
return item?.coerceToHtmlText(this)
|
||||
}
|
||||
|
||||
fun Context.getClipBoardText(): String? {
|
||||
val data = clipBoardManager.primaryClip ?: return null
|
||||
val item = data.getItemAt(0)
|
||||
return item?.coerceToText(this)?.toString()
|
||||
}
|
||||
|
||||
fun Context.getClipBoardTimestamp(): Long {
|
||||
val clipDescription = clipBoardManager.primaryClipDescription ?: return 0
|
||||
var timestamp = 0L
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
timestamp = clipDescription.timestamp
|
||||
} else {
|
||||
try {
|
||||
val clazz = clipDescription.javaClass
|
||||
val timestampField = clazz.getDeclaredField("mTimestamp")
|
||||
timestampField.isAccessible = true
|
||||
timestamp = timestampField.getLong(clipDescription)
|
||||
} catch (e: NoSuchFieldException) {
|
||||
} catch (e: IllegalAccessException) {
|
||||
}
|
||||
}
|
||||
return timestamp
|
||||
}
|
||||
Loading…
Reference in New Issue