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

Android layout 在android中实现日历通知的问题,android-layout,android-intent,android-activity,android-fragments,android-calendar,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

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);

         }

        }

您如何在清单中声明您的AlarmManager

当我查看代码时,我找不到任何bug,所以让我们在manifest.xml中尝试一下

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

这可能会有帮助

您是否也查看了在AlarmReceiver.class intent上添加intent.setData?@David Olsson是的,我尝试了链接中给出的任何内容。但是它不起作用。我有相同的代码,并且有两个小改动。首先,我使用getApplicationContext而不是getBaseContext Second作为PendingEvent PendingEvent=PendingEvent.getBroadcastgetBaseContext的最后一个参数,RQS_1,intent,0;我使用了pendingent.FLAG\u UPDATE\u current我在这一行中得到错误pendingent.FLAG\u UPDATE\u CURRENTIntent intent=new intentGetApplication上下文,AlarmReceiver.class;int pendingIntent=pendingIntent.FLAG_UPDATE_CURRENT;AlarmManager AlarmManager=AlarmManagergetSystemServiceContext.ALARM\u服务;alarmManager.setAlarmManager.RTC_唤醒,targetCal.getTimeInMillis,PendingContent;这就是我所做的…但我在这方面有错误,比如把PendingEvent改为键入PendingEvent。当我这样做的时候,它不接受不,不是这样!我的意思是试试这个:pendingent pendingent=pendingent.getbroadcastinggetbasecontext,RQS_1,intent,pendingent.FLAG_UPDATE_CURRENT;
        <receiver 
        android:name="your.package.AlarmReceiver"/>