2016-11-30 5 views
1

Я сделал уведомления с некоторым руководством по Youtube. Я думал, что все работает, потому что я видел уведомления. Проблема в том, что я жду уведомления в следующий день. Это не работает. Это не видно.Ежедневные локальные уведомления появляются только один раз - Android

Вот код с час и т.д.:

button1 = (Button)dialog.findViewById(R.id.btnRegister); 

    button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Calendar calendar = Calendar.getInstance(); 

      calendar.set(Calendar.HOUR_OF_DAY, 20); 
      calendar.set(Calendar.MINUTE, 30); 
      calendar.set(Calendar.SECOND, 30); 

      Intent intent = new Intent(getApplicationContext(), Notification_receiver.class); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
      AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 

О, он начинает работать OnClick кнопки Wiith на мой пользовательский диалог, который только с появляться первого запуска приложения. Пожалуйста, помогите мне, ребята!

EDIT

NotificationReceiver Java:

package com.justfashion; 

import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.Color; 
import android.media.RingtoneManager; 
import android.net.Uri; 
import android.support.v4.app.NotificationBuilderWithBuilderAccessor; 
import android.support.v4.app.NotificationCompat; 

/** 
* Created by otsma on 24.11.2016. 
*/ 
public class Notification_receiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 

     Intent repeating_intent = new Intent(context,ActivitySplashScreen.class); 
     repeating_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

     PendingIntent pendingIntent = PendingIntent.getActivity(context,100,repeating_intent,PendingIntent.FLAG_UPDATE_CURRENT); 

     NotificationCompat.Builder builder = new NotificationCompat.Builder(context) 
       .setContentIntent(pendingIntent) 
       .setSmallIcon(android.R.drawable.arrow_up_float) 
       .setContentTitle("Hey You!") 
       .setSound(Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.sound)) 
       .setContentText("Collect today's diamonds!") 
       .setAutoCancel(true); 

     notificationManager.notify(100,builder.build()); 


    } 





} 

ответ

0

Если ваше приложение перезагрузится в течение этого периода, то будильник отменит. Также нет уведомления в другой день. Используйте широковещательный приемник, чтобы обойти это. И, пожалуйста, не используйте сервис, чтобы показывать только уведомление. Ваш подход верно.

enter code here 

    public class BootReceiver extends BroadcastReceiver { 



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



     Log.e("BootReceiver","BootReceiver"); 

     if  (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { 
      // Set the alarm here. 



    } 

    } 



} 

    <receiver android:name=".alarmManager.BootReceiver" 
      android:enabled="true"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED"></action> 
      </intent-filter> 
     </receiver> 

использование разрешение:

+0

добавил код моего приемника –

+0

Добавить дополнительный приемник: BootReceiver слушать загрузку и расписание Тревога оттуда тоже. – ak0692

+0

Я добавил код! – ak0692

0

Возможные проблемы с сигнализацией у вас есть установка попробовать это

alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 
    AlarmManager.INTERVAL_DAY, alarmIntent); 

Как уже упоминалось here и here.

0

Реализуйте это во всплеске или главном экране Этот метод устанавливает будильник для определенного времени суток.

public void startWeatherAlert() { 
     Calendar updateTime = Calendar.getInstance(); 
     updateTime.setTimeZone(TimeZone.getTimeZone("IST")); 
     updateTime.set(Calendar.HOUR_OF_DAY, 8);//set hour of day when you want to trigger 
     updateTime.set(Calendar.MINUTE, 15);//set minute of day 

     Intent intent = new Intent(this, YourReceiverNameHere.class);//Broadcast receiver here 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 234324243, intent, 0); 
     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
     alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, updateTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);//INTERVAL_DAY means that it will trigger only once in a day. 
    } 

Теперь установка для радиовещательного приемника

public class YourReceiverNameHere extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      //your logic here 
      //this can be used to invoke service, launch activity or to generate notification 
     } 
    } 

и, наконец, зарегистрировать этот вещательный приемник в menifest

<service android:name=".YourReceiverNameHere" /> 
+0

не работает помощник –

 Смежные вопросы

  • Нет связанных вопросов^_^