Skip to content

Commit cbc14ca

Browse files
authored
Merge pull request #6 from ratulhasanrahat/main
Main
2 parents 6d559af + b4edce6 commit cbc14ca

21 files changed

+192
-192
lines changed

.resources/images/ic_launcher.png

-34.2 KB
Loading

app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ android {
55
defaultConfig {
66
applicationId "com.ratul.topactivity"
77
minSdkVersion 21
8-
targetSdkVersion 25
8+
targetSdkVersion 29
99
versionCode 15
1010
versionName "1.5.5"
1111
}
@@ -18,8 +18,8 @@ android {
1818
}
1919
debug {
2020
debuggable true
21-
minifyEnabled true
22-
shrinkResources true
21+
minifyEnabled false
22+
shrinkResources false
2323
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
2424
}
2525
}

app/src/main/java/com/ratul/topactivity/App.java

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -29,31 +29,12 @@
2929

3030
public class App extends Application {
3131
private static App sApp;
32-
private Thread.UncaughtExceptionHandler getHandler = Thread.getDefaultUncaughtExceptionHandler();
32+
private Thread.UncaughtExceptionHandler defaultHandler = Thread.getDefaultUncaughtExceptionHandler();
3333

3434
@Override
3535
protected void attachBaseContext(Context base) {
3636
super.attachBaseContext(base);
37-
CrashHandler handleCrash = new CrashHandler(this, getHandler);
38-
handleCrash.init(this.getFilesDir());
39-
}
40-
41-
public void gotoCrashActivity(Exception ex) {
42-
if (ex == null) {
43-
return;
44-
}
45-
Intent intent = new Intent(this, CrashActivity.class);
46-
intent.putExtra(CrashActivity.EXTRA_CRASH_INFO, ex.toString());
47-
startActivity(intent);
48-
}
49-
50-
public void setSafeContentView(Activity activity, int layout) {
51-
try {
52-
activity.setContentView(layout);
53-
} catch (Exception e) {
54-
Toast.makeText(this, "Saving crash log", 0).show();
55-
gotoCrashActivity(e);
56-
}
37+
new CrashHandler(this, defaultHandler).init(this.getFilesDir());
5738
}
5839

5940
@Override
@@ -65,5 +46,9 @@ public void onCreate() {
6546
public static App getApp() {
6647
return sApp;
6748
}
49+
50+
public static void showToast(String str, int length) {
51+
Toast.makeText(getApp(), str, length).show();
52+
}
6853

6954
}

app/src/main/java/com/ratul/topactivity/model/CrashHandler.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
import java.lang.Thread.UncaughtExceptionHandler;
2929
import android.widget.Toast;
3030

31+
/**
32+
* Created by Ratul on 04/05/2022.
33+
*/
34+
3135
public class CrashHandler implements UncaughtExceptionHandler {
3236
private UncaughtExceptionHandler DEFAULT;
3337
private Application mApp;

app/src/main/java/com/ratul/topactivity/model/NotificationMonitor.java

Lines changed: 41 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,49 +27,74 @@
2727

2828
import java.util.List;
2929
import javax.crypto.NullCipher;
30-
import com.ratul.topactivity.utils.SharedPrefsUtil;
30+
import com.ratul.topactivity.utils.DatabaseUtil;
3131
import com.ratul.topactivity.R;
3232
import com.ratul.topactivity.ui.MainActivity;
3333
import com.ratul.topactivity.utils.WindowUtil;
3434
import com.ratul.topactivity.service.QuickSettingsService;
35+
import java.lang.reflect.AnnotatedElement;
36+
import android.app.NotificationChannel;
37+
import android.graphics.Color;
38+
import android.app.TaskStackBuilder;
39+
import android.widget.Toast;
3540

3641
/**
37-
* Created by Wen on 4/18/15.
38-
* Refactored by Ratul on 04/05/2022.
42+
* Created by Ratul on 04/05/2022.
3943
*/
4044
public class NotificationMonitor extends BroadcastReceiver {
41-
public static final int NOTIFICATION_ID = 1;
42-
public static final String ACTION_NOTIFICATION_RECEIVER = "com.ratul.topactivity.ACTION_NOTIFICATION_RECEIVER";
43-
public static final int ACTION_STOP = 2;
44-
public static final String EXTRA_NOTIFICATION_ACTION = "command";
45+
public static final int NOTIFICATION_ID = 696969691;
46+
private static String CHANNEL_ID;
47+
private static final int ACTION_STOP = 2;
48+
private static final String EXTRA_NOTIFICATION_ACTION = "command";
4549
public static NotificationCompat.Builder builder;
4650
public static NotificationManager notifManager;
4751

4852
public static void showNotification(Context context, boolean isPaused) {
49-
if (!SharedPrefsUtil.isNotificationToggleEnabled(context)) {
53+
if (!DatabaseUtil.isNotificationToggleEnabled(context)) {
5054
return;
5155
}
52-
PendingIntent pIntent = PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0);
53-
builder = new NotificationCompat.Builder(context)
56+
notifManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
57+
58+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
59+
CHANNEL_ID = context.getPackageName() + "_channel_007";
60+
CharSequence name = "Activity Info";
61+
62+
int importance = NotificationManager.IMPORTANCE_HIGH;
63+
NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);
64+
mChannel.setDescription("Shows current activity info");
65+
mChannel.enableLights(false);
66+
mChannel.enableVibration(false);
67+
mChannel.setShowBadge(false);
68+
notifManager.createNotificationChannel(mChannel);
69+
}
70+
71+
Intent intent = new Intent(context, MainActivity.class);
72+
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
73+
stackBuilder.addParentStack(MainActivity.class);
74+
stackBuilder.addNextIntent(intent);
75+
PendingIntent pIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
76+
77+
builder = new NotificationCompat.Builder(context, CHANNEL_ID)
5478
.setContentTitle(context.getString(R.string.is_running,
5579
context.getString(R.string.app_name)))
56-
.setSmallIcon(R.drawable.ic_launcher_foreground)
80+
.setSmallIcon(R.drawable.ic_shortcut)
81+
.setPriority(NotificationCompat.PRIORITY_HIGH)
5782
.setContentText(context.getString(R.string.touch_to_open))
5883
.setColor(context.getColor(R.color.layerColor))
5984
.setVisibility(NotificationCompat.VISIBILITY_SECRET)
6085
.setOngoing(!isPaused);
6186

62-
builder.addAction(R.drawable.ic_shortcut,
87+
builder.addAction(R.drawable.ic_launcher_foreground,
6388
context.getString(R.string.noti_action_stop),
6489
getPendingIntent(context, ACTION_STOP))
6590
.setContentIntent(pIntent);
66-
67-
notifManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
91+
6892
notifManager.notify(NOTIFICATION_ID, builder.build());
6993
}
7094

7195
public static PendingIntent getPendingIntent(Context context, int command) {
72-
Intent intent = new Intent(ACTION_NOTIFICATION_RECEIVER);
96+
Intent intent = new Intent(context, NotificationMonitor.class);
97+
intent.setAction("com.ratul.topactivity.ACTION_NOTIFICATION_RECEIVER");
7398
intent.putExtra(EXTRA_NOTIFICATION_ACTION, command);
7499
return PendingIntent.getBroadcast(context, command, intent, 0);
75100
}
@@ -85,7 +110,7 @@ public void onReceive(Context context, Intent intent) {
85110
switch (command) {
86111
case ACTION_STOP:
87112
WindowUtil.dismiss(context);
88-
SharedPrefsUtil.setIsShowWindow(context, false);
113+
DatabaseUtil.setIsShowWindow(context, false);
89114
cancelNotification(context);
90115
context.sendBroadcast(new Intent(MainActivity.ACTION_STATE_CHANGED));
91116
break;

app/src/main/java/com/ratul/topactivity/model/TypefaceSpan.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717
package com.ratul.topactivity.model;
1818

19-
import android.support.v4.util.LruCache;
19+
import android.util.LruCache;
2020
import android.graphics.Typeface;
2121
import android.text.style.MetricAffectingSpan;
2222
import android.content.Context;

app/src/main/java/com/ratul/topactivity/service/AccessibilityMonitoringService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import android.view.accessibility.AccessibilityEvent;
2323
import android.widget.Toast;
2424
import com.ratul.topactivity.utils.WindowUtil;
25-
import com.ratul.topactivity.utils.SharedPrefsUtil;
25+
import com.ratul.topactivity.utils.DatabaseUtil;
2626
import com.ratul.topactivity.model.NotificationMonitor;
2727

2828
/**
@@ -38,7 +38,7 @@ public static AccessibilityMonitoringService getInstance() {
3838

3939
@Override
4040
public void onAccessibilityEvent(AccessibilityEvent event) {
41-
if (WindowUtil.viewAdded && SharedPrefsUtil.isShowWindow(this) && SharedPrefsUtil.hasAccess(this)) {
41+
if (WindowUtil.viewAdded && DatabaseUtil.isShowWindow(this) && DatabaseUtil.hasAccess(this)) {
4242
String act1 = event.getClassName().toString();
4343
String act2 = event.getPackageName().toString();
4444

@@ -50,6 +50,7 @@ public void onAccessibilityEvent(AccessibilityEvent event) {
5050

5151
@Override
5252
public void onInterrupt() {
53+
sInstance = null;
5354
}
5455

5556
@Override

app/src/main/java/com/ratul/topactivity/service/MonitoringService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import java.util.*;
2828
import android.app.usage.*;
2929
import android.widget.Toast;
30-
import com.ratul.topactivity.utils.SharedPrefsUtil;
30+
import com.ratul.topactivity.utils.DatabaseUtil;
3131
import com.ratul.topactivity.utils.WindowUtil;
3232

3333
/**
@@ -89,7 +89,7 @@ public int onStartCommand(Intent intent, int flags, int startId) {
8989
Runnable runner = new Runnable() {
9090
@Override
9191
public void run() {
92-
if (!SharedPrefsUtil.isShowWindow(MonitoringService.INSTANCE)) {
92+
if (!DatabaseUtil.isShowWindow(MonitoringService.INSTANCE)) {
9393
MonitoringService.INSTANCE.mHandler.removeCallbacks(this);
9494
MonitoringService.INSTANCE.stopSelf();
9595
}
@@ -99,7 +99,7 @@ public void run() {
9999
return;
100100

101101
MonitoringService.INSTANCE.firstRun = false;
102-
if (SharedPrefsUtil.isShowWindow(MonitoringService.INSTANCE)) {
102+
if (DatabaseUtil.isShowWindow(MonitoringService.INSTANCE)) {
103103
WindowUtil.show(MonitoringService.INSTANCE, MonitoringService.INSTANCE.text, MonitoringService.INSTANCE.text1);
104104
} else {
105105
MonitoringService.INSTANCE.stopSelf();

app/src/main/java/com/ratul/topactivity/service/QuickSettingsService.java

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import android.service.quicksettings.Tile;
2828
import android.service.quicksettings.TileService;
2929
import android.text.style.BackgroundColorSpan;
30-
import com.ratul.topactivity.utils.SharedPrefsUtil;
30+
import com.ratul.topactivity.utils.DatabaseUtil;
3131
import com.ratul.topactivity.ui.MainActivity;
3232
import com.ratul.topactivity.utils.WindowUtil;
3333
import com.ratul.topactivity.model.NotificationMonitor;
@@ -43,7 +43,7 @@ public class QuickSettingsService extends TileService {
4343
private UpdateTileReceiver mReceiver;
4444

4545
public static void updateTile(Context context) {
46-
TileService.requestListeningState(context.getApplicationContext(), new ComponentName(context, QuickSettingsService.class));
46+
TileService.requestListeningState(context, new ComponentName(context, QuickSettingsService.class));
4747
context.sendBroadcast(new Intent(QuickSettingsService.ACTION_UPDATE_TITLE));
4848
}
4949

@@ -55,14 +55,14 @@ public void onCreate() {
5555

5656
@Override
5757
public void onTileAdded() {
58-
SharedPrefsUtil.setQSTileAdded(this, true);
58+
DatabaseUtil.setQSTileAdded(this, true);
5959
sendBroadcast(new Intent(MainActivity.ACTION_STATE_CHANGED));
6060
}
6161

6262
@Override
6363
public void onTileRemoved() {
6464
super.onTileRemoved();
65-
SharedPrefsUtil.setQSTileAdded(this, false);
65+
DatabaseUtil.setQSTileAdded(this, false);
6666
sendBroadcast(new Intent(MainActivity.ACTION_STATE_CHANGED));
6767
}
6868

@@ -81,20 +81,21 @@ public void onStopListening() {
8181

8282
@Override
8383
public void onClick() {
84-
if (SharedPrefsUtil.isShowWindow(this))
84+
if (DatabaseUtil.isShowWindow(this))
8585
return;
8686
if (!MainActivity.usageStats(this) || !Settings.canDrawOverlays(this)) {
8787
Intent intent = new Intent(this, MainActivity.class);
88+
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
8889
intent.putExtra(MainActivity.EXTRA_FROM_QS_TILE, true);
8990
startActivityAndCollapse(intent);
9091
} else {
91-
SharedPrefsUtil.setIsShowWindow(this, !SharedPrefsUtil.isShowWindow(this));
92-
if (SharedPrefsUtil.isShowWindow(this)) {
92+
if (DatabaseUtil.hasAccess(this) && AccessibilityMonitoringService.getInstance() == null)
93+
startService(new Intent().setClass(this, AccessibilityMonitoringService.class));
94+
DatabaseUtil.setIsShowWindow(this, !DatabaseUtil.isShowWindow(this));
95+
if (DatabaseUtil.isShowWindow(this)) {
9396
if (WindowUtil.sWindowManager == null)
9497
WindowUtil.init(this);
9598
NotificationMonitor.showNotification(this, false);
96-
if (SharedPrefsUtil.hasAccess(this) && AccessibilityMonitoringService.getInstance() == null)
97-
startService(new Intent().setClass(this, AccessibilityMonitoringService.class));
9899
startService(new Intent(this, MonitoringService.class));
99100
} else {
100101
WindowUtil.dismiss(this);
@@ -105,11 +106,7 @@ public void onClick() {
105106
}
106107

107108
private void updateTile() {
108-
if (SharedPrefsUtil.hasAccess(this) && AccessibilityMonitoringService.getInstance() == null) {
109-
getQsTile().setState(Tile.STATE_INACTIVE);
110-
} else {
111-
getQsTile().setState(SharedPrefsUtil.isShowWindow(this) ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE);
112-
}
109+
getQsTile().setState(DatabaseUtil.isShowWindow(this) ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE);
113110
getQsTile().updateTile();
114111
}
115112

app/src/main/java/com/ratul/topactivity/ui/BackgroundActivity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import android.os.Build;
2323
import android.os.Bundle;
2424
import android.provider.Settings;
25-
import android.support.annotation.Nullable;
2625
import android.content.ClipboardManager;
2726
import android.content.ClipData;
2827

@@ -34,7 +33,7 @@ public class BackgroundActivity extends Activity {
3433
public static String STRING_COPY = "com.ratul.topactivity.COPY_STRING";
3534

3635
@Override
37-
protected void onCreate(@Nullable Bundle savedInstanceState) {
36+
protected void onCreate(Bundle savedInstanceState) {
3837
super.onCreate(savedInstanceState);
3938
String str = getIntent().getStringExtra(STRING_COPY);
4039

0 commit comments

Comments
 (0)