diff --git a/app/src/main/java/de/ubuntix/android/birthdayreminder/BirthdayReminder.java b/app/src/main/java/de/ubuntix/android/birthdayreminder/BirthdayReminder.java
index 69a73f7..f9f21fb 100644
--- a/app/src/main/java/de/ubuntix/android/birthdayreminder/BirthdayReminder.java
+++ b/app/src/main/java/de/ubuntix/android/birthdayreminder/BirthdayReminder.java
@@ -1,8 +1,11 @@
package de.ubuntix.android.birthdayreminder;
+import android.Manifest;
import android.annotation.SuppressLint;
import android.app.ListActivity;
import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
@@ -10,6 +13,7 @@
import android.view.View;
import android.widget.ListAdapter;
import android.widget.ListView;
+import android.widget.Toast;
import java.text.DateFormatSymbols;
import java.util.Calendar;
@@ -34,6 +38,7 @@ public class BirthdayReminder extends ListActivity {
// TODO: call/write message on birthday
// TODO: hideNotificationPref
+ private static final int PERMISSIONS_REQUEST_WRITE_CONTACTS = 1;
private final DateFormatSymbols dateSymbols = new DateFormatSymbols();
private Database db;
@@ -53,13 +58,41 @@ public void onCreate(Bundle savedInstanceState) {
if (prefs.getActivateService()) {
BirthdayBroadcastReceiver.restart(getApplicationContext());
}
+
+ // request runtime permission
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ if (!isContactsPermissionGranted()) {
+ requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS}, PERMISSIONS_REQUEST_WRITE_CONTACTS);
+ }
+ }
+ }
+
+ private boolean isContactsPermissionGranted() {
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+ return true;
+ }
+
+ return checkSelfPermission(Manifest.permission.WRITE_CONTACTS) == PackageManager.PERMISSION_GRANTED;
}
@Override
protected void onResume() {
super.onResume();
- updateView();
+ if (isContactsPermissionGranted()) {
+ updateView();
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
+ if (requestCode == PERMISSIONS_REQUEST_WRITE_CONTACTS) {
+ if (isContactsPermissionGranted()) {
+ updateView();
+ } else {
+ Toast.makeText(this, R.string.no_contacts_permission, Toast.LENGTH_LONG).show();
+ }
+ }
}
private void updateView() {
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index dd39fc7..d74790d 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -24,5 +24,6 @@
OK
Abbrechen
Telefon
+ Keine Berechtigung zum Lesen und Ă„ndern von Kontakten
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ba617c9..61520b6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -31,5 +31,6 @@
add date of birth
+
Phone
+ No permission to read and write contacts
-
\ No newline at end of file
+