简体   繁体   English

错误:PlatformException(no_fragment_activity,local_auth 插件要求活动是 FragmentActivity。,null)

[英]Error: PlatformException(no_fragment_activity, local_auth plugin requires activity to be a FragmentActivity., null)

Getting this error while using local_auth version 0.6.0 It's working fine for iOS but getting this error in android.使用 local_auth 版本 0.6.0 时出现此错误 它对 iOS 工作正常,但在 android 中出现此错误。 Already have implemented class MainActivity: FlutterFragmentActivity() but still getting this issue已经实现class MainActivity: FlutterFragmentActivity()但仍然遇到这个问题

This is what i did to solve this issue这就是我为解决这个问题所做的

Change MainActivity.kt as below更改MainActivity.kt如下

package com.[your.package]

import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterFragmentActivity() {
    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine);
    }
}

However, after changing this MainActivity.kt , I also faced some other issue with the Theme.AppCompat .但是,在更改此MainActivity.kt ,我还面临Theme.AppCompat其他一些问题。 Check this out https://gist.github.com/akifarhan/f70a2c777651f2ea61a15eb92a5939c1 for the solution.请查看https://gist.github.com/akifarhan/f70a2c777651f2ea61a15eb92a5939c1以获取解决方案。

change your main activity to override FlutterFragmentActivity更改您的主要活动以覆盖 FlutterFragmentActivity

import android.os.Bundle
import io.flutter.app.FlutterFragmentActivity
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterFragmentActivity() {
   override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      GeneratedPluginRegistrant.registerWith(this)
  }
}

if you are using flutter embedding version 2如果您使用的是颤振嵌入版本 2

import androidx.annotation.NonNull
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterFragmentActivity() {
   override fun configureFlutterEngine(@NonNull flutterEngine: 
     FlutterEngine) {
     GeneratedPluginRegistrant.registerWith(flutterEngine)
   }
}

I am using local_auth 0.6.2+3我正在使用 local_auth 0.6.2+3

My MainActivity.kt我的主活动.kt

 package xx.xx.xxx
 import androidx.annotation.NonNull;
 import io.flutter.embedding.android.FlutterFragmentActivity
 import io.flutter.embedding.engine.FlutterEngine
 import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterFragmentActivity() {
  override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
    GeneratedPluginRegistrant.registerWith(flutterEngine);
   }
}

I was using SplashScreenUntilFirstFrame meta tag, Removing it from my main/AndroidManifest.xml works absolutely fine now.我正在使用 SplashScreenUntilFirstFrame 元标记,从我的 main/AndroidManifest.xml 中删除它现在工作得很好。

<meta-data
android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
android:value="true"/>

Flutter details颤振细节

Flutter version 1.22.4 at /Users/macbookpro/Desktop/development/flutter Flutter 1.22.4 版位于 /Users/macbookpro/Desktop/development/flutter

  • Framework revision 1aafb3a8b9 (4 weeks ago), 2020-11-13 09:59:28 -0800框架修订 1aafb3a8b9(4 周前),2020-11-13 09:59:28 -0800
  • Engine revision 2c956a31c0引擎修订版 2c956a31c0
  • Dart version 2.10.4飞镖版本 2.10.4
  • local_auth: ^0.6.3+4 local_auth:^0.6.3+4

If you are using java then change your main activity to this如果您使用的是 java,那么将您的主要活动更改为此

import androidx.annotation.NonNull;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.android.FlutterFragmentActivity;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterFragmentActivity{
}

2nd answer worked fine if we remove @NotNull like如果我们删除@NotNull 之类的,第二个答案就可以正常工作

import androidx.annotation.NonNull
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterFragmentActivity() {
   override fun configureFlutterEngine( flutterEngine: 
     FlutterEngine) {
     GeneratedPluginRegistrant.registerWith(flutterEngine)
   }
}

Add the following line to the dependencies in your app level build.gradle file: build.gradle添加到应用级别build.gradle文件中的依赖build.gradle

dependencies{
    api "androidx.core:core:1.1.0-aplha03"
}

In my case, i forgot to change in AndroidManifest.xml file.就我而言,我忘记更改 AndroidManifest.xml 文件。 Complete changes for reference完整修改供参考

MainActivity.java主活动.java

import android.os.Bundle;
import io.flutter.app.FlutterFragmentActivity;
import io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin;
import io.flutter.plugins.localauth.LocalAuthPlugin;

public class MainActivity extends FlutterFragmentActivity  {
  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FlutterAndroidLifecyclePlugin.registerWith(
                registrarFor(
                        "io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin"));
        LocalAuthPlugin.registerWith(registrarFor("io.flutter.plugins.localauth.LocalAuthPlugin"));
    }
}

Then然后

AndroidManifest.xml AndroidManifest.xml

From

  <application
        android:label="<name>"
        android:icon="@mipmap/ic_launcher">
        <activity
           android:name="io.flutter.embedding.android.FlutterActivity"
           ....

To

  <application
        android:label="<name>"
        android:icon="@mipmap/ic_launcher">
        <activity
           android:name="io.flutter.embedding.android.FlutterFragmentActivity"
           ....

I tried adding the code in MainActivity.kt.我尝试在 MainActivity.kt 中添加代码。 For some reason, it doesn't take the code from MainActivity.kt and only searches for MainActivity.java.出于某种原因,它没有从 MainActivity.kt 中获取代码而只搜索 MainActivity.java。 So the following code in MainActivity.java fixed the issue for me.所以 MainActivity.java 中的以下代码为我解决了这个问题。

MainActivity.java主活动.java

package com.<package_name>;

import android.os.Bundle;
import io.flutter.embedding.android.FlutterFragmentActivity;
import androidx.annotation.NonNull;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin;
import io.flutter.plugins.localauth.LocalAuthPlugin;

public class MainActivity extends FlutterFragmentActivity {

    public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) 
    {
      GeneratedPluginRegistrant.registerWith(flutterEngine);
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

From the docs -https://pub.dev/documentation/local_auth/latest/来自文档-https://pub.dev/documentation/local_auth/latest/

Simply use the code below in your MainActivity.kt只需在 MainActivity.kt 中使用以下代码

 package [package ID here]

    import io.flutter.embedding.android.FlutterFragmentActivity
    
    class MainActivity: FlutterFragmentActivity() {
    }

Uninstall your current build of the app and then rebuild again卸载当前版本的应用程序,然后再次重建

By the way, ensure you're not making multiple calls for顺便说一句,确保您没有多次调用

 auth.authenticate(...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 flutter 中的 PlatformException(no_fragment_activity,local_auth 插件要求活动为 FragmentActivity。,null) - PlatformException(no_fragment_activity, local_auth plugin requires activity to be a FragmentActivity., null) in flutter 错误:使用生物特征验证时出错:PlatformException(no_fragment_activity,local_auth 插件要求活动是 FragmentActivity。,null,null) - Error: error using biometric auth: PlatformException(no_fragment_activity, local_auth plugin requires activity to be a FragmentActivity., null, null) Flutter : local_auth: ^0.6.1 : PlatformException(error, You need to use a Theme.AppCompat theme (or后代) with this Activity., null) - Flutter : local_auth: ^0.6.1 : PlatformException(error, You need to use a Theme.AppCompat theme (or descendant) with this activity., null) 在 Flutter 中配置 local_auth 插件 - configure local_auth plugin in flutter Local_Auth FLUTTER PACKAGE - Local_Auth FLUTTER PACKAGE 未处理的异常:PlatformException(ACTIVITY_NOT_FOUND,未找到处理意图 { 09829132444 } 的活动,null,null) - Unhandled Exception: PlatformException(ACTIVITY_NOT_FOUND, No Activity found to handle intent { 09829132444 }, null, null) 为local_auth Flutter添加自定义对话框 - Adding custom dialog for local_auth Flutter 检测 local_auth Flutter 何时发生生物特征变化 - Detect when there is a biometric change in local_auth Flutter 添加“ local_auth”库后,Flutter应用程序运行失败 - Flutter Application fails running after adding “local_auth” library Flutter:local_auth 可以通过按后退按钮绕过 - Flutter: local_auth can be bypassed by pressing the back button
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM