【问题标题】:BroadcastReceiver not working with alarm manager广播接收器不与警报管理器一起使用
【发布时间】:2014-03-01 04:07:17
【问题描述】:

伙计们,我认为这个问题是不言自明的。 我尝试了谷歌搜索,并遇到了各种解决方案,但都没有奏效..

这对我有用。 如果我没有设置广播接收器,则警报管理器可以工作,但如果我设置了广播接收器,它就不起作用。 我以前使用过广播接收器。

我知道这里有两种设置广播的方法

Android alarm not working

我都试过了……

如果有人想要代码,我可以在这里发布

public class Reminder extends Activity{
    DatePicker dp;int month;
    TimePicker tp;int year;long millisecond;
    Button ok;String data2;int hour;int datee;int minutes;
    BroadcastReceiver alarmReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "Alarm worked", Toast.LENGTH_LONG).show();          
        }
    };


    public static final String ACTION_NAME = "com.helloworld.MYACTION";
    private IntentFilter myFilter = new IntentFilter(ACTION_NAME);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.reminder);
        Intent in = getIntent();
         registerReceiver(alarmReceiver, myFilter);

        dp = (DatePicker) findViewById(R.id.datePicker1);
        tp = (TimePicker) findViewById(R.id.timePicker1);
        ok = (Button) findViewById(R.id.ok);
        ok.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                  year = dp.getYear();
                  datee = dp.getDayOfMonth();
                  month = dp.getMonth();
                  hour = tp.getCurrentHour();
                  minutes = tp.getCurrentMinute();// day//mm//yy//min//hr
            conversion_shit();
            }});        
}

    protected void conversion_shit() {
        int xhour;
        String xx;
        if(hour > 12)
        {
          xhour=     (hour)-12;
          xx="AM";

        }   
        else
        {  xx="PM";  xhour=(hour);
        }
        int monthint=(month);

        String date= String.valueOf(datee)+"/"+monthint+"/"+String.valueOf(year)+ " " +String.valueOf(xhour)+":"+String.valueOf(minutes)+":00 " + xx ;

        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss aa");
        Date convertedDate = new Date();

            try {
                convertedDate = dateFormat.parse(date);
                  millisecond = convertedDate.getTime();

            } catch (java.text.ParseException e) {
                // TODO Auto-generated catch block

                e.printStackTrace();
            }
            Log.i(String.valueOf(millisecond),convertedDate.toString());

             Intent myIntent = new Intent(ACTION_NAME);
             PendingIntent   pendingIntent = PendingIntent.getService(Reminder.this, 0, myIntent, 0);

                        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

                        Calendar calendar = Calendar.getInstance();
                        calendar.setTimeInMillis(System.currentTimeMillis());
                        calendar.add(Calendar.SECOND, 10);
                        alarmManager.set(AlarmManager.RTC_WAKEUP, millisecond, pendingIntent);

                        Toast.makeText(Reminder.this, "Start Alarm", Toast.LENGTH_LONG).show();


    }








    }

【问题讨论】:

  • 没有足够的信息来诊断。你只是说它似乎是not working,不知道为什么。
  • @njzk2 你想要什么额外的信息?
  • 请把报警管理器的代码和BroadcastReceiver贴出来
  • 让我们看看,嗯,代码不起作用。任何类型的日志都会很好,例如,描述您当前的调试工作? (不过,我不会称之为extra
  • @AbdEl-RahmanEl-Tamawy 警报管理器在没有广播接收器的情况下工作正常,我还应该发布它的代码吗?

标签: android broadcastreceiver


【解决方案1】:

PendingIntent.getService 用于服务,顾名思义。

对于BroadcastReceiver,使用PendingIntent.getBroadcast

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多