Я использую Android для включения моего приложения S Voice в Android. Как и в предыдущей работе, я буду использовать следующий код, чтобы включить его
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();
}
Приведенный выше код хорошо зарекомендовал себя в Galaxy S4 с Android 5.0. Однако проблема исходит от первой и второй строк в Galaxy S7 с Android 6.0. В Galaxy S7 с Android 6.0 первая и вторая строки должны быть изменены как
SVOICE_PACKAGE_NAME = "com.samsung.voiceserviceplatform";
SVOICE_LISTEN_ACTION = "com.sec.action.SVOICE";
А также имя приложения S Voice с изменением "S Voice" на "S Voice App". Это изменение дает мне трудную работу. Следовательно, я хочу определить приложение S Voice в своем телефоне, прежде чем решать эти функции. В настоящее время я не знаю, что изменение происходит от версии Android или устройства. Не могли бы вы придумать, как адаптировать проблему на разных телефонах: 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;
}
Вам нужно будет удалить свое собственное ведение журнала.