每天通知在特定时间不通知

时间:2016-05-02 11:30:00

标签: java android

我想每天上午8:00生成通知。我已经创建了简单通知的代码,但我没有得到以下通知是NotifyService类的代码

    public class NotifyService extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    /*Notification Related*/
        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(this)
                        .setSmallIcon(R.drawable.notification_icon)
                        .setContentTitle("Thought")
                        .setContentText("Get Today's Thought");
        Intent resultIntent = new Intent(this, MainActivity.class);
        PendingIntent resultPendingIntent =
                PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        mBuilder.setContentIntent(resultPendingIntent);
        //mBuilder.setAutoCancel(true);

        // Sets an ID for the notification
        int mNotificationId = 001;
        // Gets an instance of the NotificationManager service
        NotificationManager mNotifyMgr =
                (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        // Builds the notification and issues it.
        mNotifyMgr.notify(mNotificationId, mBuilder.build());
    }
}

这是使用MainActivity类onCreate方法

编写的代码
PendingIntent pendingIntent;
    Intent myIntent = new Intent(this , NotifyService.class);
    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
    pendingIntent = PendingIntent.getService(this, 0, myIntent, 0);
    Calendar calendar1 = Calendar.getInstance();
    calendar1.set(Calendar.HOUR_OF_DAY,8);
    calendar1.set(Calendar.MINUTE,00);
    calendar1.set(Calendar.SECOND,00);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, pendingIntent);

不知道我哪里出错了

3 个答案:

答案 0 :(得分:0)

MainActivity

public class MainActivity extends AppCompatActivity {

AlarmManager alarmManager;
PendingIntent pendingIntent;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

    Button setAlarm= (Button)findViewById(R.id.button);

    setAlarm.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.HOUR_OF_DAY, 8);
            calendar.set(Calendar.MINUTE, 00);

            Intent myIntent = new Intent(MainActivity.this, AlarmReceiver.class);
            pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 10, myIntent, 0);

            alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);

        }
    });

 }
 }

AlarmReceiver

public class AlarmReceiver extends WakefulBroadcastReceiver {

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

    Intent startIntent = new Intent(context, NotificationService.class);
    context.startService(startIntent);

    Log.e("TRIGGER", "ALARM TRIGGERED");

 }
 }

NotificationService

public class NotificationService extends Service {

@Override
public IBinder onBind(Intent arg0)
{
    // TODO Auto-generated method stub
    return null;
}

@Override
public void onCreate()
{
    // TODO Auto-generated method stub
    super.onCreate();
}

@Override
public void onStart(Intent intent, int startId)
{
    super.onStart(intent, startId);

    Intent inn=new Intent(getApplicationContext(),MainActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0,
            inn, 0);

    NotificationCompat.Builder mBuilder =
            (NotificationCompat.Builder) new NotificationCompat.Builder(getApplicationContext())
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle("Test Message")
                    .setContentText("Hi, you have one notification");
    mBuilder.setContentIntent(contentIntent);
    mBuilder.setDefaults(Notification.DEFAULT_SOUND);
    mBuilder.setAutoCancel(true);
    NotificationManager mNotificationManager =
            (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(1, mBuilder.build());
}

@Override
public void onDestroy()
{
    // TODO Auto-generated method stub
    super.onDestroy();
 }

}

在AndroidManifest文件中添加此内容

    <receiver android:name=".AlarmReceiver"></receiver>
    <service android:name=".NotificationService"/>

答案 1 :(得分:0)

我认为你没有在这里创建过服务。 Notifyservice类扩展了AppCompatActivity。您应该扩展Service类以使其成为服务。

答案 2 :(得分:0)

可以通过以下步骤找到解决问题的最佳方案

  1. 创建警报通知服务

  2. 创建一个接收器以启动警报通知服务

  3. 将接收者和服务添加到manifest.xml中

  4. 按照给定网址的步骤操作。

    http://karanbalkar.com/2013/07/tutorial-41-using-alarmmanager-and-broadcastreceiver-in-android/

相关问题