Ответ 1
Из класса Service:
Intent dialogIntent = new Intent(this, MyActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);
Android:
public class LocationService extends Service {
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
startActivity(new Intent(this, activity.class));
}
}
Я запустил эту службу из Activity
В Activity
, если условие удовлетворяет началу
startService(new Intent(WozzonActivity.this, LocationService.class));
из моего LocationService
, упомянутого выше, не удалось запустить Activity
, как я могу получить контекст текущего запуска Activity
в классе службы?
Из класса Service:
Intent dialogIntent = new Intent(this, MyActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);
У меня была такая же проблема, и я хочу сообщить вам, что ни одно из вышеперечисленных не работало для меня. Что для меня работало:
Intent dialogIntent = new Intent(this, myActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(dialogIntent);
и в одном моем подклассе, хранящемся в отдельном файле, я должен был:
public static Service myService;
myService = this;
new SubService(myService);
Intent dialogIntent = new Intent(myService, myActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
myService.startActivity(dialogIntent);
Все остальные ответы дали мне nullpointerexception
.
Еще одна вещь, о которой стоит упомянуть: в то время как ответ выше отлично работает, когда наша задача находится в фоновом режиме, единственный способ заставить ее работать, если наша задача (сделанная из службы + некоторые действия) была на переднем плане (то есть одна из наши действия, видимые для пользователя) были такими:
Intent intent = new Intent(storedActivity, MyActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
storedActivity.startActivity(intent);
Я не знаю, действительно ли ACTION_VIEW или FLAG_ACTIVITY_NEW_TASK используются здесь. Ключом к успеху был
storedActivity.startActivity(intent);
и, конечно, FLAG_ACTIVITY_REORDER_TO_FRONT для повторного создания операции. Удачи!
нельзя использовать Context
Service
; смог получить (пакет) Context
:
Intent intent = new Intent(getApplicationContext(), SomeActivity.class);
С другой стороны,
Вы можете использовать свой собственный класс приложения и звонить из любого места, где вам нужно (особенно для неактивных действий).
public class App extends Application {
protected static Context context = null;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
public static Context getContext() {
return context;
}
}
И зарегистрируйте свой класс приложения:
<application android:name="yourpackage.App" ...
Затем вызовите:
App.getContext();
Если вам нужно вернуть действие, находящееся в bacgrounde, из вашей службы, я предлагаю следующую ссылку. Intent.FLAG_ACTIVITY_NEW_TASK не является решением.