2016-04-28 8 views
0

Я работаю над приложением, которое при срабатывании будильника будет делать что-то в фоновом режиме. пока это просто тост. При запуске я не получаю никаких ошибок, но когда звучит сигнал тревоги, широковещательный приемник не вызывается. Что мне не хватает?BroadcastReceiver не срабатывает при возникновении тревоги

AlarmReceiver:

public class AlarmReceiver extends BroadcastReceiver { 
     public static final String ALARM_ALERT_ACTION = "com.android.deskclock.ALARM_ALERT"; 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      { 
       Intent alarm = new Intent(ALARM_ALERT_ACTION); 
       // context.registerReceiver(this, alarm); 
       String action = intent.getAction(); 
       if (action.equals(ALARM_ALERT_ACTION)) 
       { 
        // for play/pause mediaplayer 
        CharSequence text = "Hello toast!"; 
        int duration = Toast.LENGTH_SHORT; 

        Toast toast = Toast.makeText(context, text, duration); 
        toast.show(); 
       } 
      } 
     } 
    } 

AndroidManifest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.noel.alarmnotification"> 
    <uses-permission android:name="com.android.alarm.permission."/> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <receiver android:name=".AlarmReceiver" android:process=":remote"> 
       <intent-filter> 
        <action android:name="com.android.deskclock.ALARM_ALERT"/> 
       </intent-filter> 
      </receiver> 
     </activity> 
    </application> 

</manifest> 

РЕДАКТИРОВАТЬ

MainActivity:

public class MainActivity extends AppCompatActivity { 
    public static final String ALARM_ALERT_ACTION = "com.android.deskclock.ALARM_ALERT"; 
    public static final String ALARM_SNOOZE_ACTION = "com.android.deskclock.ALARM_SNOOZE"; 
    public static final String ALARM_DISMISS_ACTION = "com.android.deskclock.ALARM_DISMISS"; 
    public static final String ALARM_DONE_ACTION = "com.android.deskclock.ALARM_DONE"; 


    private BroadcastReceiver mReceiver = new BroadcastReceiver() 
    { 
     @Override 
     public void onReceive(Context context, Intent intent) 
     { 
      String action = intent.getAction(); 
      if (action.equals(ALARM_ALERT_ACTION) || action.equals(ALARM_DISMISS_ACTION) || action.equals(ALARM_SNOOZE_ACTION) || action.equals(ALARM_DONE_ACTION)) 
      { 
       // for play/pause mediaplayer 

      } 
     } 
    }; 


    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     IntentFilter filter = new IntentFilter(ALARM_ALERT_ACTION); 
     filter.addAction(ALARM_DISMISS_ACTION); 
     filter.addAction(ALARM_SNOOZE_ACTION); 
     filter.addAction(ALARM_DONE_ACTION); 
     registerReceiver(mReceiver, filter); 
    } 
} 

Втч ен я создать регистр программно, когда приложение закрыто, оно не передает сигналы тревоги

+0

что вы имеете в виду *** когда звучит сигнал тревоги, приемник вещания не называется ***? Вы слышите сигнал тревоги, но методы внутри приемника не выполняются? – Opiatefuchs

+0

Да, это то, что происходит, я отлаживаю его, но программа никогда не достигает точки останова внутри широковещательной передачи – programernoob

+0

Я не совсем уверен в этом, но, я думаю, вам нужно разрешение ''. И если вы действуете на зефир, вам также нужен запрос на разрешение во время выполнения. – Opiatefuchs

ответ