如何determine/get纠正Android中的S Voice数据包

How to determine/get correct S Voice packet in Android

我正在使用 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"。这种变化给了我一项艰巨的工作。因此,在决定调用这些函数之前,我想在我的 phone 中确定 S Voice App。目前,我不知道更改来自 Android 版本或设备。您有什么想法可以在各种 phone 中调整这个问题:S4 和 S7?

无论何时打开应用程序,程序包或应用程序名称都可能不同。这是一个标准的实用方法来检查:

/**
 * Check if the user has a package installed
 *
 * @param ctx         the application context
 * @param packageName the application package name
 * @return true if the package is installed
 */
public static boolean isPackageInstalled(@NonNull final Context ctx, @NonNull final String packageName) {
    if (DEBUG) {
        MyLog.i(CLS_NAME, "isPackageInstalled");
    }

    try {
        ctx.getApplicationContext().getPackageManager().getApplicationInfo(packageName, 0);
        return true;
    } catch (final PackageManager.NameNotFoundException e) {
        if (DEBUG) {
            MyLog.w(CLS_NAME, "isPackageInstalled: NameNotFoundException");
        }
    } catch (final NullPointerException e) {
        if (DEBUG) {
            MyLog.w(CLS_NAME, "isPackageInstalled: NullPointerException");
        }
    } catch (final Exception e) {
        if (DEBUG) {
            MyLog.w(CLS_NAME, "isPackageInstalled: Exception");
        }
    }

    return false;
}

您需要删除我的自定义日志记录。