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.ActivityManager
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
import android.content.ClipboardManager
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
|
|
@ -87,30 +86,20 @@ class BaseApplication : Application(), IApp {
|
||||||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
|
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
|
||||||
LitePal.initialize(this)
|
LitePal.initialize(this)
|
||||||
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
|
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
|
||||||
private var clipBoardHash: Int = 0
|
private var clipBoardHash: String? = null
|
||||||
private fun updateClipBoardHashCode() {
|
private fun updateClipBoardHashCode() {
|
||||||
clipBoardHash = getClipBoardHash()
|
clipBoardHash = getClipBoardHash()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getClipBoardHash(): Int {
|
private fun getClipBoardHash(): String? {
|
||||||
val cm = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
return "$clipBoard $clipBoardTimestamp"
|
||||||
val data = cm.primaryClip
|
|
||||||
if (data != null) {
|
|
||||||
val item = data.getItemAt(0)
|
|
||||||
return item.hashCode()
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private val clipBoard: String
|
private val clipBoard: String?
|
||||||
get() {
|
get() = getClipBoardText()
|
||||||
val cm = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
|
||||||
val data = cm.primaryClip ?: return ""
|
private val clipBoardTimestamp: Long
|
||||||
val item = data.getItemAt(0)
|
get() = getClipBoardTimestamp()
|
||||||
return if (item == null || item.text == null) {
|
|
||||||
""
|
|
||||||
} else item.text.toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun isTiebaDomain(host: String?): Boolean {
|
private fun isTiebaDomain(host: String?): Boolean {
|
||||||
return host != null && (host.equals("wapp.baidu.com", ignoreCase = true) ||
|
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