使用 MlKitContext 时出现 java.lang.NullPointerException

问题描述 投票:0回答:1

我正在尝试实现 ML Kit Context 来识别文本。 这是我的代码

private val textRecognition = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
private fun recognizeText(imageUri: Uri) {
    try {
        val inputImage = InputImage.fromFilePath(requireContext(), imageUri)
        lifecycleScope.launch {
            textRecognition.process(inputImage).addOnSuccessListener {
                viewBinding.wordEt.text = it.text
            }.addOnFailureListener {
                it.printStackTrace()
            }
        }

    } catch (e: IOException) {
        e.printStackTrace()
    }
}

启动我的应用程序时出现此错误

java.lang.IllegalStateException: MlKitContext has not been initialized

因此,我尝试将 MLKit.initialize() 添加到 Application.onCreate() 中,但是仍然有错误。

class TranslateApplication : Application() {
override fun onCreate() {
    super.onCreate()
    FavoriteRepository.initialize(this)
    MlKit.initialize(this)
}

}

java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.mlkit.vision.text.TextRecognizer com.google.mlkit.vision.text.internal.zzm.zza(com.google.mlkit.vision.text.TextRecognizerOptionsInterface)' on a null object reference

欢迎任何建议或见解。

android kotlin nullpointerexception
1个回答
0
投票

参考这里

添加到 AndroidManifest.xml 并禁用 contect 提供程序。 不要忘记更改 applicationId,例如 com.example.appname

<provider
   android:name="com.google.mlkit.common.internal.MlKitInitProvider"
   android:authorities="${applicationId}.mlkitinitprovider"
   tools:node="remove" />

现在,在应用程序类的try-catch块中调用MlKit.initialize。

        try {
        MlKit.initialize(this)
    }catch (e: Exception) {
        Log.e("MainApp", e.message.toString())
    }

这对我来说是工作。

© www.soinside.com 2019 - 2024. All rights reserved.