Подтвердить что ты не робот

Активность запуска Android от службы

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 в классе службы?

4b9b3361

Ответ 1

Из класса Service:

Intent dialogIntent = new Intent(this, MyActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);

Ответ 2

У меня была такая же проблема, и я хочу сообщить вам, что ни одно из вышеперечисленных не работало для меня. Что для меня работало:

 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.

Ответ 3

Еще одна вещь, о которой стоит упомянуть: в то время как ответ выше отлично работает, когда наша задача находится в фоновом режиме, единственный способ заставить ее работать, если наша задача (сделанная из службы + некоторые действия) была на переднем плане (то есть одна из наши действия, видимые для пользователя) были такими:

    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 для повторного создания операции. Удачи!

Ответ 4

нельзя использовать Context Service; смог получить (пакет) Context:

Intent intent = new Intent(getApplicationContext(), SomeActivity.class);

Ответ 5

С другой стороны,

Вы можете использовать свой собственный класс приложения и звонить из любого места, где вам нужно (особенно для неактивных действий).

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();

Ответ 6

Если вам нужно вернуть действие, находящееся в bacgrounde, из вашей службы, я предлагаю следующую ссылку. Intent.FLAG_ACTIVITY_NEW_TASK не является решением.

fooobar.com/info/51518/...