android - 是否可以在没有图标启动器的情况下启动语音命令 Activity ?

标签 android android-intent

因此,我编写了一个具有简单附加功能的应用程序,例如切换手机 Wi-Fi。我已经阅读了关于“Adding Voice Capabilities”的 Android 开发者文章' 并已成功通过 Google Now 语音命令启动副功能 Activity :“启动 mySideFeature Activity ”,而无需启动我的整个应用程序。

问题是,为了通过语音命令启动 Activity,您必须声明其操作 .MAIN 及其类别 .LAUNCHER。这意味着我的应用程序现在将有两个启动器图标,语音命令 Activity 和主要应用程序 Activity 本身,显示在应用程序抽屉中。

我做了一些研究,但我无法找到一种方法来从 Activity 中揭示 Activity 是通过点击启动器图标还是通过语音命令启动的。

是否可以在没有图标启动器的情况下使用语音命令启动 Activity?

这是我的 list 的一个简单版本,您将在其中看到两个带有启动器 intent-filter 的 Activity 的问题。

<application>
  <activity android:name="MainAppActivity" android:label="Main App">
      <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
  </activity>
  <activity android:name="sideFeatureActivity" android:label="Launch Side Feature">
      <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
  </activity>
</application>

最佳答案

在您的主要 Activity 的 onCreate 中添加:

Intent intent = getIntent();
Set<String> categories = getCategories();
if (categories != null && categories.contains(".LAUNCHER")) {
   ... //Started via launcher tap
} else {
   ... //Started via voice command
}

关于android - 是否可以在没有图标启动器的情况下启动语音命令 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35108340/

相关文章:

android - onPresentScreen 和 onLeaveApplication 有什么区别?

javascript - 需要在我的 React-Native 应用程序中使用 Apache Kafka

java - 如何使用 Intent.FLAG_ACTIVITY_CLEAR_TOP 清除 Activity Stack?

android - 如何返回 Activity 堆栈中某处的 Activity ?

android - 通过 Android Intent 在 Google map 中添加多个航路点

java - Android在实现RecognitionListener时获取Intent

android - 使用ViewModel和LiveData改造执行API多次

java - Thread.setDefaultUncaughtExceptionHandler 中的应用程序崩溃

android - 使用 Android 将特定于供应商的信息插入并嗅探到信标帧中

android - 从 Intent 调用 SimpleBaseGameActivity