我想在我的应用程序中支持华为设备的表情符号。对于所有其他供应商,我使用这样的代码来初始化EmojiCompat:
val fontRequest = FontRequest(
"com.google.android.gms.fonts",
"com.google.android.gms",
"Noto Color Emoji Compat",
R.array.com_google_android_gms_fonts_certs
)
val config = FontRequestEmojiCompatConfig(context, fontRequest)
EmojiCompat.init(config)但对于华为设备来说,因为他们无法访问谷歌资源(我猜),所以它不起作用,EmojiCompat也不会初始化。我知道可以使用BundledEmojiCompatConfig,但我更喜欢总是获取最新的字体。
除了谷歌为华为设备提供的providerAuthority/Package之外,还有其他选择吗?
发布于 2021-03-09 10:49:49
EmojiCompat是安卓的一部分,并不是谷歌移动服务所独有的。我测试了下面的演示应用程序,它的代码片段与您的相同,它在我的华为Mate 30 Pro上运行良好。
发布于 2021-10-30 07:23:28
您可以对无法访问GMS的设备使用BundledEmojiCompatConfig。
例如:
def emojiCompatVersion = "1.0.0-rc01"
implementation 'androidx.emoji2:emoji2-views:$emojiCompatVersion'
implementation 'androidx.emoji2:emoji2-bundled:$emojiCompatVersion'用于初始化
的EmojiCompat帮助器类
import android.content.Context
import androidx.emoji2.bundled.BundledEmojiCompatConfig
import androidx.emoji2.text.EmojiCompat
import androidx.emoji2.text.EmojiCompat.LOAD_STRATEGY_MANUAL
object EmojiCompatHandler {
fun initializeEmojiCompat(appContext: Context) {
val config = BundledEmojiCompatConfig(appContext)
.setReplaceAll(true)
.setMetadataLoadStrategy(LOAD_STRATEGY_MANUAL)
.registerInitCallback(object : EmojiCompat.InitCallback() {
override fun onInitialized() {
logDebug("EmojiCompat Initialized Successfully")
}
override fun onFailed(throwable: Throwable?) {
logDebug("EmojiCompat Failed to Load: ${throwable?.message}")
}
})
EmojiCompat.init(config)
}
}EmojiCompat (根据我的观察,可能会相当慢),通过Application#onCreate()或App Startup
https://stackoverflow.com/questions/65716425
复制相似问题