diff options
-rw-r--r-- | src/com/cyngn/theme/chooser/ChooserActivity.java | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/src/com/cyngn/theme/chooser/ChooserActivity.java b/src/com/cyngn/theme/chooser/ChooserActivity.java index b1f943f..d607eb6 100644 --- a/src/com/cyngn/theme/chooser/ChooserActivity.java +++ b/src/com/cyngn/theme/chooser/ChooserActivity.java @@ -28,6 +28,7 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.RemoteException; +import android.provider.Settings; import android.renderscript.Allocation; import android.renderscript.Element; import android.renderscript.RenderScript; @@ -112,6 +113,11 @@ public class ChooserActivity extends FragmentActivity */ public static final int REQUEST_PICK_LOCKSCREEN_IMAGE = 3; + /** + * Request code for enabling system alert window permission + */ + private static final int REQUEST_SYSTEM_WINDOW_PERMISSION = 4; + private static final long ANIMATE_CONTENT_IN_SCALE_DURATION = 500; private static final long ANIMATE_CONTENT_IN_ALPHA_DURATION = 750; private static final long ANIMATE_CONTENT_IN_BLUR_DURATION = 250; @@ -242,10 +248,11 @@ public class ChooserActivity extends FragmentActivity new View.OnClickListener() { @Override public void onClick(View v) { - PreferenceUtils.setShowPerAppThemeNewTag(ChooserActivity.this, false); - Intent intent = new Intent(ChooserActivity.this, PerAppThemingWindow.class); - startService(intent); - finish(); + if (Settings.canDrawOverlays(ChooserActivity.this)) { + launchAppThemer(); + } else { + requestSystemWindowPermission(); + } } }); @@ -771,8 +778,10 @@ public class ChooserActivity extends FragmentActivity showSaveApplyButton(); } } - } else { - super.onActivityResult(requestCode, resultCode, data); + } else if (requestCode == REQUEST_SYSTEM_WINDOW_PERMISSION) { + if (Settings.canDrawOverlays(this)) { + launchAppThemer(); + } } } @@ -1166,4 +1175,17 @@ public class ChooserActivity extends FragmentActivity } }); } + + private void launchAppThemer() { + PreferenceUtils.setShowPerAppThemeNewTag(ChooserActivity.this, false); + Intent intent = new Intent(ChooserActivity.this, PerAppThemingWindow.class); + startService(intent); + finish(); + } + + private void requestSystemWindowPermission() { + Intent intent = new Intent (Settings.ACTION_MANAGE_OVERLAY_PERMISSION, + Uri.parse("package:" + getPackageName())); + startActivityForResult(intent, REQUEST_SYSTEM_WINDOW_PERMISSION); + } } |