summaryrefslogtreecommitdiffstats
path: root/src/com/cyngn/theme/chooser/ChooserActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/cyngn/theme/chooser/ChooserActivity.java')
-rw-r--r--src/com/cyngn/theme/chooser/ChooserActivity.java34
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);
+ }
}