如何在Android中确定/获取正确的S语音数据包

时间:2016-10-31 10:44:18

标签: android android-5.0-lollipop android-6.0-marshmallow

我正在使用Android在Android中开启我的S Voice应用程序。如前所述,我将使用以下代码打开它

SVOICE_PACKAGE_NAME = "com.samsung.voiceserviceplatform";
SVOICE_LISTEN_ACTION = "com.sec.action.SVOICE";

以上代码在使用Android 5.0的Galaxy S4中运行良好。但是,问题来自于使用Android 6.0的Galaxy S7中的第一行和第二行。在使用Android 6.0的Galaxy S7中,第一行和第二行必须修改为

:lang()

还有应用程序名称S Voice改变了" S Voice"到" S Voice App"。这种变化给了我一项艰难的工作。因此,在决定调用这些功能之前,我想确定手机中的S语音应用程序。目前,我不知道改变是来自Android版本还是设备。您是否有任何想法可以在各种手机中调整问题:S4和S7?

1 个答案:

答案 0 :(得分:1)

每当打开应用程序时,可能存在程序包或应用程序名称差异。这是一个标准的实用方法来检查:

/**
 * 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;
}

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