Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .resources/images/ic_launcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ android {
defaultConfig {
applicationId "com.ratul.topactivity"
minSdkVersion 21
targetSdkVersion 25
targetSdkVersion 29
versionCode 15
versionName "1.5.5"
}
Expand All @@ -18,8 +18,8 @@ android {
}
debug {
debuggable true
minifyEnabled true
shrinkResources true
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Expand Down
27 changes: 6 additions & 21 deletions app/src/main/java/com/ratul/topactivity/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,31 +29,12 @@

public class App extends Application {
private static App sApp;
private Thread.UncaughtExceptionHandler getHandler = Thread.getDefaultUncaughtExceptionHandler();
private Thread.UncaughtExceptionHandler defaultHandler = Thread.getDefaultUncaughtExceptionHandler();

@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
CrashHandler handleCrash = new CrashHandler(this, getHandler);
handleCrash.init(this.getFilesDir());
}

public void gotoCrashActivity(Exception ex) {
if (ex == null) {
return;
}
Intent intent = new Intent(this, CrashActivity.class);
intent.putExtra(CrashActivity.EXTRA_CRASH_INFO, ex.toString());
startActivity(intent);
}

public void setSafeContentView(Activity activity, int layout) {
try {
activity.setContentView(layout);
} catch (Exception e) {
Toast.makeText(this, "Saving crash log", 0).show();
gotoCrashActivity(e);
}
new CrashHandler(this, defaultHandler).init(this.getFilesDir());
}

@Override
Expand All @@ -65,5 +46,9 @@ public void onCreate() {
public static App getApp() {
return sApp;
}

public static void showToast(String str, int length) {
Toast.makeText(getApp(), str, length).show();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@
import java.lang.Thread.UncaughtExceptionHandler;
import android.widget.Toast;

/**
* Created by Ratul on 04/05/2022.
*/

public class CrashHandler implements UncaughtExceptionHandler {
private UncaughtExceptionHandler DEFAULT;
private Application mApp;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,49 +27,74 @@

import java.util.List;
import javax.crypto.NullCipher;
import com.ratul.topactivity.utils.SharedPrefsUtil;
import com.ratul.topactivity.utils.DatabaseUtil;
import com.ratul.topactivity.R;
import com.ratul.topactivity.ui.MainActivity;
import com.ratul.topactivity.utils.WindowUtil;
import com.ratul.topactivity.service.QuickSettingsService;
import java.lang.reflect.AnnotatedElement;
import android.app.NotificationChannel;
import android.graphics.Color;
import android.app.TaskStackBuilder;
import android.widget.Toast;

/**
* Created by Wen on 4/18/15.
* Refactored by Ratul on 04/05/2022.
* Created by Ratul on 04/05/2022.
*/
public class NotificationMonitor extends BroadcastReceiver {
public static final int NOTIFICATION_ID = 1;
public static final String ACTION_NOTIFICATION_RECEIVER = "com.ratul.topactivity.ACTION_NOTIFICATION_RECEIVER";
public static final int ACTION_STOP = 2;
public static final String EXTRA_NOTIFICATION_ACTION = "command";
public static final int NOTIFICATION_ID = 696969691;
private static String CHANNEL_ID;
private static final int ACTION_STOP = 2;
private static final String EXTRA_NOTIFICATION_ACTION = "command";
public static NotificationCompat.Builder builder;
public static NotificationManager notifManager;

public static void showNotification(Context context, boolean isPaused) {
if (!SharedPrefsUtil.isNotificationToggleEnabled(context)) {
if (!DatabaseUtil.isNotificationToggleEnabled(context)) {
return;
}
PendingIntent pIntent = PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0);
builder = new NotificationCompat.Builder(context)
notifManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

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

int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);
mChannel.setDescription("Shows current activity info");
mChannel.enableLights(false);
mChannel.enableVibration(false);
mChannel.setShowBadge(false);
notifManager.createNotificationChannel(mChannel);
}

Intent intent = new Intent(context, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(intent);
PendingIntent pIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

builder = new NotificationCompat.Builder(context, CHANNEL_ID)
.setContentTitle(context.getString(R.string.is_running,
context.getString(R.string.app_name)))
.setSmallIcon(R.drawable.ic_launcher_foreground)
.setSmallIcon(R.drawable.ic_shortcut)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setContentText(context.getString(R.string.touch_to_open))
.setColor(context.getColor(R.color.layerColor))
.setVisibility(NotificationCompat.VISIBILITY_SECRET)
.setOngoing(!isPaused);

builder.addAction(R.drawable.ic_shortcut,
builder.addAction(R.drawable.ic_launcher_foreground,
context.getString(R.string.noti_action_stop),
getPendingIntent(context, ACTION_STOP))
.setContentIntent(pIntent);

notifManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

notifManager.notify(NOTIFICATION_ID, builder.build());
}

public static PendingIntent getPendingIntent(Context context, int command) {
Intent intent = new Intent(ACTION_NOTIFICATION_RECEIVER);
Intent intent = new Intent(context, NotificationMonitor.class);
intent.setAction("com.ratul.topactivity.ACTION_NOTIFICATION_RECEIVER");
intent.putExtra(EXTRA_NOTIFICATION_ACTION, command);
return PendingIntent.getBroadcast(context, command, intent, 0);
}
Expand All @@ -85,7 +110,7 @@ public void onReceive(Context context, Intent intent) {
switch (command) {
case ACTION_STOP:
WindowUtil.dismiss(context);
SharedPrefsUtil.setIsShowWindow(context, false);
DatabaseUtil.setIsShowWindow(context, false);
cancelNotification(context);
context.sendBroadcast(new Intent(MainActivity.ACTION_STATE_CHANGED));
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
*/
package com.ratul.topactivity.model;

import android.support.v4.util.LruCache;
import android.util.LruCache;
import android.graphics.Typeface;
import android.text.style.MetricAffectingSpan;
import android.content.Context;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import android.view.accessibility.AccessibilityEvent;
import android.widget.Toast;
import com.ratul.topactivity.utils.WindowUtil;
import com.ratul.topactivity.utils.SharedPrefsUtil;
import com.ratul.topactivity.utils.DatabaseUtil;
import com.ratul.topactivity.model.NotificationMonitor;

/**
Expand All @@ -38,7 +38,7 @@ public static AccessibilityMonitoringService getInstance() {

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
if (WindowUtil.viewAdded && SharedPrefsUtil.isShowWindow(this) && SharedPrefsUtil.hasAccess(this)) {
if (WindowUtil.viewAdded && DatabaseUtil.isShowWindow(this) && DatabaseUtil.hasAccess(this)) {
String act1 = event.getClassName().toString();
String act2 = event.getPackageName().toString();

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

@Override
public void onInterrupt() {
sInstance = null;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import java.util.*;
import android.app.usage.*;
import android.widget.Toast;
import com.ratul.topactivity.utils.SharedPrefsUtil;
import com.ratul.topactivity.utils.DatabaseUtil;
import com.ratul.topactivity.utils.WindowUtil;

/**
Expand Down Expand Up @@ -89,7 +89,7 @@ public int onStartCommand(Intent intent, int flags, int startId) {
Runnable runner = new Runnable() {
@Override
public void run() {
if (!SharedPrefsUtil.isShowWindow(MonitoringService.INSTANCE)) {
if (!DatabaseUtil.isShowWindow(MonitoringService.INSTANCE)) {
MonitoringService.INSTANCE.mHandler.removeCallbacks(this);
MonitoringService.INSTANCE.stopSelf();
}
Expand All @@ -99,7 +99,7 @@ public void run() {
return;

MonitoringService.INSTANCE.firstRun = false;
if (SharedPrefsUtil.isShowWindow(MonitoringService.INSTANCE)) {
if (DatabaseUtil.isShowWindow(MonitoringService.INSTANCE)) {
WindowUtil.show(MonitoringService.INSTANCE, MonitoringService.INSTANCE.text, MonitoringService.INSTANCE.text1);
} else {
MonitoringService.INSTANCE.stopSelf();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import android.service.quicksettings.Tile;
import android.service.quicksettings.TileService;
import android.text.style.BackgroundColorSpan;
import com.ratul.topactivity.utils.SharedPrefsUtil;
import com.ratul.topactivity.utils.DatabaseUtil;
import com.ratul.topactivity.ui.MainActivity;
import com.ratul.topactivity.utils.WindowUtil;
import com.ratul.topactivity.model.NotificationMonitor;
Expand All @@ -43,7 +43,7 @@ public class QuickSettingsService extends TileService {
private UpdateTileReceiver mReceiver;

public static void updateTile(Context context) {
TileService.requestListeningState(context.getApplicationContext(), new ComponentName(context, QuickSettingsService.class));
TileService.requestListeningState(context, new ComponentName(context, QuickSettingsService.class));
context.sendBroadcast(new Intent(QuickSettingsService.ACTION_UPDATE_TITLE));
}

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

@Override
public void onTileAdded() {
SharedPrefsUtil.setQSTileAdded(this, true);
DatabaseUtil.setQSTileAdded(this, true);
sendBroadcast(new Intent(MainActivity.ACTION_STATE_CHANGED));
}

@Override
public void onTileRemoved() {
super.onTileRemoved();
SharedPrefsUtil.setQSTileAdded(this, false);
DatabaseUtil.setQSTileAdded(this, false);
sendBroadcast(new Intent(MainActivity.ACTION_STATE_CHANGED));
}

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

@Override
public void onClick() {
if (SharedPrefsUtil.isShowWindow(this))
if (DatabaseUtil.isShowWindow(this))
return;
if (!MainActivity.usageStats(this) || !Settings.canDrawOverlays(this)) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(MainActivity.EXTRA_FROM_QS_TILE, true);
startActivityAndCollapse(intent);
} else {
SharedPrefsUtil.setIsShowWindow(this, !SharedPrefsUtil.isShowWindow(this));
if (SharedPrefsUtil.isShowWindow(this)) {
if (DatabaseUtil.hasAccess(this) && AccessibilityMonitoringService.getInstance() == null)
startService(new Intent().setClass(this, AccessibilityMonitoringService.class));
DatabaseUtil.setIsShowWindow(this, !DatabaseUtil.isShowWindow(this));
if (DatabaseUtil.isShowWindow(this)) {
if (WindowUtil.sWindowManager == null)
WindowUtil.init(this);
NotificationMonitor.showNotification(this, false);
if (SharedPrefsUtil.hasAccess(this) && AccessibilityMonitoringService.getInstance() == null)
startService(new Intent().setClass(this, AccessibilityMonitoringService.class));
startService(new Intent(this, MonitoringService.class));
} else {
WindowUtil.dismiss(this);
Expand All @@ -105,11 +106,7 @@ public void onClick() {
}

private void updateTile() {
if (SharedPrefsUtil.hasAccess(this) && AccessibilityMonitoringService.getInstance() == null) {
getQsTile().setState(Tile.STATE_INACTIVE);
} else {
getQsTile().setState(SharedPrefsUtil.isShowWindow(this) ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE);
}
getQsTile().setState(DatabaseUtil.isShowWindow(this) ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE);
getQsTile().updateTile();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.Nullable;
import android.content.ClipboardManager;
import android.content.ClipData;

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

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String str = getIntent().getStringExtra(STRING_COPY);

Expand Down
4 changes: 4 additions & 0 deletions app/src/main/java/com/ratul/topactivity/ui/CrashActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@
import com.ratul.topactivity.dialog.FancyDialog;
import com.ratul.topactivity.model.TypefaceSpan;

/**
* Created by Ratul on 04/05/2022.
*/

public class CrashActivity extends Activity {
public static String EXTRA_CRASH_INFO = "crash";
private String crashInfo;
Expand Down
Loading