У меня есть два приложения, в которых оба включены в режиме киоска. В настоящее время я отправляю широковещательную передачу от одного к другому, который передает данные. Я хочу сообщить принимающему приложению, чтобы начать новое действие.
В большинстве случаев я мог бы использовать намерение.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); однако... Я не могу начать новую задачу в режиме киоска.
Вот что у меня есть в BroadReceiver (который, как я проверил, работает для других данных). Этот код пытается начать новую активность:
Intent launchIntent = new Intent(Intent.ACTION_MAIN);
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // this doesn't work in kiosk mode...
launchIntent.setComponent(new ComponentName("my.package","my.package.myactivity"));
try {
if(launchIntent != null) {
context.getApplicationContext().startActivity(launchIntent);
Log.i(TAG, "Started activity");
} else
Log.i(TAG, "Intent is null");
} catch (Exception e) {
Log.e(TAG, e.toString());
}
Моя ошибка перед добавлением флага:
Kiosk Mode: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
И после добавления флага:
E/ActivityManager( 470): Attempted Lock Task Mode violation
Возможно ли отправить контекст через широковещательный приемник, чтобы я мог начать желаемое действие, используя этот контекст? Может ли кто-нибудь предложить другой метод, кроме использования широковещательных передач для начала новой деятельности?