wergio
@wergio
Программист - любитель!

Почему на версиях Android выше 6.0 не работает BroadcastReceiver onReceive?

У меня есть вот такой пример: ( stacktips.com/tutorials/android/repeat-alarm-examp... )
Работает начиная с 4.4. и до 6.0

Манифест:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test.test">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:permissionGroup="string"
        android:protectionLevel="normal"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name="com.test.test.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>

        <receiver
            android:name=".BootService"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </receiver>
    </application>

</manifest>


Ресивер:
public class BootService extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        Toast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show();

    }
}
  • Вопрос задан
  • 1217 просмотров
Пригласить эксперта
Ответы на вопрос 1
Причин может быть несколько.

Во-первых, убедитесь, что всё именно так, как вы думаете. Попробуйте запускать Activity вместо Toast.

Во-вторых, добавьте в receiver это:

<action android:name="android.intent.action.QUICKBOOT_POWERON" />

а в манифест это:

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

и проверьте, чтобы было так:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="internalOnly"
    ... >

Приложение должно быть запущено хотя бы один раз. Для этого добавьте в проект хотя бы одну Activity.

И можно проверить настройки безопасности системы или сторонних приложений, обеспечивающих безопасность.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы