代码之家  ›  专栏  ›  技术社区  ›  F.Mysir

当我尝试启动另一个活动时,我遇到了这个错误:这个意图没有动作集,也不是由组件明确表示的

  •  0
  • F.Mysir  · 技术社区  · 1 年前

    我正在尝试打开一个新的活动,如下所示:

    startActivity(Intent(this@MainActivity, ActivityLogInSignUp::class.java))

    但我得到了这个错误:

    此意图没有动作集,也不是由组件明确表示的。您应该按组件明确此意图,或者设置一个与目标意图过滤器匹配的操作。

    1 回复  |  直到 1 年前
        1
  •  4
  •   Sergei Kozelko    1 年前

    这是lint版本中的一个错误 8.2.0-alpha15 这会导致误报。创建 Intent 使用类构造函数将创建带有显式组件的意图,因此使用起来是安全的。

    截至版本,该错误似乎尚未修复 8.2.0-alpha16 。作为解决方法,您可以通过添加以下内容来消除警告或降级lint版本 android.experimental.lint.version=8.2.0-alpha14 gradle.properties

    Google问题跟踪器中的匹配问题: https://issuetracker.google.com/issues/294200850

        2
  •  -3
  •   F.Mysir    1 年前

    更新

    看起来像是上面提到的bug Sergei 因此,我的解决方案涵盖了一种在修复之前在不显示警告消息的情况下启动意图的方法。

    解决方案

    根据谷歌的说法:

    没有动作且没有指定组件的意图是 潜在的安全风险,使用它们会导致系统崩溃 即将推出的Android版本。

    如何开始一个 explicit intent 如果不在Android Studio中显示警告消息(从我们的Android应用程序打开活动),则如下所示:

    startActivity(
        Intent().setClassName(
            "com.example.myapplication",
            "com.example.myapplication.activities.login_signup.ActivityLogInSignUp"
        )
    )
    

    您可以从清单中找到您的类名,例如:

        <activity
            android:name=".activities.login_signup.ActivityLogInSignUp"
            .
            .
            ./>
    

    For implicit intent 会像往常一样:

    val i = Intent()
    i.setAction(Intent.ACTION_VIEW)
    i.setData(Uri.parse("www.example.com"))
    startActivity(i) 
    

    现在,我们的应用程序将与外部应用程序连接,以便向我们展示一个网站。

    查看更多 android intents source