微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在警报上创建AlertDialog

如何解决如何在警报上创建AlertDialog

(((我在SO或Internet上找不到此处描述的内容

我有一个TimePicker,选择了时间后,便会激活警报。 (假设现在是11:00,我在TimePicker中选择11.05,11:05,则触发警报。)

这部分代码运行正常。我从this link获取了警报代码

现在,我的问题:

当警报响起时(作为声音+吐司),我实际上想要一个声音+ AlertDialog。当我单击“确定”以关闭AlertDialog时,它将关闭AlertDialog并停止警报声音。

我尝试了几种解决方案,但没有成功:我知道如何正确地编写AlertDialog,但是我无法使用alarmManager.cancel(pendingIntent);将此代码部分正确地放置在当前代码中以在PositiveButton中取消警报AlertDialog。

有人知道在这里怎么做吗?

这是我的代码

以下内容添加到清单中的<Application>标记中:

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

这是我打电话的主要班级:

public class MyAlarm extends AppCompatActivity {
    TimePickerDialog picker2;
    EditText eText2;

    TimePicker alarmTimePicker;
    PendingIntent pendingIntent;
    AlarmManager alarmManager;
    Long time;

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

        alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

        eText2 = (EditText) findViewById(R.id.editText2);
        eText2.setInputType(InputType.TYPE_NULL);
        eText2.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final Calendar cldr = Calendar.getInstance();
                int hour = cldr.get(Calendar.HOUR_OF_DAY);
                int minutes = cldr.get(Calendar.MINUTE);
                picker2 = new TimePickerDialog(MyAlarm.this,new TimePickerDialog.OnTimeSetListener() {
                            @Override
                            public void onTimeSet(TimePicker tp,int sHour,int sMinute) {
                                String sTime = String.format("%02d",sHour) + "." + String.format("%02d",sMinute) + " Uhr";
                                eText2.setText(sTime);

                                //Alarm -----------------------------------------------------------------

                                Toast.makeText(MyAlarm.this,"ALARM ON",Toast.LENGTH_SHORT).show();
                                Calendar calendar = Calendar.getInstance();
                                calendar.set(Calendar.HOUR_OF_DAY,sHour);
                                calendar.set(Calendar.MINUTE,sMinute);
                                Intent intent = new Intent(MyAlarm.this,AlarmReceiver.class);
                                pendingIntent = PendingIntent.getbroadcast(MyAlarm.this,intent,0);

                                time = (calendar.getTimeInMillis() - (calendar.getTimeInMillis() % 60000));
                                if (System.currentTimeMillis() > time) {
                                    if (calendar.AM_PM == 0)
                                        time = time + (1000 * 60 * 60 * 12);
                                    else
                                        time = time + (1000 * 60 * 60 * 24);
                                }
                                alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,time,pendingIntent);


                            }
                        },hour,minutes,true);
                picker2.show();
            }
        });
   }

}

以及相应的接收器类:

public class AlarmReceiver extends broadcastReceiver {

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

        Uri alarmUri = ringtoneManager.getDefaultUri(ringtoneManager.TYPE_ALARM);
        if (alarmUri == null) {
            alarmUri = ringtoneManager.getDefaultUri(ringtoneManager.TYPE_NOTIFICATION);
        }
        ringtone ringtone = ringtoneManager.getringtone(context,alarmUri);
        ringtone.play();

    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。