Java 带有通知的警报,通知不会弹出
所以我不知道为什么这个代码不起作用。我想发出一个每天响一次的“警报”通知。我只是想说我是android新手。将代码更改了几次,但仍然不起作用 报警方法也执行通知,但我得到了:-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 我的代码:Java 带有通知的警报,通知不会弹出,java,android,android-intent,notifications,Java,Android,Android Intent,Notifications,所以我不知道为什么这个代码不起作用。我想发出一个每天响一次的“警报”通知。我只是想说我是android新手。将代码更改了几次,但仍然不起作用 报警方法也执行通知,但我得到了:-248/?D/PowerManagerService﹕ releaseWakeLock flags=0x1标记=AlarmManager带活动管理器﹕ 无法启动服务意图{flg=0x4 cmp=com.example.polakken.test/.lol(有附加项)}:找不到06-13 00:00:00.825 231-2
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
int i = preferences.getInt("numberoflaunches", 1);
if (i < 2) {
alarmMethod();
i++;
editor.putInt("numberoflaunches", i);
editor.commit();
}
if (savedInstanceState == null) {
splashMethod();
}
}
//...
private void alarmMethod() {
Intent intentbro = new Intent(this, lol.class);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, intentbro, 0);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.AM_PM, Calendar.AM);
calendar.add(Calendar.DAY_OF_MONTH, 1);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 60 * 24, pendingIntent);
Toast.makeText(MainActivity.this, "start alarm", Toast.LENGTH_LONG).show();
}
//notification class
public class lol extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
NotificationCompat.Builder b = new NotificationCompat.Builder(this);
Intent intent1 = new Intent(this.getApplicationContext(), MainActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 1, intent1, 0);
b.setContentText("lol");
b.setContentTitle("Default notification");
b.setSmallIcon(R.drawable.iconography_small_size);
b.setContentIntent(pIntent);
NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(1, b.build());
}
}
公共类MainActivity扩展了ActionBarActivity{
@凌驾
创建时受保护的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());
}
}
您正在使用pendingent.getService()
创建pendingent
,但您正在使用活动提供意图
因此,为了使代码正常工作,您需要使用。
(此外,您必须添加相应的,而不是getActivity()
,请按照以下步骤操作
1创建活动并将此代码添加到setAlarm(可以是任何名称)
假设您想将闹钟设置为15年2月24日下午14:00
@SuppressLint("UseSparseArrays")
public void setAlarms(Long id,String event_date,String event_time,Context context)
{
Calendar cal=Calendar.getInstance();
String[] parts=event_date.split("/");
String Event_date=parts[0];
String Event_month=parts[1];
String Event_Year=parts[2];
String[] parts1=event_time.split(":");
String Event_HOD=parts1[0];
String Event_MIN=parts1[1];
cal.add(Calendar.YEAR, Integer.parseInt(Event_Year)-cal.get(Calendar.YEAR));
cal.add(Calendar.MONTH, (Integer.parseInt(Event_month)-1)-cal.get(Calendar.MONTH));
cal.add(Calendar.DAY_OF_MONTH, Integer.parseInt(Event_date)-cal.get(Calendar.DAY_OF_MONTH));
cal.add(Calendar.HOUR_OF_DAY, Integer.parseInt(Event_HOD)-cal.get(Calendar.HOUR_OF_DAY));
cal.add(Calendar.MINUTE, Integer.parseInt(Event_MIN)-cal.get(Calendar.MINUTE));
cal.add(Calendar.SECOND, 0);
AlarmManager am =(AlarmManager)context.getSystemService(Activity.ALARM_SERVICE);
//Your BroadcastReceiver which will receive Alarm
Intent intent = new Intent(context, AlarmReceiver.class);
//you can use PutExtra() to send additional parameter with Intent
//PendingIntent to add
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
(int)(long)id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
pendingIntent);
Toast.makeText(context, "alarm Set for Know", Toast.LENGTH_LONG).show();
}
2) 内部BroadcastReceive()方法
}
3) 在Manifest.xml中声明两个权限
<uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.VIBRATE"/>
<receiver android:name=".extra.AlarmReceiver" android:label="@string/title_activity_alarm_receiver" android:exported="true"> </receiver>
4) 在Manifest.xml中声明AlarmReceiver
<uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.VIBRATE"/>
<receiver android:name=".extra.AlarmReceiver" android:label="@string/title_activity_alarm_receiver" android:exported="true"> </receiver>
遵循这些文件
希望这将对您有所帮助您能将您的AndroidManifest.xml
?@ianhanniballake活动“lol”添加到清单中。我明白了,谢谢。然而,我不完全理解你对收信人的意思。如果你有空闲时间,你能给我举个例子吗?@DavidMinesote看看(look for Scheduler.zip)中的例子,特别是SampleAlarmReceiver
类。通常,您需要实现BroadcastReceiver
,并将BroadcastReceiver
添加到AndroidManifest.xml
中。