在android中实现日历通知的问题

时间:2014-08-07 08:09:32

标签: android-layout android-intent android-activity android-fragments android-calendar

HIII

我是android的新手。我创建了一个日历,我可以设置闹钟。 但问题是我无法收到任何消息,即如果我设置了下午2点30分的警报,则会收到一条消息,表示已收到警报。我没有收到此消息..请建议..

请帮忙 这是代码......

alarm.java

package com.example.notificationalarm;

import java.util.Calendar;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;

public class Alarm extends ActionBarActivity 
{
    TimePicker myTimePicker;
     Button buttonstartSetDialog;
     TextView textAlarmPrompt;


     TimePickerDialog timePickerDialog;

     final static int RQS_1 = 1;

        /** Called when the activity is first created. */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.alarm);
        textAlarmPrompt=(TextView)findViewById(R.id.alarm);
         buttonstartSetDialog = (Button)findViewById(R.id.startSetDialog);
         buttonstartSetDialog.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) 
            {
                   textAlarmPrompt.setText("");
                    openTimePickerDialog(false);

            }
        });

    }

    private void openTimePickerDialog(boolean is24r){
          Calendar calendar = Calendar.getInstance();

          timePickerDialog = new TimePickerDialog(
                  Alarm.this, 
            onTimeSetListener, 
            calendar.get(Calendar.HOUR_OF_DAY), 
            calendar.get(Calendar.MINUTE), 
            is24r);
          timePickerDialog.setTitle("Set Alarm Time");  

          timePickerDialog.show();

         }

            OnTimeSetListener onTimeSetListener= new OnTimeSetListener(){

          @Override
          public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

           Calendar calNow = Calendar.getInstance();
           Calendar calSet = (Calendar) calNow.clone();

           calSet.set(Calendar.HOUR_OF_DAY, hourOfDay);
           calSet.set(Calendar.MINUTE, minute);
           calSet.set(Calendar.SECOND, 0);
           calSet.set(Calendar.MILLISECOND, 0);

           if(calSet.compareTo(calNow) <= 0){
            //Today Set time passed, count to tomorrow
            calSet.add(Calendar.DATE, 1);
           }

           setAlarm(calSet);
          }};

         private void setAlarm(Calendar targetCal){

          textAlarmPrompt.setText(
            "\n\n***\n"
            + "Alarm is set@ " + targetCal.getTime() + "\n"
            + "***\n");

          Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
          PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
          AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
          alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);

         }

        }

AlarmReceiver .java

public class AlarmReceiver extends BroadcastReceiver
{

    @Override
    public void onReceive(Context arg0, Intent arg1) 
    {
        Toast.makeText(arg0, "Alarm received!", Toast.LENGTH_LONG).show();

    }

}

1 个答案:

答案 0 :(得分:0)

你是如何在Manifest中声明你的AlarmManager的?

当我查看代码时,我找不到任何错误,所以让我们在manifest.xml中尝试这个

        <receiver 
        android:name="your.package.AlarmReceiver"/>

这可能会有所帮助