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

Как запустить Activity без пользовательского интерфейса?

Можно ли каким-либо образом запустить активность из основной функции без пользовательского интерфейса? то есть есть способ создать своего рода "обертку" вокруг другого действия, то есть путем запуска основного действия он автоматически переключится на другую активность.

Если это невозможно, существует ли способ удалить основное действие из стека, чтобы нажатие кнопки "Назад" не привело вас к пустым интерфейсом? Вот пример того, что я пытаюсь сделать:

public class WrapperActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:555-1212"));
        startActivity(intent);
    }
}
4b9b3361

Ответ 1

Вам нужно добавить флаг Intent,

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

или

вызовите "finish();" после того, как уволили намерение.

Ответ 2

Android также предоставляет тему специально для этого:

android:theme="@android:style/Theme.NoDisplay"

Ответ 3

В вашем манифесте, когда вы объявляете действие, используйте тему "@android:style/Theme.Translucent.NoTitleBar"

Пример:

<activity android:name="yourActivityName" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent.NoTitleBar">

Ответ 4

Используя

<activity android:name="yourActivityName" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent.NoTitleBar">

упомянутый Brian515, отлично работает. Этот метод полезен для создания точки входа Activity, которая определяет, на какой активности вызывать, запускать, сервисы и т.д., Без необходимости показывать пользовательский интерфейс пользователю. Не забудьте использовать finish() после того, как вы начали свое намерение.

Ответ 5

Я думаю, это поможет вам много:

<activity  android:name = "MyActivity" 
          android:label = "@string/app_name" 
          android:theme = "@android:style/Theme.NoDisplay" >

Ответ 6

На всякий случай, если вы используете Android 6.0+ или Target SDK 23+, тема android:theme = "@android:style/Theme.NoDisplay" приведет к сбою с ошибкой did not call finish() prior to onResume() completing. На самом деле это ошибка, признанная разработчиками Google здесь.

Поэтому рекомендуется использовать действие со следующей темой в качестве обходного пути.

android:theme = "@android:style/Theme.Translucent.NoTitleBar"

Ответ 7

Похож на вопрос, заданный здесь: Удаление активности из стека истории

Если это так, вы можете использовать:

FLAG_ACTIVITY_NO_HISTORY

Это должно работать, чтобы стереть действия из стека.

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

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

Ответ 8

Я использовал moveTaskToBack(true) в onResume(), чтобы поместить весь стек активности в фоновом режиме.

Ответ 9

В вашем манифесте добавьте @android:style/Theme.Translucent.NoTitleBar", как указано в некоторых из приведенных выше ответов.

Также удалите строку setContentView(R.layout.your_activity); из файла activity.java.

Ответ 10

Если вы не взаимодействуете с пользовательским интерфейсом, то то, что вы пытаетесь сделать, больше похоже на службу Android.