Restart on contacts permission change

This commit is contained in:
M66B 2018-12-08 08:59:28 +01:00
parent 66c5d065db
commit eb7754974f
1 changed files with 18 additions and 0 deletions

View File

@ -19,8 +19,10 @@ package eu.faircode.email;
Copyright 2018 by Marcel Bokhorst (M66B) Copyright 2018 by Marcel Bokhorst (M66B)
*/ */
import android.Manifest;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
@ -33,9 +35,12 @@ import java.util.List;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
abstract class ActivityBase extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener { abstract class ActivityBase extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
private boolean contacts;
private static String[] restart = new String[]{ private static String[] restart = new String[]{
"unified", "threading", "compact", "avatars", "identicons", "preview", "unified", "threading", "compact", "avatars", "identicons", "preview",
"browse", "actionbar", "autoclose", "confirm", "debug" "browse", "actionbar", "autoclose", "confirm", "debug"
@ -45,6 +50,9 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
Log.i(Helper.TAG, "Create " + this.getClass().getName() + " version=" + BuildConfig.VERSION_NAME); Log.i(Helper.TAG, "Create " + this.getClass().getName() + " version=" + BuildConfig.VERSION_NAME);
this.contacts = (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)
== PackageManager.PERMISSION_GRANTED);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (Helper.isPro(this)) { if (Helper.isPro(this)) {
String theme = prefs.getString("theme", null); String theme = prefs.getString("theme", null);
@ -62,6 +70,16 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc
@Override @Override
protected void onResume() { protected void onResume() {
Log.i(Helper.TAG, "Resume " + this.getClass().getName()); Log.i(Helper.TAG, "Resume " + this.getClass().getName());
boolean contacts = (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)
== PackageManager.PERMISSION_GRANTED);
if (!this.getClass().equals(ActivitySetup.class) && this.contacts != contacts) {
Log.i(Helper.TAG, "Contacts permission=" + contacts);
finish();
startActivity(getIntent());
}
super.onResume(); super.onResume();
} }