diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 264132de25..e6eecda51b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,6 +12,7 @@
+
diff --git a/app/src/main/java/info/nightscout/androidaps/MainActivity.java b/app/src/main/java/info/nightscout/androidaps/MainActivity.java
index 1595e6cb02..844f218803 100644
--- a/app/src/main/java/info/nightscout/androidaps/MainActivity.java
+++ b/app/src/main/java/info/nightscout/androidaps/MainActivity.java
@@ -326,6 +326,7 @@ public class MainActivity extends AppCompatActivity {
case AndroidPermission.CASE_LOCATION:
case AndroidPermission.CASE_SMS:
case AndroidPermission.CASE_BATTERY:
+ case AndroidPermission.CASE_PHONESTATE:
break;
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/notifications/Notification.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/notifications/Notification.java
index f6f291ddc2..0a055d7ae6 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/notifications/Notification.java
+++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/notifications/Notification.java
@@ -71,6 +71,7 @@ public class Notification {
public static final int DEVICENOTPAIRED = 43;
public static final int MEDTRONIC_PUMP_ALARM = 44;
public static final int RILEYLINK_CONNECTION = 45;
+ public static final int PERMISSION_PHONESTATE = 46;
public int id;
diff --git a/app/src/main/java/info/nightscout/utils/AndroidPermission.java b/app/src/main/java/info/nightscout/utils/AndroidPermission.java
index 6759bf5c96..c2a572ff4f 100644
--- a/app/src/main/java/info/nightscout/utils/AndroidPermission.java
+++ b/app/src/main/java/info/nightscout/utils/AndroidPermission.java
@@ -21,6 +21,7 @@ public class AndroidPermission {
public static final int CASE_SMS = 0x2;
public static final int CASE_LOCATION = 0x3;
public static final int CASE_BATTERY = 0x4;
+ public static final int CASE_PHONESTATE = 0x5;
public static void askForPermission(Activity activity, String[] permission, Integer requestCode) {
boolean test = false;
@@ -55,6 +56,16 @@ public class AndroidPermission {
} else
MainApp.bus().post(new EventDismissNotification(Notification.PERMISSION_SMS));
}
+ // Following is a bug in Android 8
+ if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O) {
+ if (!checkForPermission(activity, Manifest.permission.READ_PHONE_STATE)) {
+ NotificationWithAction notification = new NotificationWithAction(Notification.PERMISSION_PHONESTATE, MainApp.gs(R.string.smscommunicator_missingphonestatepermission), Notification.URGENT);
+ notification.action(MainApp.gs(R.string.request), () ->
+ AndroidPermission.askForPermission(activity, new String[]{Manifest.permission.READ_PHONE_STATE}, AndroidPermission.CASE_PHONESTATE));
+ MainApp.bus().post(new EventNewNotification(notification));
+ } else
+ MainApp.bus().post(new EventDismissNotification(Notification.PERMISSION_PHONESTATE));
+ }
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0bde7cfbb7..215666b3f1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -610,6 +610,7 @@
Bluetooth status
About
Missing SMS permission
+ Missing phone state permission
xDrip Status (watch)
xDrip Statusline (watch)
xds