Приложение-служба Android - PullRequest
6 голосов
/ 09 марта 2011

Я пишу программный пакет для устройств Android, который будет отслеживать время вызовов и другую информацию о вызовах. Мне бы хотелось, чтобы одно из приложений запускалось как Служба без запуска из Activity, и я хотел бы, чтобы оно сразу инициализировалось при загрузке телефона и продолжало работать постоянно, прослушивая телефонные звонки, записывая информацию в базу данных как необходимо. Службе необходимо будет предоставить пользователю диалог в конце каждого вызова.

2 вопроса:

  1. Как мне заставить программу (Сервис) автоматически инициализироваться при загрузке без каких-либо пользовательских настроек или взаимодействия?

  2. У меня сложилось впечатление, что вы не можете создавать экземпляры и отображать диалоги без использования Activity. Мне бы хотелось, чтобы диалоги появлялись поверх всего, что пользователь сейчас имеет на экране, и отображали диалог. Есть ли способ сделать активность полностью прозрачной над текущей активностью или есть способ отображения диалогов из службы?

заранее спасибо.

1 Ответ

10 голосов
/ 09 марта 2011

Как заставить программу (Сервис) автоматически инициализироваться при загрузке без каких-либо пользовательских настроек или взаимодействия?

Добавьте это разрешение в свой манифест:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

Затем добавьте получатель в манифест:

<receiver android:name="your.package.BootReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <category android:name="android.intent.category.HOME" />
    </intent-filter>
</receiver>

Создайте получатель в коде Java:

public class BootReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // start the service from here
    }
}

Я былпод впечатлением, что вы не можете создавать и отображать диалоги без использования Activity.Мне бы хотелось, чтобы диалоги появлялись поверх всего, что пользователь сейчас имеет на экране, и отображали диалог.Есть ли способ сделать деятельность полностью прозрачной для текущей деятельности или есть способ отображения диалогов из службы?

Да, это правда.Вы должны иметь активность, которая появляется в диалоговом окне.Чтобы создать прозрачное действие, добавьте следующий стиль в файл res/values/styles.xml (если у вас его нет, создайте его). Вот полный файл:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.Transparent" parent="android:Theme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">#00000000</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
  </style>
</resources>

Затем примените стиль к своему действию,например:

<activity android:name=".TransparentActivity" android:theme="@style/Theme.Transparent">
...
</activity>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...