|
|
@@ -24,11 +24,13 @@ import android.provider.Settings;
|
|
|
import android.util.Log;
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
+import androidx.activity.result.contract.ActivityResultContracts;
|
|
|
import androidx.annotation.NonNull;
|
|
|
import androidx.annotation.Nullable;
|
|
|
import androidx.core.app.ActivityCompat;
|
|
|
import androidx.core.app.NotificationManagerCompat;
|
|
|
import androidx.core.content.ContextCompat;
|
|
|
+import androidx.core.content.PermissionChecker;
|
|
|
|
|
|
import com.facebook.react.bridge.Callback;
|
|
|
import com.facebook.react.bridge.Promise;
|
|
|
@@ -46,6 +48,7 @@ import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Calendar;
|
|
|
import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
public class HolaModule extends ReactContextBaseJavaModule {
|
|
|
private static final String CHANNEL_DESCRIPTION = "Daily reminder notification ";
|
|
|
@@ -67,6 +70,21 @@ public class HolaModule extends ReactContextBaseJavaModule {
|
|
|
return MODULE_NAME;
|
|
|
}
|
|
|
|
|
|
+ private boolean hasScheduleExactAlarmPermission() {
|
|
|
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
|
|
+ AlarmManager alarmManager = (AlarmManager) getCurrentActivity().getSystemService(Context.ALARM_SERVICE);
|
|
|
+ return alarmManager.canScheduleExactAlarms();
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void requestScheduleExactAlarmPermission() {
|
|
|
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
|
|
+ Intent intent = new Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM);
|
|
|
+ Objects.requireNonNull(getCurrentActivity()).startActivity(intent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@ReactMethod
|
|
|
public void openNotificationSettings() {
|
|
|
Activity currentActivity = getCurrentActivity();
|
|
|
@@ -204,6 +222,11 @@ public class HolaModule extends ReactContextBaseJavaModule {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ if (!hasScheduleExactAlarmPermission()){
|
|
|
+ requestScheduleExactAlarmPermission();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
clearSunClockSchedule();
|
|
|
AlarmManager alarmManager = (AlarmManager) getCurrentActivity().getSystemService(Context.ALARM_SERVICE);
|
|
|
|
|
|
@@ -250,6 +273,10 @@ public class HolaModule extends ReactContextBaseJavaModule {
|
|
|
if (getCurrentActivity()==null){
|
|
|
return;
|
|
|
}
|
|
|
+ if (!hasScheduleExactAlarmPermission()){
|
|
|
+ requestScheduleExactAlarmPermission();
|
|
|
+ return;
|
|
|
+ }
|
|
|
// if (ContextCompat.checkSelfPermission(getCurrentActivity(), Manifest.permission.SCHEDULE_EXACT_ALARM) != PackageManager.PERMISSION_GRANTED) {
|
|
|
// ActivityCompat.requestPermissions(getCurrentActivity(), new String[]{Manifest.permission.SCHEDULE_EXACT_ALARM}, REQUEST_CODE);
|
|
|
// }
|