【问题标题】:alarm manager android not working报警管理器android不工作
【发布时间】:2015-09-20 14:15:12
【问题描述】:

报警管理器无论如何都不起作用。

这是我的主要活动,它调用函数来设置点击警报。 未显示额外代码。

    public void setAlarm() {
        Log.i("alarm", "Here");
        Long alertTimep = new GregorianCalendar().getTimeInMillis() + 5;
        Intent intent = new Intent(this, AlertReciever.class);
        AlarmManager alarmManager = (AlarmManager)
getSystemService(ALARM_SERVICE);
        PendingIntent pi = PendingIntent.getBroadcast(this,1,intent,PendingIntent.FLAG_UPDATE_CURRENT);
        alarmManager.set(AlarmManager.RTC_WAKEUP, alertTimep, pi);
    }

这是我的 AlertReciever 课程。

    public class AlertReciever extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        showNotification(context);
        Log.i("alarm", "Here1");
    }

    public void showNotification(Context context) {
        Log.i("alarm", "Here2");
        Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        PendingIntent pIntent = PendingIntent.getActivity(context, 0, new Intent(context, NotificationReceiver.class), 0);

        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
                .setContentTitle("Hello")
                .setContentText("How are You")
                .setSmallIcon(R.drawable.ic_menu)
                        //.setContentIntent(pIntent)
                        //.addAction(R.drawable.ic_edit, "View", pIntent)
                .setSound(soundUri)
                        //.addAction(0, "Remind", pIntent)
                .setAutoCancel(true);
        mBuilder.setContentIntent(pIntent);

        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(0, mBuilder.build());
    }

}

基本思想是安排在给定日期生成通知,出于测试目的,我现在选择了 5 秒/毫秒。

问题是警报接收器类没有被调用,应用程序也没有崩溃,所以我无法找出故障所在。我没有收到任何通知。

【问题讨论】:

    标签: android alarmmanager android-notifications android-alarms


    【解决方案1】:
    <receiver android:name="atsystems.cal.AlertReciever" />
    

    在添加一切正常后,我的清单文件中缺少该内容。 对于查看此代码的其他人,您还需要清单文件中的警报权限。

    <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
    

    【讨论】:

    • 您不需要权限即可。
    • 是的,只是在未经许可的情况下尝试过,它仍然有效,谢谢你的提示。网上所有的例子都提到了许可,但没有提到接收器部分,所以如果它在没有许可的情况下工作,那么到底是什么的权限?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多