Java 如何在android中设置带有通知的警报调度?

Java 如何在android中设置带有通知的警报调度?,java,android,notifications,sharedpreferences,alarmmanager,Java,Android,Notifications,Sharedpreferences,Alarmmanager,我的代码有问题。我首先创建一个带有通知的警报,然后设置以下时间的警报-上午6点、下午12点和下午6点。但是,当我运行应用程序时,警报始终处于打开状态,并且在上午6点、下午12点和下午6点不会继续。通知也不准时。我使用切换按钮 我的代码: AlarmFragmen.java` public class AlarmFragment extends Fragment { private static final String ARG_PARAM1 = "param1"; private static

我的代码有问题。我首先创建一个带有通知的警报,然后设置以下时间的警报-上午6点、下午12点和下午6点。但是,当我运行应用程序时,警报始终处于打开状态,并且在上午6点、下午12点和下午6点不会继续。通知也不准时。我使用切换按钮

我的代码:

AlarmFragmen.java`

public class AlarmFragment extends Fragment {
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";

private String mParam1;
private String mParam2;
private PendingIntent pendingIntent;
private TextView textViewEnamPagi, textViewDuabelas, textViewenamSore, textResult;
private ToggleButton toggleButtonEnamPagi, toggleButtonDuaBelas, toggleButtonEnamSore;

public AlarmFragment() {
}

public static AlarmFragment newInstance(String param1, String param2) {
    AlarmFragment fragment = new AlarmFragment();
    Bundle args = new Bundle();
    args.putString(ARG_PARAM1, param1);
    args.putString(ARG_PARAM2, param2);
    fragment.setArguments(args);
    return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (getArguments() != null) {
        mParam1 = getArguments().getString(ARG_PARAM1);
        mParam2 = getArguments().getString(ARG_PARAM2);
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_alarm, container, false);
    toggleButtonEnamPagi = (ToggleButton) v.findViewById(R.id.toggleButton);
    textViewEnamPagi = (TextView)   v.findViewById(R.id.textViewEnamPagi);
    textViewDuabelas = (TextView) v.findViewById(R.id.textView);
    textViewenamSore = (TextView) v.findViewById(R.id.textEnamSore);
    toggleButtonDuaBelas = (ToggleButton) v.findViewById(R.id.toggleButton2);
    toggleButtonEnamSore = (ToggleButton) v.findViewById(R.id.toggleEnamSore);

    textViewEnamPagi.setText("OFF Pukul 06.00 AM");
    textViewDuabelas.setText("OFF Pukul 12.00 PM");
    textViewenamSore.setText("OFF Pukul 18.00 PM");

    startSix();
    startDuaBelas();
    startEnamSore();


    toggleButtonEnamPagi.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(toggleButtonEnamPagi.isChecked()){
                textViewEnamPagi.setText("ON Pukul 06.00 AM");
                SharedPreferences preferences = getActivity().getPreferences(1);
                SharedPreferences.Editor edt = preferences.edit();
                edt.putBoolean("tgEnam", true);
                edt.commit();
            }else {
                textViewEnamPagi.setText("OFF Pukul 06.00 AM");
                SharedPreferences preferences = getActivity().getPreferences(1);
                SharedPreferences.Editor edt = preferences.edit();
                edt.putBoolean("tgEnam", false);
                edt.commit();
            }
        }
    });

    toggleButtonDuaBelas.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(toggleButtonDuaBelas.isChecked()){
                textViewDuabelas.setText("ON Pukul 12.00 PM");
                SharedPreferences preferences = getActivity().getPreferences(0);
                SharedPreferences.Editor edt = preferences.edit();
                edt.putBoolean("tgDuabelas", true);
                edt.commit();
            }else{
                textViewDuabelas.setText("OFF Pukul 12.00 PM");
                SharedPreferences preferences = getActivity().getPreferences(0);
                SharedPreferences.Editor edt = preferences.edit();
                edt.putBoolean("tgDuabelas", false);
                edt.commit();
            }
        }
    });

    toggleButtonEnamSore.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(toggleButtonEnamSore.isChecked()){
                SharedPreferences preferences = getActivity().getPreferences(0);
                SharedPreferences.Editor edt = preferences.edit();
                edt.putBoolean("tgEnamsore", true);
                edt.commit();
            }else{
                SharedPreferences preferences = getActivity().getPreferences(0);
                SharedPreferences.Editor edt = preferences.edit();
                edt.putBoolean("tgEnamsore", false);
                edt.commit();
            }
        }
    });


return v;
}

public void startSix(){
    SharedPreferences preferences = getActivity().getPreferences(Context.MODE_PRIVATE);
    boolean tgenam = preferences.getBoolean("tgEnam", true);
    if(tgenam == true){
        textViewEnamPagi.setText("ON Pukul 06.00 AM");
        toggleButtonEnamPagi.setChecked(true);
        Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.set(Calendar.HOUR_OF_DAY, 6);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);
            Date date = calendar.getTime();

            Intent myIntent = new Intent(getActivity().getApplication(), MyReceiver.class);
            pendingIntent = PendingIntent.getBroadcast(getActivity().getApplication(), 0, myIntent, 0);

            AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
            alarmManager.set(AlarmManager.RTC_WAKEUP, date.getTime(), pendingIntent);
       }

}
public  void startDuaBelas() {
    SharedPreferences preferences = getActivity().getPreferences(Context.MODE_PRIVATE);
    boolean tgduabelas = preferences.getBoolean("tgDuabelas", true);
    if (tgduabelas == true) {
        textViewDuabelas.setText("ON Pukul 12.00 PM");
        toggleButtonDuaBelas.setChecked(true);

        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY, 12);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        Date date = calendar.getTime();

        Intent myIntent = new Intent(getActivity().getApplication(), MyReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(getActivity().getApplication(), 1, myIntent, 0);

        AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, date.getTime(), pendingIntent);
         }

}


public  void startEnamSore() {
    SharedPreferences preferences = getActivity().getPreferences(Context.MODE_PRIVATE);
    boolean tgenamsore = preferences.getBoolean("tgEnamsore", true);
    if (tgenamsore == true) {
        textViewenamSore.setText("ON Pukul 18.00 PM");
        toggleButtonEnamSore.setChecked(true);

        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 18);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        Date date = calendar.getTime();

        Intent myIntent = new Intent(getActivity().getApplication(), MyReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(getActivity().getApplication(), 2, myIntent, 0);

        AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, date.getTime(), pendingIntent);
        }


}
和MyReceiver.java

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

        Intent service1 = new Intent(context, AlarmFragment.class);
        service1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startService(service1);

        Intent myIntent = new Intent(context, MyAlarmService.class);
        context.startService(myIntent);

}
AlarmService.java

public class MyAlarmService extends Service{
NotificationManager manager;
Notification myNotication;
private NotificationManager mManager;

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}
@Override
public void onCreate()
{
    // TODO Auto-generated method stub
    super.onCreate();
}

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@SuppressWarnings("static-access")
@Override
public void onStart(Intent intent, int startId)
{
    super.onStart(intent, startId);
    manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    mManager = (NotificationManager) this.getApplicationContext().getSystemService(this.getApplicationContext().NOTIFICATION_SERVICE);
    Intent intent1 = new Intent(this.getApplicationContext(),MainActivity.class);

    PendingIntent pendingIntent = PendingIntent.getActivity( this.getApplicationContext(),0, intent1,PendingIntent.FLAG_CANCEL_CURRENT);

    Notification.Builder builder = new Notification.Builder(MyAlarmService.this);

    builder.getNotification().flags = Notification.FLAG_AUTO_CANCEL;
    builder.setAutoCancel(true);
    builder.setTicker("this is ticker text");
    builder.setContentTitle("Alarm ON");
    builder.setContentText("Wake UP");
    builder.setSmallIcon(R.drawable.image);
    builder.setContentIntent(pendingIntent);
    //builder.setOngoing(true);
    builder.setSubText("Time to code");   //API level 16
    builder.setNumber(1);
    builder.build();
    builder.setVibrate(new long[]{1000,1000,1000,1000,1000});
    Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.song);
    builder.setSound(uri);

    myNotication = builder.getNotification();

    manager.notify(0, myNotication);
}

@Override
public void onDestroy()
{
    // TODO Auto-generated method stub
    super.onDestroy();
}
}


请帮我解决我的问题,thx

是否设置为不推荐?试着用setExact。我不知道,你喜欢我的吗@Goneupis没有被弃用吗?试着用setExact。我不知道,你喜欢我的吗@戈内普