Я пытаюсь создать более сложное приложение, но не смог правильно использовать AlarmManager для открытия действия.Я попытался переписать код, чтобы понять суть того, что мне не хватает, но он все еще не работает правильно.
Приложение в основном просто принимает ввод минут и часов вместе с кнопкой запуска, ипредполагается открыть второе действие, когда время введено.Однако второе действие никогда не открывается, когда я вхожу, и кажется, что ничего в LogCat не меняется.Вот мой текущий код:
МАНИФЕСТ:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.goali.adalarm">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".AlarmReceiver2" >
<intent-filter>
<action android:name="android.intent.alarmclock.ALARM_ALERT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity android:name=".AlarmReceiver">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
MainActivity:
public class MainActivity extends AppCompatActivity {
Calendar c;
PendingIntent pendingIntent;
AlarmManager alarmManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
c = Calendar.getInstance();
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
final EditText hour = (EditText) findViewById(R.id.hour);
final EditText minute = (EditText) findViewById(R.id.minute);
Button button = (Button) findViewById(R.id.press);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
c.set(Calendar.HOUR_OF_DAY, (Integer.parseInt(hour.getText().toString())));
c.set(Calendar.MINUTE, Integer.parseInt(minute.getText().toString()));
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);
}
Toast.makeText(MainActivity.this, "Alarm Set.", LENGTH_LONG).show();
}
});
}
}
2-йактивность:
public class AlarmReceiver extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alarm_receiver);
}
}
BroadcastReceiver:
public class AlarmReceiver2 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent intent2 = new Intent(context, AlarmReceiver.class);
Toast.makeText(context, "Alarm worked.", Toast.LENGTH_LONG).show();
context.startActivity(intent2);
}
}