У меня есть приложение тревоги, где я хочу, чтобы int
был передан получателю тревоги с intent
, но по некоторым причинам класс AlarmReceiver не получает intent
. int
вводится с помощью EditText
здесь переменные были созданы в MainActivity
private int intToPass;
public static final String MyPREFERENCES = "MyPrefs";
private static long intervall = 500;
private String myEnteredText;
private AlarmManager am;
private Intent intent;
private PendingIntent pendingIntent;
здесь код для кнопки аварийной установки в MainActivity
:
mStartBtn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
//Variables
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
long time;
intent = new Intent(MainActivity.this, AlarmReceiverActivity.class);
pendingIntent = PendingIntent.getActivity(MainActivity.this, 2, intent, PendingIntent.FLAG_CANCEL_CURRENT);
am = (AlarmManager) getSystemService(ALARM_SERVICE);
//Save
SharedPreferences prefs = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
myEnteredText = scoreEnter.getText().toString();
SharedPreferences.Editor editor = prefs.edit();
editor.putString("sharedPrefKey", myEnteredText);
editor.apply();
if (((ToggleButton) view).isChecked()) {
try {
intToPass = Integer.parseInt(scoreEnter.getText().toString());
//Calendar
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, timePicker1.getCurrentHour());
calendar.set(Calendar.MINUTE, timePicker1.getCurrentMinute());
//Extra
intent.putExtra("Test", intToPass);
//hour format
time = (calendar.getTimeInMillis() - (calendar.getTimeInMillis() % 60000));
if (System.currentTimeMillis() > time) {
if (calendar.AM_PM == 0)
time = time + (1000 * 60 * 60 * 12);
else
time = time + (1000 * 60 * 60 * 24);
}
//Set alarm
am.setRepeating(AlarmManager.RTC_WAKEUP, time, intervall, pendingIntent);
if (mToast != null) {
mToast.cancel();
}
mToast = Toast.makeText(getApplicationContext(), "Alarm Set", Toast.LENGTH_LONG);
mToast.show();
} catch (NumberFormatException nfe) {
mToast = Toast.makeText(MainActivity.this, "Enter number", Toast.LENGTH_LONG);
mToast.show();
((ToggleButton) view).setChecked(false);
}
} else {
if (am!=null){
repam.cancel(pendingIntent);
Toast.makeText(MainActivity.this, "ALARM OFF", Toast.LENGTH_SHORT).show();
}
}
}
});
Это AlarmReceiver
класс
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakelock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "wecker:myWakeLog");
mWakelock.acquire();
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Intent intent = getIntent();
intToReceive = intent.getIntExtra("Test", 30);
setContentView(alarmView);
}
Спасибо за помощь.