Skip to content

Commit f832397

Browse files
Asura-64asuraliucodehasan
authored
Adapt to Android 14 and fix notifications bug (#28)
* 1. Update targetAPI to 34 and adapt to Android 14; 2. Fix Notification bugs. * Upgrade Version to 1.5.9:Supported Android 14+ and fix bugs --------- Co-authored-by: asuraliu <[email protected]> Co-authored-by: Ratul Hasan <[email protected]>
1 parent 47d0a6a commit f832397

File tree

7 files changed

+110
-55
lines changed

7 files changed

+110
-55
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ An useful tool for Android Developers &amp; Reversers, which shows the package n
99
</p>
1010
<br/>
1111

12-
[![App](https://img.shields.io/badge/Current%20Activity-1.5.8-blue?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iI2ZmZmZmZiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjEuNSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxLjUpIj48cG9seWxpbmUgcG9pbnRzPSI1LjI0NSAxMy4yODEgOC4yMzggOS4zOTEgMTEuNjUyIDEyLjA3MyAxNC41ODEgOC4yOTMiLz48Y2lyY2xlIGN4PSIxNy45OTUiIGN5PSIyLjciIHI9IjEuOTIyIi8+PHBhdGggZD0iTTEyLjkyNDQ4NTIsMS42MjAxMzczMSBMNS42NTY3NTA2LDEuNjIwMTM3MzEgQzIuNjQ1MzA4OTQsMS42MjAxMzczMSAwLjc3ODAzMjA0MSwzLjc1Mjg2MDQzIDAuNzc4MDMyMDQxLDYuNzY0MzAyMDkgTDAuNzc4MDMyMDQxLDE0Ljg0NjY4MiBDMC43NzgwMzIwNDEsMTcuODU4MTIzNyAyLjYwODY5NTY3LDE5Ljk4MTY5MzUgNS42NTY3NTA2LDE5Ljk4MTY5MzUgTDE0LjI2MDg2OTYsMTkuOTgxNjkzNSBDMTcuMjcyMzExMywxOS45ODE2OTM1IDE5LjEzOTU4ODIsMTcuODU4MTIzNyAxOS4xMzk1ODgyLDE0Ljg0NjY4MiBMMTkuMTM5NTg4Miw3LjgwNzc4MDM2Ii8+PC9nPjwvc3ZnPg==)](https://github.com/RatulHasan8/Current-Activity/releases/tag/app-n-source)
13-
[![SDK](https://img.shields.io/badge/Android-5.0%20and%20up-brightgreen?logo=android&logoColor=white)](https://github.com/RatulHasan8/Current-Activity/releases/tag/app-n-source)
12+
[![App](https://img.shields.io/badge/Current%20Activity-1.5.9-blue?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iI2ZmZmZmZiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjEuNSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxLjUpIj48cG9seWxpbmUgcG9pbnRzPSI1LjI0NSAxMy4yODEgOC4yMzggOS4zOTEgMTEuNjUyIDEyLjA3MyAxNC41ODEgOC4yOTMiLz48Y2lyY2xlIGN4PSIxNy45OTUiIGN5PSIyLjciIHI9IjEuOTIyIi8+PHBhdGggZD0iTTEyLjkyNDQ4NTIsMS42MjAxMzczMSBMNS42NTY3NTA2LDEuNjIwMTM3MzEgQzIuNjQ1MzA4OTQsMS42MjAxMzczMSAwLjc3ODAzMjA0MSwzLjc1Mjg2MDQzIDAuNzc4MDMyMDQxLDYuNzY0MzAyMDkgTDAuNzc4MDMyMDQxLDE0Ljg0NjY4MiBDMC43NzgwMzIwNDEsMTcuODU4MTIzNyAyLjYwODY5NTY3LDE5Ljk4MTY5MzUgNS42NTY3NTA2LDE5Ljk4MTY5MzUgTDE0LjI2MDg2OTYsMTkuOTgxNjkzNSBDMTcuMjcyMzExMywxOS45ODE2OTM1IDE5LjEzOTU4ODIsMTcuODU4MTIzNyAxOS4xMzk1ODgyLDE0Ljg0NjY4MiBMMTkuMTM5NTg4Miw3LjgwNzc4MDM2Ii8+PC9nPjwvc3ZnPg==)](https://github.com/RatulHasan8/Current-Activity/releases/tag/app-n-source)
13+
[![SDK](https://img.shields.io/badge/Android-7.0%20to%2014up-brightgreen?logo=android&logoColor=white)](https://github.com/RatulHasan8/Current-Activity/releases/tag/app-n-source)
1414
[![License](https://img.shields.io/badge/License-GPL-red?logo=gnu&logoColor=white)](./LICENSE)
1515
[![Maintenance](https://img.shields.io/badge/Maintained-Yes-green?logo=data:image/svg+xml;base64,PHN2ZyBpZD0iQ2FwYV8xIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIuMjYgNTEyLjI2IiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMi4yNiA1MTIuMjYiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI0ZGRkZGRiI+PHBhdGggZD0ibTM3MC4xMTkgMjgwLjYzNS0zNC4xMzkgMzQuMTM5LTM0LjE3NS0zNC4xNzUgODEuOTk2LTgxLjk5NmM5LjAxNCAyLjUzOCAxOC4yMTYgMy43NzkgMjcuMzY2IDMuNzc4IDI2LjMyOS0uMDAyIDUyLjE3OS0xMC4yODkgNzEuNDkxLTI5LjYwMSAyOC40MDctMjguNDA3IDM3LjI4OC03MC45NDggMjIuNjI2LTEwOC4zNzhsLTguMzYyLTIxLjM0OC01My42NjcgNTMuNjY4LTIxLjY2OS01LjgwNy01LjgwNy0yMS42NyA1My42NjYtNTMuNjY3LTIxLjM0NS04LjM2MWMtMzcuNDI3LTE0LjY2LTc5Ljk2OS01Ljc4LTEwOC4zNzggMjIuNjI3LTI2LjAyMyAyNi4wMjMtMzUuNjYgNjMuOTA2LTI1LjgyMiA5OC44NTZsLTgxLjk5NiA4MS45OTYtMTEwLjEwOS0xMTAuMTA5IDI5LjIxMy0yOS4yMTItOTAuNTQ1LTcxLjM2OS02MC40NjMgNjAuNDYyIDcxLjM2OCA5MC41NDYgMjkuMjE0LTI5LjIxMyAxMTAuMTA5IDExMC4xMDktNzIuMzg0IDcyLjM4NGMtMzcuNTkyLTExLjc3Ni03OC42MDUtMS45MzgtMTA2LjkgMjYuMzU3LTIwLjA5MyAyMC4wOTMtMzEuMTU5IDQ2LjgwOC0zMS4xNTkgNzUuMjIzczExLjA2NiA1NS4xMyAzMS4xNTkgNzUuMjIzYzIwLjczOSAyMC43MzkgNDcuOTggMzEuMTA4IDc1LjIyMyAzMS4xMDggMjcuMjQyIDAgNTQuNDg0LTEwLjM2OSA3NS4yMjMtMzEuMTA4IDI4LjI5NS0yOC4yOTUgMzguMTMzLTY5LjMwOSAyNi4zNTctMTA2LjlsNzIuMzg0LTcyLjM4NCAzNC4xNzUgMzQuMTc1LTM0LjEzOSAzNC4xMzkgMTIzLjU5MyAxMjMuNTkzYzExLjk1MiAxMS45NTIgMjcuODQzIDE4LjUzNCA0NC43NDYgMTguNTM0IDE2LjkwMiAwIDMyLjc5My02LjU4MiA0NC43NDUtMTguNTM0IDI0LjY3Mi0yNC42NzMgMjQuNjcyLTY0LjgxNyAwLTg5LjQ5em0tMzMwLjA1Ni0yMTcuODAyIDIyLjc2NS0yMi43NjUgNDMuMDkzIDMzLjk2Ny0zMS44OTEgMzEuODkxem0zMDguNTQ2IDczLjU4NC0zLjU4LTkuMTM5Yy0xMC4zMTMtMjYuMzI2LTQuMDctNTYuMjQ1IDE1LjkwNi03Ni4yMjIgMTMuODU5LTEzLjg1OCAzMi40OTctMjEuMTAzIDUxLjQxMi0yMC44MDVsLTMwLjAyOCAzMC4wMjkgMTQuNzcyIDU1LjEyOSA1NS4xMyAxNC43NzMgMzAuMDI3LTMwLjAyOGMuMzAzIDE4LjkxLTYuOTQ2IDM3LjU1NC0yMC44MDQgNTEuNDEyLTE5Ljk3NyAxOS45NzUtNDkuODk1IDI2LjIyLTc2LjIyMiAxNS45MDVsLTkuMTM4LTMuNTc5LTk1LjQ5MiA5NS40OTItMjcuNDc2LTI3LjQ3NnptLTE3NS41MDggMjMwLjQ2IDMuOTE4IDkuMjk4YzEyLjEyNiAyOC43NzQgNS42OTYgNjEuNjMyLTE2LjM4IDgzLjcwOC0xNC44OTMgMTQuODkyLTM0LjQ0OCAyMi4zMzctNTQuMDEgMjIuMzM1LTE5LjU1Ny0uMDAxLTM5LjEyMS03LjQ0Ni01NC4wMS0yMi4zMzUtMTQuNDI2LTE0LjQyNy0yMi4zNzItMzMuNjA3LTIyLjM3Mi01NC4wMXM3Ljk0NS0zOS41ODMgMjIuMzcyLTU0LjAxYzE0LjY3LTE0LjY2OSAzNC4wOTQtMjIuNDI5IDUzLjkyMy0yMi40MjkgMTAuMDEyIDAgMjAuMTMgMS45OCAyOS43ODQgNi4wNDlsOS4yOTggMy45MTggODYuMjc5LTg2LjI3OSAyNy40NzYgMjcuNDc2em0xOTcuMDE4LTQzLjgxNyAyNy40NzcgMjcuNDc3LTQ3LjA2NCA0Ny4wNjQtMjcuNDc2LTI3LjQ3NnptMTAyLjM4MiAxNDkuNDQ3Yy02LjI4NiA2LjI4NS0xNC42NDMgOS43NDctMjMuNTMyIDkuNzQ3cy0xNy4yNDctMy40NjItMjMuNTMyLTkuNzQ3bC01My42OTItNTMuNjkyIDQ3LjA2NC00Ny4wNjQgNTMuNjkyIDUzLjY5MmMxMi45NzUgMTIuOTc1IDEyLjk3NSAzNC4wODggMCA0Ny4wNjR6Ii8+PHBhdGggZD0ibTEwNi42MjkgMzU2LjQ0NGMtMTMuMjAzIDAtMjUuNjE2IDUuMTQyLTM0Ljk1MSAxNC40NzgtOS4zMzYgOS4zMzYtMTQuNDc4IDIxLjc0OC0xNC40NzggMzQuOTUxczUuMTQyIDI1LjYxNSAxNC40NzcgMzQuOTUxYzkuMzM2IDkuMzM2IDIxLjc0OSAxNC40NzggMzQuOTUyIDE0LjQ3OHMyNS42MTUtNS4xNDIgMzQuOTUyLTE0LjQ3OGMxOS4yNzEtMTkuMjcyIDE5LjI3MS01MC42MzEgMC02OS45MDItOS4zMzYtOS4zMzYtMjEuNzQ5LTE0LjQ3OC0zNC45NTItMTQuNDc4em0xMy43MzkgNjMuMTY3Yy0zLjY3IDMuNjY5LTguNTQ5IDUuNjktMTMuNzM4IDUuNjktNS4xOSAwLTEwLjA2OC0yLjAyMS0xMy43MzgtNS42OS0zLjY2OS0zLjY3LTUuNjktOC41NDktNS42OS0xMy43MzhzMi4wMjEtMTAuMDY4IDUuNjkxLTEzLjczOGMzLjY2OS0zLjY3IDguNTQ4LTUuNjkgMTMuNzM4LTUuNjkgNS4xODkgMCAxMC4wNjggMi4wMjEgMTMuNzM4IDUuNjkgNy41NzMgNy41NzUgNy41NzMgMTkuOTAxLS4wMDEgMjcuNDc2eiIvPjwvZz48L3N2Zz4=)](https://github.com/ratsan/Current-Activity/graphs/commit-activity)
1616
[![Contributions](https://img.shields.io/badge/Contributions-Open-yellow?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAARqSURBVHic7ZvNa11FGMZ/bxJjPzQNpoKi0WoXRaogrS26MfYDxWq14KaCuHIhooJu1H9AxU0RFaQgRYugoESMaDVKExBUrNKNsSVImraCVG1rrYoN8rg4701OT+bcxJsz5yTmPBDuzDvvzH3myXzPXKhRo0aNRQybyUGSAb3ApfHpFIoTwHEzUzOnXAEkLQWeBB4GriyWW2k4BrwK7DKzv0IOQQEkrQQ+Am6Kx61UfA3caWa/ZhOmCeBN/jNgk5tGgJeBI8BEPI6F4gJgFfAYcJ3bBs3s9hlzStqhKbwraUk8nnEhaYmk/lR9ts8m01vufFLSJSXwjApJPZJOeZ3ezKa3BfI0msyQmZ2MSy8+vN8Pe3RtNj0kQJd//haLVAU45Z8rsgkhARYVagGqJlA1agGqJlA1OpqkrZf0fGlM4mJ9XkIzAW7wv/81mglwDvijLCKRsRzonJWnpDFfNu6Jy6k8SNrjdRrLpi36QbAWoGoCVaMWoGoCMLlnr4RL5QJIupfkBPfDKr6/cgGAB0h4TDusKAOVCuAHsLd59PMqOEQVQFKbpDVe0RCuB1Z6eH8m71VlHMhGE8DJDwCHgOdy3DalwpMCSLoPGAcOSLo8FkeIJIDfKr0PbHPTxTmuDQGOm9loyt44l1wLDEm6oniWOZjrXkDSMkmDqbP4YUkXBfzaJP3iPm9k0kzSS6kyxiRdM4c6lbMXkLScpNlvddMwcJeZnQ243wj0ePi8/u8Xmo8DL7ppFbBf0rVF8oUCBfDKfwBsdtM+kvu4UOUhp/834CI8Aexy09UkIqwuhnEOWukCfgX1RarJDki6cIY8A3nNMuD7Qqrso5L+0211GV1gA3Czh08DD5rZ300IdQC3enTafz+Ap4CDHu4FdrTIcxqKEuBLYNDD3UB/aOBLYR1TI/1Qs4J9j7CbZMwAOAy83TLTDAoRwMwmgO0kUx9AH/CxpK6cLOn+P5RXrqR24DXgITcdBjab2c9zItwMc5kGJXXq/OvoAwrcMEva5+mjoXLcp13S66myRtTioqjZGBByblkAz9+p5F1BA99I6kmld0g642m7c8pol7Q3VcZBSS2/USpjEJyEmZ0DdgLvuGkd8GzKZSNTK8O8AfARkl0iwLfAlljNPspS2MeE+4G9bhpPJc+m/x8B/iEZXLeG3vZEw1y7QKC8rkz8Uy//+xnydfsgWASH3C7Q7GKkEJjZmRSRTuAWjzad/83sdExeDZR9ILIBWObh2SyAoiN6C8jgBPAncJaphVOlKFUAMxuV1AtMmNnvZX53HspuAcy3l2fz4VS4UtQCBGyNaau7TCKR0diPTHv7GBJgxD/70mv4hQolL9/7PPrdbDLck9qE9GthP5ZeKum9VH3uzvrkPZcfBLa46RDwCvADC+u5/GrgUWCN2z4xszuyjnk/mOghuazcGIthyfgK2BaagoOzgO+++oBngKNxuUXFOPA00Je3/pjxR1MASm5mLiuQWBn4ycx+rJpEjRo1asxr/As8TL5578cVOwAAAABJRU5ErkJggg==)](https://github.com/ratsan/Current-Activity/pulls)

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="io.github.ratul.topactivity">
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
43
<!-- Retrieve running apps -->
54
<uses-permission android:name="android.permission.GET_TASKS" />
65
<!-- This app can appear on top of other apps -->
76
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
87
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
98
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
9+
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
1010

1111
<queries>
1212
<intent>

app/src/main/java/io/github/ratul/topactivity/model/NotificationMonitor.java

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,21 @@
1616
*/
1717
package io.github.ratul.topactivity.model;
1818

19-
import android.app.ActivityManager;
19+
import android.app.Notification;
20+
import android.app.NotificationChannel;
2021
import android.app.NotificationManager;
2122
import android.app.PendingIntent;
22-
import android.app.NotificationChannel;
2323
import android.app.TaskStackBuilder;
24-
import android.app.Notification;
25-
import android.graphics.Color;
2624
import android.content.BroadcastReceiver;
2725
import android.content.Context;
2826
import android.content.Intent;
2927
import android.os.Build;
30-
import android.widget.Toast;
31-
32-
import java.util.List;
33-
import java.lang.reflect.AnnotatedElement;
3428

35-
import io.github.ratul.topactivity.utils.DatabaseUtil;
3629
import io.github.ratul.topactivity.R;
30+
import io.github.ratul.topactivity.service.QuickSettingsTileService;
3731
import io.github.ratul.topactivity.ui.MainActivity;
32+
import io.github.ratul.topactivity.utils.DatabaseUtil;
3833
import io.github.ratul.topactivity.utils.WindowUtil;
39-
import io.github.ratul.topactivity.service.QuickSettingsTileService;
4034

4135
/**
4236
* Created by Ratul on 04/05/2022.
@@ -58,22 +52,27 @@ public static void showNotification(Context context, boolean isPaused) {
5852
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
5953
stackBuilder.addParentStack(MainActivity.class);
6054
stackBuilder.addNextIntent(intent);
61-
PendingIntent pIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
55+
int flag;
56+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
57+
flag = PendingIntent.FLAG_IMMUTABLE;
58+
} else {
59+
flag = PendingIntent.FLAG_UPDATE_CURRENT;
60+
}
61+
PendingIntent pIntent = stackBuilder.getPendingIntent(0, flag);
6262

6363
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
6464
String CHANNEL_ID = context.getPackageName() + "_channel_007";
6565
CharSequence name = "Activity Info";
6666

67-
NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, NotificationManager.IMPORTANCE_MAX);
67+
NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, NotificationManager.IMPORTANCE_DEFAULT);
6868
mChannel.setDescription("Shows current activity info");
6969
mChannel.enableLights(false);
7070
mChannel.enableVibration(false);
7171
mChannel.setShowBadge(false);
7272
notifManager.createNotificationChannel(mChannel);
7373

7474
builder = new Notification.Builder(context, CHANNEL_ID);
75-
}
76-
else {
75+
} else {
7776
builder = new Notification.Builder(context);
7877
}
7978

@@ -86,16 +85,16 @@ public static void showNotification(Context context, boolean isPaused) {
8685
.setAutoCancel(true)
8786
.setContentIntent(pIntent);
8887

89-
builder.addAction(R.drawable.ic_launcher_foreground, context.getString(R.string.noti_action_stop),
90-
getPendingIntent(context, ACTION_STOP)).setContentIntent(pIntent);
88+
// builder.addAction(R.drawable.ic_launcher_foreground, context.getString(R.string.noti_action_stop),
89+
// getPendingIntent(context, ACTION_STOP)).setContentIntent(pIntent);
9190

9291
notifManager.notify(NOTIFICATION_ID, builder.build());
9392
}
9493

9594
public static PendingIntent getPendingIntent(Context context, int command) {
9695
Intent intent = new Intent("io.github.ratul.topactivity.ACTION_NOTIFICATION_RECEIVER");
9796
intent.putExtra(EXTRA_NOTIFICATION_ACTION, command);
98-
return PendingIntent.getBroadcast(context, 0, intent, 0);
97+
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
9998
}
10099

101100
public static void cancelNotification(Context context) {

app/src/main/java/io/github/ratul/topactivity/service/MonitoringService.java

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,17 @@
1616
*/
1717
package io.github.ratul.topactivity.service;
1818

19-
import android.annotation.*;
20-
import android.app.*;
21-
import android.app.ActivityManager.*;
22-
import android.content.*;
23-
import android.content.pm.*;
24-
import android.os.*;
25-
import android.util.*;
19+
import android.app.AlarmManager;
20+
import android.app.PendingIntent;
21+
import android.app.Service;
22+
import android.app.usage.UsageEvents;
23+
import android.app.usage.UsageStatsManager;
24+
import android.content.Context;
25+
import android.content.Intent;
26+
import android.os.Handler;
27+
import android.os.IBinder;
28+
import android.os.SystemClock;
2629

27-
import java.util.*;
28-
import android.app.usage.*;
29-
import android.widget.Toast;
3030
import io.github.ratul.topactivity.utils.DatabaseUtil;
3131
import io.github.ratul.topactivity.utils.WindowUtil;
3232

@@ -94,9 +94,16 @@ public void run() {
9494
MonitoringService.INSTANCE.stopSelf();
9595
}
9696

97+
String preText = MonitoringService.INSTANCE.text;
98+
String preText1 = MonitoringService.INSTANCE.text1;
9799
getActivityInfo();
98100
if (MonitoringService.INSTANCE.text == null)
99101
return;
102+
if (preText != null && preText.equals(MonitoringService.INSTANCE.text)
103+
&& preText1 != null && preText1.equals(MonitoringService.INSTANCE.text1)) {
104+
// not change, return
105+
return;
106+
}
100107

101108
MonitoringService.INSTANCE.firstRun = false;
102109
if (DatabaseUtil.isShowWindow()) {
@@ -113,14 +120,13 @@ public void run() {
113120
return super.onStartCommand(intent, flags, startId);
114121
}
115122

116-
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
117123
@Override
118124
public void onTaskRemoved(Intent rootIntent) {
119125
Intent restartServiceIntent = new Intent(getApplicationContext(), this.getClass());
120126
restartServiceIntent.setPackage(getPackageName());
121127

122128
PendingIntent restartServicePendingIntent = PendingIntent.getService(getApplicationContext(), 1,
123-
restartServiceIntent, PendingIntent.FLAG_ONE_SHOT);
129+
restartServiceIntent, PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE);
124130
AlarmManager alarmService = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
125131
alarmService.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 500,
126132
restartServicePendingIntent);

app/src/main/java/io/github/ratul/topactivity/ui/MainActivity.java

Lines changed: 69 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,37 +16,60 @@
1616
*/
1717
package io.github.ratul.topactivity.ui;
1818

19-
import android.app.*;
20-
import android.content.*;
19+
import android.Manifest;
20+
import android.app.Activity;
21+
import android.app.AppOpsManager;
22+
import android.content.BroadcastReceiver;
23+
import android.content.Context;
24+
import android.content.DialogInterface;
25+
import android.content.Intent;
26+
import android.content.IntentFilter;
27+
import android.content.pm.PackageManager;
28+
import android.graphics.Insets;
2129
import android.net.Uri;
22-
import android.os.*;
23-
import android.provider.*;
24-
import android.view.*;
25-
import android.widget.*;
30+
import android.os.Build;
31+
import android.os.Bundle;
32+
import android.provider.Settings;
33+
import android.text.Spannable;
34+
import android.text.SpannableString;
35+
import android.util.DisplayMetrics;
36+
import android.view.Menu;
37+
import android.view.MenuItem;
38+
import android.view.View;
39+
import android.view.WindowInsets;
40+
import android.view.WindowMetrics;
41+
import android.widget.CompoundButton;
2642
import android.widget.CompoundButton.OnCheckedChangeListener;
27-
import android.app.*;
43+
import android.widget.Toast;
44+
45+
import androidx.annotation.NonNull;
2846
import androidx.appcompat.app.ActionBar;
29-
import android.content.pm.*;
30-
import android.graphics.drawable.*;
31-
import android.graphics.*;
32-
import android.text.*;
3347
import androidx.appcompat.app.AppCompatActivity;
48+
import androidx.core.content.ContextCompat;
49+
3450
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
3551
import com.google.android.material.switchmaterial.SwitchMaterial;
36-
import java.util.List;
37-
import io.github.ratul.topactivity.*;
38-
import io.github.ratul.topactivity.utils.*;
52+
53+
import java.io.BufferedReader;
54+
import java.io.File;
55+
import java.io.FileOutputStream;
56+
import java.io.FileReader;
57+
58+
import io.github.ratul.topactivity.App;
59+
import io.github.ratul.topactivity.R;
3960
import io.github.ratul.topactivity.model.NotificationMonitor;
40-
import io.github.ratul.topactivity.service.*;
4161
import io.github.ratul.topactivity.model.TypefaceSpan;
42-
import java.io.*;
43-
import android.util.DisplayMetrics;
62+
import io.github.ratul.topactivity.service.AccessibilityMonitoringService;
63+
import io.github.ratul.topactivity.service.MonitoringService;
64+
import io.github.ratul.topactivity.utils.DatabaseUtil;
65+
import io.github.ratul.topactivity.utils.WindowUtil;
4466

4567
/**
4668
* Created by Wen on 16/02/2017.
4769
* Refactored by Ratul on 04/05/2022.
4870
*/
4971
public class MainActivity extends AppCompatActivity {
72+
public static final int REQUEST_CODE_NOTIFICATION = 100;
5073
public static final String EXTRA_FROM_QS_TILE = "from_qs_tile";
5174
public static final String ACTION_STATE_CHANGED = "io.github.ratul.topactivity.ACTION_STATE_CHANGED";
5275
private SwitchMaterial mWindowSwitch, mNotificationSwitch, mAccessibilitySwitch;
@@ -86,7 +109,7 @@ public void onClick(DialogInterface di, int btn) {
86109
}
87110

88111
mReceiver = new UpdateSwitchReceiver();
89-
registerReceiver(mReceiver, new IntentFilter(ACTION_STATE_CHANGED));
112+
ContextCompat.registerReceiver(this, mReceiver, new IntentFilter(ACTION_STATE_CHANGED), ContextCompat.RECEIVER_NOT_EXPORTED);
90113

91114
mNotificationSwitch.setOnCheckedChangeListener(new SwitchMaterial.OnCheckedChangeListener() {
92115
@Override
@@ -105,7 +128,7 @@ public void onCheckedChanged(CompoundButton button, boolean isChecked) {
105128
mWindowSwitch.setOnCheckedChangeListener(new SwitchMaterial.OnCheckedChangeListener() {
106129
@Override
107130
public void onCheckedChanged(CompoundButton button, boolean isChecked) {
108-
if (Build.VERSION.SDK_INT >= 23 && !Settings.canDrawOverlays(MainActivity.this)) {
131+
if (!Settings.canDrawOverlays(MainActivity.this)) {
109132
fancy.setTitle("Overlay Permission")
110133
.setMessage("Please enable overlay permission to show window over other apps")
111134
.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
@@ -181,6 +204,33 @@ protected void onNewIntent(Intent intent) {
181204
}
182205
}
183206

207+
@Override
208+
protected void onStart() {
209+
super.onStart();
210+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && !mNotificationSwitch.isChecked()) {
211+
if (checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
212+
requestPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS}, REQUEST_CODE_NOTIFICATION);
213+
}
214+
}
215+
}
216+
217+
@Override
218+
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
219+
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
220+
if (requestCode == REQUEST_CODE_NOTIFICATION) {
221+
if (grantResults[0] == PackageManager.PERMISSION_DENIED) {
222+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU
223+
&& shouldShowRequestPermissionRationale(Manifest.permission.POST_NOTIFICATIONS)) {
224+
requestPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS}, REQUEST_CODE_NOTIFICATION);
225+
} else {
226+
showToast("POST_NOTIFICATIONS Permission Denied", Toast.LENGTH_SHORT);
227+
}
228+
} else {
229+
showToast("POST_NOTIFICATIONS Permission Granted", Toast.LENGTH_SHORT);
230+
}
231+
}
232+
}
233+
184234
@Override
185235
protected void onResume() {
186236
super.onResume();

app/src/main/java/io/github/ratul/topactivity/utils/WindowUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,8 @@ public static void show(Context context, String pkg, String clas) {
177177
}
178178

179179
if (NotificationMonitor.builder != null) {
180-
NotificationMonitor.builder.setContentTitle(text);
181-
NotificationMonitor.builder.setContentText(text1);
180+
NotificationMonitor.builder.setContentTitle(pkg);
181+
NotificationMonitor.builder.setContentText(clas);
182182
NotificationMonitor.notifManager.notify(NotificationMonitor.NOTIFICATION_ID,
183183
NotificationMonitor.builder.build());
184184
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ android.useAndroidX=true
1818
# Enables namespacing of each library's R class so that its R class includes only the
1919
# resources declared in the library itself and none from the library's dependencies,
2020
# thereby reducing the size of the R class for that library
21-
android.nonTransitiveRClass=true
21+
android.nonTransitiveRClass=true

0 commit comments

Comments
 (0)