Java 带有通知的警报,通知不会弹出

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

所以我不知道为什么这个代码不起作用。我想发出一个每天响一次的“警报”通知。我只是想说我是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

我的代码:

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
中。