如何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;
}
您需要删除我的自定义日志记录。
我正在使用 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;
}
您需要删除我的自定义日志记录。