【发布时间】:2016-10-31 10:44:18
【问题描述】:
我正在使用 Android 在 Android 中打开我的 S Voice 应用程序。和之前的工作一样,我会使用下面的代码来开启它
String SVOICE_PACKAGE_NAME = "com.vlingo.midas";
String SVOICE_LISTEN_ACTION = "com.sec.action.SVOICE";
Intent intent = new Intent();
intent.setPackage(SVOICE_PACKAGE_NAME);
intent.setAction(SVOICE_LISTEN_ACTION);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
getApplication().startActivity(intent);
} catch (final ActivityNotFoundException e) {
e.printStackTrace();
} catch (final Exception e) {
e.printStackTrace();
}
以上代码在装有 Android 5.0 的 Galaxy S4 中运行良好。然而,问题来自于搭载 Android 6.0 的 Galaxy S7 的第一行和第二行。在Android 6.0的Galaxy S7中,第一行和第二行必须修改为
SVOICE_PACKAGE_NAME = "com.samsung.voiceserviceplatform";
SVOICE_LISTEN_ACTION = "com.sec.action.SVOICE";
还有应用程序名称 S Voice 从“S Voice”更改为“S Voice App”。这种变化给了我一项艰巨的工作。因此,在决定调用这些功能之前,我想确定我手机中的 S Voice App。目前,我不知道变化是来自Android版本还是设备。你有什么想法可以在各种手机中适应这个问题:S4 和 S7?
【问题讨论】:
-
在发送 Intent 之前,您不能只检查安装了哪个包吗?
-
其实我只有一个输入是“打开S Voice”,然后应用程序必须打开S Voice应用程序。因此,我们无法手动检查包名。
-
输入可能是“香肠”,一旦检测到它就不会限制您编写的代码......?
-
对不起,我不明白。因为我的任务是打开 S Voice 应用。它必须在 S4 和 S7 中都可以工作。但是,它们的名称不同,因此很难处理
-
在您的代码中,当您需要打开 S Voice 时,您的代码需要检查安装了哪个包(如果有的话)。然后,您在意图中使用正确的包名称....?
标签: android android-5.0-lollipop android-6.0-marshmallow