Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 代码不工作。应该每天发出一次的通知_Java_Android_Xml - Fatal编程技术网

Java 代码不工作。应该每天发出一次的通知

Java 代码不工作。应该每天发出一次的通知,java,android,xml,Java,Android,Xml,所以我不知道为什么这个代码不起作用。我想发出一个每天响一次的“警报”通知。我只是想说我是安卓新手。谢谢 编辑:对代码进行了一点修改。报警方法执行,通知也执行,但我收到以下错误消息: -248/?D/PowerManagerService﹕ releaseWakeLock flags=0x1标记=AlarmManager带活动管理器﹕ 无法启动服务意图{flg=0x4 cmp=com.example.polakken.test/.lol(有附加项)}:找不到06-13 00:00:00.825 2

所以我不知道为什么这个代码不起作用。我想发出一个每天响一次的“警报”通知。我只是想说我是安卓新手。谢谢

编辑:对代码进行了一点修改。报警方法执行,通知也执行,但我收到以下错误消息:

-248/?D/PowerManagerService﹕ releaseWakeLock flags=0x1标记=AlarmManager带活动管理器﹕ 无法启动服务意图{flg=0x4 cmp=com.example.polakken.test/.lol(有附加项)}:找不到06-13 00:00:00.825 231-267/?D/PowerManagerService﹕ acquireWakeLock flags=0x1标记=AlarmManager 06-13 00:00:00.825 231-248/?D/PowerManagerService﹕ releaseWakeLock标志=0x1标记=AlarmManager-

@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedReferences preferences=PreferenceManager.GetDefaultSharedReferences(此);
SharedReferences.Editor=首选项.edit();
inti=preferences.getInt(“numberoflaunches”,1);
如果(i<2){
报警方法();
i++;
编辑:putInt(“NumberOfLaunchs”,i);
commit();
}
如果(savedInstanceState==null){
方法();
}
}
//...
私有方法(){
Intent intentbro=新的Intent(this,lol.class);
AlarmManager AlarmManager=(AlarmManager)getSystemService(报警服务);
pendingent pendingent=pendingent.getService(this,0,intentbro,0);
日历=Calendar.getInstance();
calendar.set(calendar.SECOND,0);
calendar.set(calendar.MINUTE,0);
日历.set(calendar.HOUR,0);
日历.set(calendar.AM\u PM,calendar.AM);
calendar.add(calendar.DAY/u/u月,1);
alarmManager.setRepeating(alarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),1000*60*60*24,PendingContent);
Toast.makeText(MainActivity.this,“开始报警”,Toast.LENGTH_LONG.show();
}
//通知类
公共类lol扩展了活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
NotificationCompat.Builder b=新的NotificationCompat.Builder(此);
Intent intent1=新的Intent(this.getApplicationContext(),MainActivity.class);
pendingent pIntent=pendingent.getActivity(this,1,intent1,0);
b、 setContentText(“lol”);
b、 setContentTitle(“默认通知”);
b、 setSmallIcon(R.可绘制。图像尺寸小);
b、 setContentIntent(pIntent);
NotificationManager NotificationManager=(NotificationManager)this.getSystemService(Context.NOTIFICATION\u服务);
notificationManager.notify(1,b.build());
}
}

您要在闹钟上多加一天。应该是这样的:

...
Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR_OF_DAY, 1);
        calendar.set(Calendar.AM_PM, Calendar.AM);

        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
...
<service android:name=".Lol" />

您正在调用
pendingent pendingent=pendingent.getService(this,0,intentbro,0)

但是,您需要在AndroidManifest中声明此服务,如下所示:

...
Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR_OF_DAY, 1);
        calendar.set(Calendar.AM_PM, Calendar.AM);

        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
...
<service android:name=".Lol" />

我建议您对代码运行静态分析,看看如何改进它

你到底在干什么?你有错误吗?如果是这样,就把它们贴出来。@JNYRanger的问题是没有错误。应用程序运行正常,但无法在代码中列出的时间显示通知。您应该使用即将到来的日历时间进行测试,并在代码中设置断点。查看断点是否执行,并告诉我们代码的哪部分没有按预期工作。@IgorGanapolsky添加了日志。每次都执行。07-30 13:14:26.560 9649-9649/com.example.polakken.test I/tester﹕ 07-30 13:14:26.560 9649-9649/com.example.polakken.test I/tester上的报警﹕ 在创建工作时,是否在alarmMethod()中放置断点?你知道它是否执行了吗?上面的代码将在凌晨1点发出通知。要到凌晨1点才会响!另外,我假设您的广播接收器设置正确。请参阅本教程,特别是BorodCastereceiver部分。我将时钟改为凌晨1点,12:59仍然无法运行,那么您为什么要使用
alarmManager.setRepeating()
函数?我认为您的问题在于您的BREADCastrecision从未设置为接收警报。看看上面的教程-它会让你知道如何设置它,无论它是否重复出现。您需要一个BroadcastReceiver来实际接收警报,然后在那时构建并显示通知。祝你好运