Запуск сервиса при старте аппарата

Рейтинг: 1Ответов: 1Опубликовано: 17.01.2015

Здравствуйте.

Помогите, пожалуйста, реализовать старт сервиса при запуске девайса. Перепробовал много способов, но они не работают. Мой манифест:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ua.intsystems.screenturn"
    android:installLocation="internalOnly"> <!--If the app is on SD-->
   <!-- <uses-permission android:name="android.permission.WRITE_SETTINGS" />-->
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <application android:allowBackup="true" android:label="@string/app_name"
        android:icon="@drawable/ic_launcher" android:theme="@style/AppTheme">

        <receiver android:name=".OnBootReceiver" android:enabled="true" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.QUICKBOOT_POWERON" /> <!--For some devices-->
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>

        <activity android:name=".MainActivity" android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service android:name=".ScreenOnService" android:enabled="true"/>
    </application>
</manifest>

OnBootReceiver.class:

    public class OnBootReceiver extends BroadcastReceiver {

    final String LOG_TAG = "Logs: ";

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent serviceIntent = new Intent(context, ScreenOnService.class);
        context.startService(serviceIntent);
        Toast.makeText(context,"Выполнилось",Toast.LENGTH_LONG).show();
    }
}

В манифесте пробовал указывать полный путь к классам - тоже не помогло, пробовал запускать вот с этим параметром и без него: android:installLocation="internalOnly" - тоже безрезультатно.

Ответы

▲ 1

Вот тут (https://stackoverflow.com/a/16235195/3212712), пишут что надо после установки приложения хотя бы раз его вручную запустить, чтобы начали отрабатываться случатели загрузки. Типа надо "ForceStop" в инфо приложения нажать, потом запустить. После этого при запуске телефона должно всё работать.