Better handle notifcation actions

Signed-off-by: Tad <tad@spotco.us>
This commit is contained in:
Tad 2023-12-25 22:33:07 -05:00
parent 5b423016dc
commit f1d747b739
No known key found for this signature in database
GPG key ID: B286E9F57A07424B
3 changed files with 32 additions and 5 deletions

View file

@ -6,8 +6,8 @@ android {
applicationId "us.spotco.malwarescanner" applicationId "us.spotco.malwarescanner"
minSdkVersion 19 minSdkVersion 19
targetSdkVersion 32 targetSdkVersion 32
versionCode 122 versionCode 301
versionName "3.0" versionName "3.01"
resConfigs 'en', 'af', 'de', 'el', 'es', 'fi', 'fr', 'it', 'pl', 'pt', 'ru', 'tr', 'zh-rCN' resConfigs 'en', 'af', 'de', 'el', 'es', 'fi', 'fr', 'it', 'pl', 'pt', 'ru', 'tr', 'zh-rCN'
} }
buildTypes { buildTypes {

View file

@ -6,12 +6,14 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" <uses-permission
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" /> tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" <uses-permission
android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" /> tools:ignore="QueryAllPackagesPermission" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
@ -34,7 +36,9 @@
android:launchMode="singleInstance" android:launchMode="singleInstance"
android:theme="@android:style/Theme.Translucent.NoTitleBar" android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content"
android:noHistory="true"
android:excludeFromRecents="true" />
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden" android:configChanges="orientation|keyboardHidden"

View file

@ -44,9 +44,13 @@ public class NotificationPromptActivity extends Activity {
.setNegativeButton(android.R.string.no, (dialog, whichButton) -> { .setNegativeButton(android.R.string.no, (dialog, whichButton) -> {
finish(); finish();
}) })
.setOnDismissListener((dialog) -> {
finish();
})
.show(); .show();
} else { } else {
Log.d("Hypatia", "Invalid hash"); Log.d("Hypatia", "Invalid hash");
finish();
} }
break; break;
case "us.spotco.malwarescanner.DELETE_FILE": case "us.spotco.malwarescanner.DELETE_FILE":
@ -69,17 +73,25 @@ public class NotificationPromptActivity extends Activity {
.setNegativeButton(android.R.string.no, (dialog, whichButton) -> { .setNegativeButton(android.R.string.no, (dialog, whichButton) -> {
finish(); finish();
}) })
.setOnDismissListener((dialog) -> {
finish();
})
.show(); .show();
} else {
finish();
} }
} else { } else {
Log.d("Hypatia", "Ignoring DELETE_FILE request from external package: " + intent.getPackage()); Log.d("Hypatia", "Ignoring DELETE_FILE request from external package: " + intent.getPackage());
finish();
} }
break; break;
case "us.spotco.malwarescanner.UNINSTALL_APP": case "us.spotco.malwarescanner.UNINSTALL_APP":
if (intent.getPackage() == null || Objects.equals(intent.getPackage(), BuildConfig.APPLICATION_ID)) { if (intent.getPackage() == null || Objects.equals(intent.getPackage(), BuildConfig.APPLICATION_ID)) {
if (intent.getStringExtra("FILE_PATH") != null) { if (intent.getStringExtra("FILE_PATH") != null) {
boolean notFound = true;
for (ApplicationInfo packageInfo : getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA)) { for (ApplicationInfo packageInfo : getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA)) {
if (packageInfo.sourceDir.equals(intent.getStringExtra("FILE_PATH"))) { if (packageInfo.sourceDir.equals(intent.getStringExtra("FILE_PATH"))) {
notFound = false;
Uri packageUri = Uri.parse("package:" + packageInfo.packageName); Uri packageUri = Uri.parse("package:" + packageInfo.packageName);
Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri); Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri);
startActivity(uninstallIntent); startActivity(uninstallIntent);
@ -87,9 +99,15 @@ public class NotificationPromptActivity extends Activity {
finish(); finish();
} }
} }
if (notFound) {
finish();
}
} else {
finish();
} }
} else { } else {
Log.d("Hypatia", "Ignoring DELETE_FILE request from external package: " + intent.getPackage()); Log.d("Hypatia", "Ignoring DELETE_FILE request from external package: " + intent.getPackage());
finish();
} }
break; break;
case "us.spotco.malwarescanner.IGNORE_DETECTION": case "us.spotco.malwarescanner.IGNORE_DETECTION":
@ -107,4 +125,9 @@ public class NotificationPromptActivity extends Activity {
Log.d("Hypatia", "Canceled notification"); Log.d("Hypatia", "Canceled notification");
} }
} }
@Override
public void onBackPressed() {
finish();
}
} }