2222import static com .android .volley .Request .Method .GET ;
2323import static java .lang .Integer .parseInt ;
2424import static io .github .ratul .topactivity .App .showToast ;
25+ import static io .github .ratul .topactivity .utils .AutostartUtil .isAutoStartPermissionAvailable ;
26+ import static io .github .ratul .topactivity .utils .AutostartUtil .requestAutoStartPermission ;
2527
2628import android .app .AppOpsManager ;
2729import android .content .BroadcastReceiver ;
3032import android .content .Intent ;
3133import android .content .IntentFilter ;
3234import android .content .ServiceConnection ;
33- import android .graphics .Insets ;
3435import android .net .Uri ;
3536import android .os .Build ;
3637import android .os .Bundle ;
4546import android .view .WindowMetrics ;
4647import android .widget .Button ;
4748import android .widget .EditText ;
49+ import android .widget .LinearLayout ;
4850import android .widget .TextView ;
4951
52+ import androidx .activity .EdgeToEdge ;
5053import androidx .activity .result .ActivityResultLauncher ;
5154import androidx .activity .result .contract .ActivityResultContracts ;
5255import androidx .appcompat .app .AlertDialog ;
5356import androidx .appcompat .app .AppCompatActivity ;
5457import androidx .appcompat .widget .SwitchCompat ;
5558import androidx .core .content .ContextCompat ;
59+ import androidx .core .graphics .Insets ;
60+ import androidx .core .view .ViewCompat ;
61+ import androidx .core .view .WindowInsetsCompat ;
5662
5763import com .android .volley .toolbox .JsonObjectRequest ;
5864import com .android .volley .toolbox .Volley ;
6470import io .github .ratul .topactivity .receivers .NotificationReceiver ;
6571import io .github .ratul .topactivity .services .AccessibilityMonitoringService ;
6672import io .github .ratul .topactivity .services .PackageMonitoringService ;
73+ import io .github .ratul .topactivity .utils .AutostartUtil ;
6774import io .github .ratul .topactivity .utils .DatabaseUtil ;
6875import io .github .ratul .topactivity .utils .WindowUtil ;
6976
@@ -108,7 +115,14 @@ public void onReceive(Context context, Intent intent) {
108115 @ Override
109116 protected void onCreate (Bundle savedInstanceState ) {
110117 super .onCreate (savedInstanceState );
118+ EdgeToEdge .enable (this );
111119 setContentView (R .layout .activity_main );
120+ ViewCompat .setOnApplyWindowInsetsListener (findViewById (R .id .main ), (v , insets ) -> {
121+ Insets systemBars = insets .getInsets (WindowInsetsCompat .Type .systemBars ());
122+ v .setPadding (systemBars .left , systemBars .top , systemBars .right , systemBars .bottom );
123+ return insets ;
124+ });
125+
112126 checkForUpdate (true );
113127 startAccessibilityService ();
114128 DatabaseUtil .setDisplayWidth (getScreenWidth ());
@@ -124,6 +138,10 @@ protected void onCreate(Bundle savedInstanceState) {
124138 Button downloadAccessibility = findViewById (R .id .download_accessibility );
125139 Button configureWidth = findViewById (R .id .configure_width );
126140
141+ LinearLayout autostartLayout = findViewById (R .id .autostart_layout );
142+ TextView autostartDivider = findViewById (R .id .autostart_divider );
143+ Button allowAutostart = findViewById (R .id .allow_autostart );
144+
127145 updateReceiver = new UpdateSwitchReceiver ();
128146 ContextCompat .registerReceiver (this , updateReceiver ,
129147 new IntentFilter (ACTION_STATE_CHANGED ), ContextCompat .RECEIVER_EXPORTED );
@@ -176,6 +194,15 @@ protected void onCreate(Bundle savedInstanceState) {
176194
177195 configureWidth .setOnClickListener (v -> configureWidth ());
178196
197+ if (isAutoStartPermissionAvailable (this )) {
198+ autostartLayout .setVisibility (View .VISIBLE );
199+ autostartDivider .setVisibility (View .VISIBLE );
200+ allowAutostart .setOnClickListener (v -> requestAutoStartPermission (this ));
201+ } else {
202+ autostartLayout .setVisibility (View .GONE );
203+ autostartDivider .setVisibility (View .GONE );
204+ }
205+
179206 if (handleQsTileIntent (getIntent ())) {
180207 moveTaskToBack (true );
181208 }
@@ -224,7 +251,8 @@ protected void onDestroy() {
224251 private int getScreenWidth () {
225252 if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .R ) {
226253 WindowMetrics windowMetrics = getWindowManager ().getCurrentWindowMetrics ();
227- Insets insets = windowMetrics .getWindowInsets ().getInsetsIgnoringVisibility (WindowInsets .Type .systemBars ());
254+ android .graphics .Insets insets = windowMetrics .getWindowInsets ()
255+ .getInsetsIgnoringVisibility (WindowInsets .Type .systemBars ());
228256 return windowMetrics .getBounds ().width () - insets .left - insets .right ;
229257 } else {
230258 DisplayMetrics displayMetrics = new DisplayMetrics ();
0 commit comments