mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-12-13 01:44:26 -05:00
21.0: More work
Signed-off-by: Tavi <tavi@divested.dev>
This commit is contained in:
parent
1a14ee9ef3
commit
9cb051937a
@ -9,10 +9,10 @@ Subject: [PATCH] srt permissions: don't auto-grant denied ones when
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
|
||||
index 9d91fbc0be74..b771b6ba1726 100644
|
||||
index 39384823f2cb..b3522775ce8a 100644
|
||||
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
|
||||
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
|
||||
@@ -1827,7 +1827,9 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
|
||||
@@ -1837,7 +1837,9 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
|
||||
// If this permission was granted by default or role, make sure it is.
|
||||
if ((oldFlags & FLAG_PERMISSION_GRANTED_BY_DEFAULT) != 0
|
||||
|| (oldFlags & FLAG_PERMISSION_GRANTED_BY_ROLE) != 0
|
||||
|
@ -11,7 +11,7 @@ Subject: [PATCH] infrastructure for spoofing self permission checks
|
||||
create mode 100644 core/java/android/content/pm/AppPermissionUtils.java
|
||||
|
||||
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
|
||||
index d1694013ae52..d90f463779ef 100644
|
||||
index 4950c0fdbaf8..94509e313be2 100644
|
||||
--- a/core/java/android/app/ApplicationPackageManager.java
|
||||
+++ b/core/java/android/app/ApplicationPackageManager.java
|
||||
@@ -47,6 +47,7 @@ import android.content.IntentFilter;
|
||||
@ -22,12 +22,12 @@ index d1694013ae52..d90f463779ef 100644
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.ArchivedPackageInfo;
|
||||
import android.content.pm.ChangedPackages;
|
||||
@@ -847,8 +848,18 @@ public class ApplicationPackageManager extends PackageManager {
|
||||
@@ -849,8 +850,18 @@ public class ApplicationPackageManager extends PackageManager {
|
||||
|
||||
@Override
|
||||
public int checkPermission(String permName, String pkgName) {
|
||||
- return PermissionManager.checkPackageNamePermission(permName, pkgName,
|
||||
+ int res = PermissionManager.checkPackageNamePermission(permName, pkgName,
|
||||
- return getPermissionManager().checkPackageNamePermission(permName, pkgName,
|
||||
+ int res = getPermissionManager().checkPackageNamePermission(permName, pkgName,
|
||||
mContext.getDeviceId(), getUserId());
|
||||
+
|
||||
+ if (res != PERMISSION_GRANTED) {
|
||||
@ -43,7 +43,7 @@ index d1694013ae52..d90f463779ef 100644
|
||||
|
||||
@Override
|
||||
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
|
||||
index 014ddd41f8d4..f4e5f2959b87 100644
|
||||
index af56cb4d55b2..2e66b88ff674 100644
|
||||
--- a/core/java/android/app/ContextImpl.java
|
||||
+++ b/core/java/android/app/ContextImpl.java
|
||||
@@ -48,6 +48,7 @@ import android.content.ReceiverCallNotAllowedException;
|
||||
|
@ -14,10 +14,10 @@ Subject: [PATCH] app-side infrastructure for special runtime permissions
|
||||
create mode 100644 services/core/java/com/android/server/pm/permission/SpecialRuntimePermUtils.java
|
||||
|
||||
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
|
||||
index e92564b5d7c2..38e4b74acc38 100644
|
||||
index 5aa89b98353f..373f48e937dd 100644
|
||||
--- a/core/api/system-current.txt
|
||||
+++ b/core/api/system-current.txt
|
||||
@@ -4175,6 +4175,9 @@ package android.content.pm {
|
||||
@@ -4412,6 +4412,9 @@ package android.content.pm {
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ShortcutManager.ShareShortcutInfo> CREATOR;
|
||||
}
|
||||
|
||||
@ -28,7 +28,7 @@ index e92564b5d7c2..38e4b74acc38 100644
|
||||
method public int describeContents();
|
||||
method public void writeToParcel(android.os.Parcel, int);
|
||||
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
|
||||
index 6dc8d4738c87..6acfeded7760 100644
|
||||
index bff90f1d2298..fc6b097c5e19 100644
|
||||
--- a/core/java/android/content/pm/IPackageManager.aidl
|
||||
+++ b/core/java/android/content/pm/IPackageManager.aidl
|
||||
@@ -832,6 +832,8 @@ interface IPackageManager {
|
||||
@ -101,10 +101,10 @@ index 000000000000..efd48cb49aa3
|
||||
+ private SpecialRuntimePermAppUtils() {}
|
||||
+}
|
||||
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
index 7798790c1026..7117861d2d16 100644
|
||||
index 09abae640bc5..f41bcf3b7c28 100644
|
||||
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
@@ -229,6 +229,7 @@ import com.android.server.pm.permission.LegacyPermissionManagerService;
|
||||
@@ -233,6 +233,7 @@ import com.android.server.pm.permission.LegacyPermissionManagerService;
|
||||
import com.android.server.pm.permission.LegacyPermissionSettings;
|
||||
import com.android.server.pm.permission.PermissionManagerService;
|
||||
import com.android.server.pm.permission.PermissionManagerServiceInternal;
|
||||
@ -112,7 +112,7 @@ index 7798790c1026..7117861d2d16 100644
|
||||
import com.android.server.pm.pkg.AndroidPackage;
|
||||
import com.android.server.pm.pkg.ArchiveState;
|
||||
import com.android.server.pm.pkg.PackageState;
|
||||
@@ -6535,6 +6536,24 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
||||
@@ -6644,6 +6645,24 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
||||
getPerUidReadTimeouts(snapshot), mSnapshotStatistics
|
||||
).doDump(snapshot, fd, pw, args);
|
||||
}
|
||||
|
@ -18,10 +18,10 @@ declaration inside <application> element in its AndroidManifest, or is a system
|
||||
5 files changed, 62 insertions(+)
|
||||
|
||||
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
|
||||
index 38e4b74acc38..d7461cbb5be3 100644
|
||||
index 373f48e937dd..bbbac378487b 100644
|
||||
--- a/core/api/system-current.txt
|
||||
+++ b/core/api/system-current.txt
|
||||
@@ -4176,6 +4176,11 @@ package android.content.pm {
|
||||
@@ -4413,6 +4413,11 @@ package android.content.pm {
|
||||
}
|
||||
|
||||
public class SpecialRuntimePermAppUtils {
|
||||
|
@ -11,10 +11,10 @@ Needed by packages_modules_Connectivity ->
|
||||
2 files changed, 7 insertions(+)
|
||||
|
||||
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt
|
||||
index 190fe9f31f3c..3156a91765ac 100644
|
||||
index 99abdce29c3c..434f7c5b2fbc 100644
|
||||
--- a/core/api/module-lib-current.txt
|
||||
+++ b/core/api/module-lib-current.txt
|
||||
@@ -467,6 +467,11 @@ package android.os {
|
||||
@@ -458,6 +458,11 @@ package android.os {
|
||||
field public static final long TRACE_TAG_NETWORK = 2097152L; // 0x200000L
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@ Permissions are enforced per-uid, checking pid may break spoofing for multi-proc
|
||||
1 file changed, 3 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
|
||||
index f4e5f2959b87..932c79e5bf7c 100644
|
||||
index 2e66b88ff674..c68d4135ada1 100644
|
||||
--- a/core/java/android/app/ContextImpl.java
|
||||
+++ b/core/java/android/app/ContextImpl.java
|
||||
@@ -2259,18 +2259,16 @@ class ContextImpl extends Context {
|
||||
|
@ -9,10 +9,10 @@ Subject: [PATCH] protect step sensors with OTHER_SENSORS permission for
|
||||
1 file changed, 15 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp
|
||||
index 85043c9038..fbf4facbc6 100644
|
||||
index e1c43c6fec..76cf6082ba 100644
|
||||
--- a/services/sensorservice/SensorService.cpp
|
||||
+++ b/services/sensorservice/SensorService.cpp
|
||||
@@ -2249,17 +2249,9 @@ bool SensorService::canAccessSensor(const Sensor& sensor, const char* operation,
|
||||
@@ -2292,17 +2292,9 @@ bool SensorService::canAccessSensor(const Sensor& sensor, const char* operation,
|
||||
}
|
||||
|
||||
const int32_t opCode = sensor.getRequiredAppOp();
|
||||
@ -31,7 +31,7 @@ index 85043c9038..fbf4facbc6 100644
|
||||
// Ensure that the AppOp is allowed, or that there is no necessary app op for the sensor
|
||||
if (opCode >= 0) {
|
||||
const int32_t appOpMode = sAppOpsManager.checkOp(opCode,
|
||||
@@ -2268,6 +2260,20 @@ bool SensorService::canAccessSensor(const Sensor& sensor, const char* operation,
|
||||
@@ -2311,6 +2303,20 @@ bool SensorService::canAccessSensor(const Sensor& sensor, const char* operation,
|
||||
} else {
|
||||
canAccess = true;
|
||||
}
|
||||
|
@ -9,10 +9,10 @@ Subject: [PATCH] exempt system processes from OTHER_SENSORS permission
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp
|
||||
index fbf4facbc6..e454033675 100644
|
||||
index 76cf6082ba..7245b3fa78 100644
|
||||
--- a/services/sensorservice/SensorService.cpp
|
||||
+++ b/services/sensorservice/SensorService.cpp
|
||||
@@ -2261,6 +2261,16 @@ bool SensorService::canAccessSensor(const Sensor& sensor, const char* operation,
|
||||
@@ -2304,6 +2304,16 @@ bool SensorService::canAccessSensor(const Sensor& sensor, const char* operation,
|
||||
canAccess = true;
|
||||
}
|
||||
} else {
|
||||
|
@ -1,85 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Tad <tad@spotco.us>
|
||||
Date: Wed, 31 May 2023 12:38:29 -0400
|
||||
Subject: [PATCH] Migrate Private DNS preset modes to hostname-mode based
|
||||
|
||||
Credit: CalyxOS
|
||||
- Tommy Webb <tommy@calyxinstitute.org>
|
||||
https://review.calyxos.org/c/CalyxOS/platform_calyx-sdk/+/17311
|
||||
|
||||
Change-Id: Ie3990a6e789be22da0c7771d85ad71034ed334eb
|
||||
---
|
||||
.../LineageDatabaseHelper.java | 60 +++++++++++++++++++
|
||||
1 file changed, 60 insertions(+)
|
||||
|
||||
diff --git a/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java b/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java
|
||||
index ac19ea8d..32e3b608 100644
|
||||
--- a/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java
|
||||
+++ b/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java
|
||||
@@ -109,6 +109,66 @@ public class LineageDatabaseHelper extends SQLiteOpenHelper{
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
+
|
||||
+ // DNS migration XXX: shouldn't be here
|
||||
+ final String currentPrivateDnsMode = Settings.Global.getString(
|
||||
+ mContext.getContentResolver(), Settings.Global.PRIVATE_DNS_MODE);
|
||||
+ if (!"off".equals(currentPrivateDnsMode) && !"hostname".equals(currentPrivateDnsMode) && !"opportunistic".equals(currentPrivateDnsMode)) {
|
||||
+ Log.d(TAG, "Performing migration for private dns presets");
|
||||
+ if ("adguard".equals(currentPrivateDnsMode)) {
|
||||
+ ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "dns.adguard.com");
|
||||
+ ConnectivitySettingsManager.setPrivateDnsMode(mContext,
|
||||
+ ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
|
||||
+ } else if ("appliedprivacy".equals(currentPrivateDnsMode)) {
|
||||
+ ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "dot1.applied-privacy.net");
|
||||
+ ConnectivitySettingsManager.setPrivateDnsMode(mContext,
|
||||
+ ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
|
||||
+ } else if ("cira".equals(currentPrivateDnsMode)) {
|
||||
+ ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "protected.canadianshield.cira.ca");
|
||||
+ ConnectivitySettingsManager.setPrivateDnsMode(mContext,
|
||||
+ ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
|
||||
+ } else if ("cleanbrowsing".equals(currentPrivateDnsMode)) {
|
||||
+ ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "security-filter-dns.cleanbrowsing.org");
|
||||
+ ConnectivitySettingsManager.setPrivateDnsMode(mContext,
|
||||
+ ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
|
||||
+ } else if ("cloudflare".equals(currentPrivateDnsMode)) {
|
||||
+ ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "security.cloudflare-dns.com");
|
||||
+ ConnectivitySettingsManager.setPrivateDnsMode(mContext,
|
||||
+ ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
|
||||
+ } else if ("cznic".equals(currentPrivateDnsMode)) {
|
||||
+ ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "odvr.nic.cz");
|
||||
+ ConnectivitySettingsManager.setPrivateDnsMode(mContext,
|
||||
+ ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
|
||||
+ }else if ("google".equals(currentPrivateDnsMode)) {
|
||||
+ ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "dns.google");
|
||||
+ ConnectivitySettingsManager.setPrivateDnsMode(mContext,
|
||||
+ ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
|
||||
+ } else if ("mullvad".equals(currentPrivateDnsMode)) {
|
||||
+ ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "base.dns.mullvad.net");
|
||||
+ ConnectivitySettingsManager.setPrivateDnsMode(mContext,
|
||||
+ ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
|
||||
+ } else if ("quadnine".equals(currentPrivateDnsMode)) {
|
||||
+ ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "dns.quad9.net");
|
||||
+ ConnectivitySettingsManager.setPrivateDnsMode(mContext,
|
||||
+ ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
|
||||
+ } else if ("restena".equals(currentPrivateDnsMode)) {
|
||||
+ ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "kaitain.restena.lu");
|
||||
+ ConnectivitySettingsManager.setPrivateDnsMode(mContext,
|
||||
+ ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
|
||||
+ } else if ("switch".equals(currentPrivateDnsMode)) {
|
||||
+ ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "dns.switch.ch");
|
||||
+ ConnectivitySettingsManager.setPrivateDnsMode(mContext,
|
||||
+ ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
|
||||
+ } else if ("twnic".equals(currentPrivateDnsMode)) {
|
||||
+ ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "101.101.101.101");
|
||||
+ ConnectivitySettingsManager.setPrivateDnsMode(mContext,
|
||||
+ ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
|
||||
+ } else if ("uncensoreddns".equals(currentPrivateDnsMode)) {
|
||||
+ ConnectivitySettingsManager.setPrivateDnsHostname(mContext, "anycast.censurfridns.dk");
|
||||
+ ConnectivitySettingsManager.setPrivateDnsMode(mContext,
|
||||
+ ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
/**
|
@ -1,98 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Muhomor <muhomor.dmitry@gmail.com>
|
||||
Date: Sun, 17 Apr 2022 18:00:53 +0300
|
||||
Subject: [PATCH] add an ability to disable non-system apps from the "App info"
|
||||
screen
|
||||
|
||||
---
|
||||
.../AppButtonsPreferenceController.java | 41 ++++++++++++++++++-
|
||||
1 file changed, 39 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
|
||||
index b80de32cf86..b7bc37c2425 100644
|
||||
--- a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
|
||||
+++ b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
|
||||
@@ -206,6 +206,15 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
|
||||
}
|
||||
|
||||
private class UninstallAndDisableButtonListener implements View.OnClickListener {
|
||||
+ private boolean mChangeEnabledStateOfUserApp;
|
||||
+
|
||||
+ UninstallAndDisableButtonListener() {
|
||||
+ this(false);
|
||||
+ }
|
||||
+
|
||||
+ UninstallAndDisableButtonListener(boolean changeEnabledStateOfUserApp) {
|
||||
+ mChangeEnabledStateOfUserApp = changeEnabledStateOfUserApp;
|
||||
+ }
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
@@ -237,8 +246,13 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
|
||||
mUserId);
|
||||
if (admin != null && !uninstallBlockedBySystem) {
|
||||
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mActivity, admin);
|
||||
- } else if ((mAppEntry.info.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
|
||||
+ } else if ((mAppEntry.info.flags & ApplicationInfo.FLAG_SYSTEM) != 0 || mChangeEnabledStateOfUserApp) {
|
||||
if (mAppEntry.info.enabled && !isDisabledUntilUsed()) {
|
||||
+ if (mChangeEnabledStateOfUserApp) {
|
||||
+ handleDialogClick(ButtonActionDialogFragment.DialogType.DISABLE);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
showDialogInner(ButtonActionDialogFragment.DialogType.DISABLE);
|
||||
} else {
|
||||
mMetricsFeatureProvider.action(
|
||||
@@ -477,6 +491,25 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
|
||||
}
|
||||
|
||||
mButtonsPref.setButton2Enabled(enabled);
|
||||
+
|
||||
+ if (enabled && !isBundled) {
|
||||
+ // "enabled" means "show uninstall button" in this context
|
||||
+ int text;
|
||||
+ int icon;
|
||||
+ if (mAppEntry.info.enabled) {
|
||||
+ text = R.string.disable_text;
|
||||
+ icon = R.drawable.ic_settings_disable;
|
||||
+ } else {
|
||||
+ text = R.string.enable_text;
|
||||
+ icon = R.drawable.ic_settings_enable;
|
||||
+ }
|
||||
+ mButtonsPref
|
||||
+ .setButton4Text(text)
|
||||
+ .setButton4Icon(icon)
|
||||
+ .setButton4Visible(true)
|
||||
+ .setButton4OnClickListener(new UninstallAndDisableButtonListener(true))
|
||||
+ ;
|
||||
+ }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -500,7 +533,9 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
|
||||
|
||||
@VisibleForTesting
|
||||
void updateForceStopButton() {
|
||||
- if (mDpm.packageHasActiveAdmins(mPackageInfo.packageName)) {
|
||||
+ if (!mPackageInfo.applicationInfo.enabled) {
|
||||
+ mButtonsPref.setButton3Visible(false);
|
||||
+ } else if (mDpm.packageHasActiveAdmins(mPackageInfo.packageName)) {
|
||||
// User can't force stop device admin.
|
||||
Log.w(TAG, "User can't force stop device admin");
|
||||
updateForceStopButtonInner(false /* enabled */);
|
||||
@@ -525,6 +560,7 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
|
||||
|
||||
@VisibleForTesting
|
||||
void updateForceStopButtonInner(boolean enabled) {
|
||||
+ mButtonsPref.setButton3Visible(true);
|
||||
if (mAppsControlDisallowedBySystem) {
|
||||
mButtonsPref.setButton3Enabled(false);
|
||||
} else {
|
||||
@@ -539,6 +575,7 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
|
||||
Uri packageUri = Uri.parse("package:" + packageName);
|
||||
Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri);
|
||||
uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, allUsers);
|
||||
+ uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_SHOW_MORE_OPTIONS_BUTTON, false);
|
||||
|
||||
mMetricsFeatureProvider.action(mActivity, SettingsEnums.ACTION_SETTINGS_UNINSTALL_APP);
|
||||
mFragment.startActivityForResult(uninstallIntent, mRequestUninstall);
|
@ -10,10 +10,10 @@ Subject: [PATCH] enforce INTERNET permission per-uid instead of per-appId
|
||||
2 files changed, 48 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/bpf_progs/netd.c b/bpf_progs/netd.c
|
||||
index 59bbfbae51..6bcc863043 100644
|
||||
index 0fad7ecb6e..9542ab8a03 100644
|
||||
--- a/bpf_progs/netd.c
|
||||
+++ b/bpf_progs/netd.c
|
||||
@@ -653,14 +653,8 @@ DEFINE_XTBPF_PROG("skfilter/denylist/xtbpf", AID_ROOT, AID_NET_ADMIN, xt_bpf_den
|
||||
@@ -664,14 +664,8 @@ DEFINE_XTBPF_PROG("skfilter/denylist/xtbpf", AID_ROOT, AID_NET_ADMIN, xt_bpf_den
|
||||
}
|
||||
|
||||
static __always_inline inline uint8_t get_app_permissions(uint32_t uid) {
|
||||
@ -31,7 +31,7 @@ index 59bbfbae51..6bcc863043 100644
|
||||
return permissions ? *permissions : BPF_PERMISSION_INTERNET;
|
||||
}
|
||||
diff --git a/service/src/com/android/server/connectivity/PermissionMonitor.java b/service/src/com/android/server/connectivity/PermissionMonitor.java
|
||||
index c9b6387e0e..4443c4316e 100755
|
||||
index b5c8f184df..5a9caf1e25 100755
|
||||
--- a/service/src/com/android/server/connectivity/PermissionMonitor.java
|
||||
+++ b/service/src/com/android/server/connectivity/PermissionMonitor.java
|
||||
@@ -426,6 +426,11 @@ public class PermissionMonitor {
|
||||
@ -46,7 +46,7 @@ index c9b6387e0e..4443c4316e 100755
|
||||
// Listen to EXTERNAL_APPLICATIONS_AVAILABLE is that an app becoming available means it may
|
||||
// need to gain a permission. But an app that becomes unavailable can neither gain nor lose
|
||||
// permissions on that account, it just can no longer run. Thus, doesn't need to listen to
|
||||
@@ -599,7 +604,7 @@ public class PermissionMonitor {
|
||||
@@ -600,7 +605,7 @@ public class PermissionMonitor {
|
||||
mUsersTrafficPermissions.put(user, addedUserAppIds);
|
||||
// Generate appIds from all users and send result to netd.
|
||||
final SparseIntArray appIds = makeAppIdsTrafficPermForAllUsers();
|
||||
@ -55,7 +55,7 @@ index c9b6387e0e..4443c4316e 100755
|
||||
|
||||
// Log user added
|
||||
mPermissionUpdateLogs.log("New user(" + user.getIdentifier() + ") added: nPerm uids="
|
||||
@@ -648,7 +653,7 @@ public class PermissionMonitor {
|
||||
@@ -649,7 +654,7 @@ public class PermissionMonitor {
|
||||
appIds.put(appId, PERMISSION_UNINSTALLED);
|
||||
}
|
||||
}
|
||||
@ -64,7 +64,7 @@ index c9b6387e0e..4443c4316e 100755
|
||||
|
||||
// Log user removed
|
||||
mPermissionUpdateLogs.log("User(" + user.getIdentifier() + ") removed: nPerm uids="
|
||||
@@ -772,16 +777,25 @@ public class PermissionMonitor {
|
||||
@@ -773,16 +778,25 @@ public class PermissionMonitor {
|
||||
}
|
||||
}
|
||||
|
||||
@ -91,7 +91,7 @@ index c9b6387e0e..4443c4316e 100755
|
||||
}
|
||||
return installed ? permission : PERMISSION_UNINSTALLED;
|
||||
}
|
||||
@@ -800,8 +814,8 @@ public class PermissionMonitor {
|
||||
@@ -801,8 +815,8 @@ public class PermissionMonitor {
|
||||
updateAppIdTrafficPermission(uid);
|
||||
// Get the appId permission from all users then send the latest permission to netd.
|
||||
final int appId = UserHandle.getAppId(uid);
|
||||
@ -102,7 +102,7 @@ index c9b6387e0e..4443c4316e 100755
|
||||
|
||||
final int currentPermission = mUidToNetworkPerm.get(uid, PERMISSION_NONE);
|
||||
final int permission = highestPermissionForUid(uid, currentPermission, packageName);
|
||||
@@ -831,7 +845,7 @@ public class PermissionMonitor {
|
||||
@@ -832,7 +846,7 @@ public class PermissionMonitor {
|
||||
mPermissionUpdateLogs.log("Package add: uid=" + uid
|
||||
+ ", nPerm=(" + permissionToString(permission) + "/"
|
||||
+ permissionToString(currentPermission) + ")"
|
||||
@ -111,7 +111,7 @@ index c9b6387e0e..4443c4316e 100755
|
||||
}
|
||||
|
||||
private int highestUidNetworkPermission(int uid) {
|
||||
@@ -864,8 +878,8 @@ public class PermissionMonitor {
|
||||
@@ -865,8 +879,8 @@ public class PermissionMonitor {
|
||||
updateAppIdTrafficPermission(uid);
|
||||
// Get the appId permission from all users then send the latest permission to netd.
|
||||
final int appId = UserHandle.getAppId(uid);
|
||||
@ -122,7 +122,7 @@ index c9b6387e0e..4443c4316e 100755
|
||||
|
||||
// If the newly-removed package falls within some VPN's uid range, update Netd with it.
|
||||
// This needs to happen before the mUidToNetworkPerm update below, since
|
||||
@@ -885,7 +899,7 @@ public class PermissionMonitor {
|
||||
@@ -886,7 +900,7 @@ public class PermissionMonitor {
|
||||
mPermissionUpdateLogs.log("Package remove: uid=" + uid
|
||||
+ ", nPerm=(" + permissionToString(permission) + "/"
|
||||
+ permissionToString(currentPermission) + ")"
|
||||
@ -131,7 +131,7 @@ index c9b6387e0e..4443c4316e 100755
|
||||
|
||||
if (permission != currentPermission) {
|
||||
final SparseIntArray apps = new SparseIntArray();
|
||||
@@ -1169,14 +1183,17 @@ public class PermissionMonitor {
|
||||
@@ -1170,14 +1184,17 @@ public class PermissionMonitor {
|
||||
* @hide
|
||||
*/
|
||||
@VisibleForTesting
|
||||
@ -151,7 +151,7 @@ index c9b6387e0e..4443c4316e 100755
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1188,7 +1205,7 @@ public class PermissionMonitor {
|
||||
@@ -1189,7 +1206,7 @@ public class PermissionMonitor {
|
||||
* @hide
|
||||
*/
|
||||
@VisibleForTesting
|
||||
@ -160,7 +160,7 @@ index c9b6387e0e..4443c4316e 100755
|
||||
ensureRunningOnHandlerThread();
|
||||
final ArrayList<Integer> allPermissionAppIds = new ArrayList<>();
|
||||
final ArrayList<Integer> internetPermissionAppIds = new ArrayList<>();
|
||||
@@ -1223,29 +1240,41 @@ public class PermissionMonitor {
|
||||
@@ -1224,29 +1241,41 @@ public class PermissionMonitor {
|
||||
if (allPermissionAppIds.size() != 0) {
|
||||
mBpfNetMaps.setNetPermForUids(
|
||||
PERMISSION_INTERNET | PERMISSION_UPDATE_DEVICE_STATS,
|
||||
|
@ -9,10 +9,10 @@ Subject: [PATCH] don't crash INTERNET-unaware apps that try to access
|
||||
1 file changed, 33 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/framework-t/src/android/net/nsd/NsdManager.java b/framework-t/src/android/net/nsd/NsdManager.java
|
||||
index bf01a9d633..4fd0b6e4da 100644
|
||||
index 1001423732..d3110e49d9 100644
|
||||
--- a/framework-t/src/android/net/nsd/NsdManager.java
|
||||
+++ b/framework-t/src/android/net/nsd/NsdManager.java
|
||||
@@ -647,11 +647,39 @@ public final class NsdManager {
|
||||
@@ -723,11 +723,39 @@ public final class NsdManager {
|
||||
// Instead of launching separate threads to handle tasks from the various instances.
|
||||
mHandler = new ServiceHandler(ConnectivityThread.getInstanceLooper());
|
||||
|
||||
@ -56,4 +56,4 @@ index bf01a9d633..4fd0b6e4da 100644
|
||||
+ }
|
||||
}
|
||||
|
||||
// Only proactively start the daemon if the target SDK < S, otherwise the internal service
|
||||
// Only proactively start the daemon if the target SDK < S AND platform < V, For target
|
||||
|
@ -9,7 +9,7 @@ Subject: [PATCH] ConnectivityManager: pretend that network is down to
|
||||
1 file changed, 129 insertions(+)
|
||||
|
||||
diff --git a/framework/src/android/net/ConnectivityManager.java b/framework/src/android/net/ConnectivityManager.java
|
||||
index fa27d0e010..d7431bd192 100644
|
||||
index 915ec52e77..08651038df 100644
|
||||
--- a/framework/src/android/net/ConnectivityManager.java
|
||||
+++ b/framework/src/android/net/ConnectivityManager.java
|
||||
@@ -43,6 +43,7 @@ import android.compat.annotation.UnsupportedAppUsage;
|
||||
@ -20,7 +20,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
import android.net.ConnectivityDiagnosticsManager.DataStallReport.DetectionMethod;
|
||||
import android.net.IpSecManager.UdpEncapsulationSocket;
|
||||
import android.net.SocketKeepalive.Callback;
|
||||
@@ -1382,6 +1383,10 @@ public class ConnectivityManager {
|
||||
@@ -1383,6 +1384,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
@Nullable
|
||||
public NetworkInfo getActiveNetworkInfo() {
|
||||
@ -31,7 +31,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
try {
|
||||
return mService.getActiveNetworkInfo();
|
||||
} catch (RemoteException e) {
|
||||
@@ -1403,6 +1408,10 @@ public class ConnectivityManager {
|
||||
@@ -1404,6 +1409,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
@Nullable
|
||||
public Network getActiveNetwork() {
|
||||
@ -42,7 +42,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
try {
|
||||
return mService.getActiveNetwork();
|
||||
} catch (RemoteException e) {
|
||||
@@ -1636,6 +1645,10 @@ public class ConnectivityManager {
|
||||
@@ -1637,6 +1646,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
@Nullable
|
||||
public NetworkInfo getNetworkInfo(int networkType) {
|
||||
@ -53,7 +53,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
try {
|
||||
return mService.getNetworkInfo(networkType);
|
||||
} catch (RemoteException e) {
|
||||
@@ -1657,6 +1670,10 @@ public class ConnectivityManager {
|
||||
@@ -1658,6 +1671,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
@Nullable
|
||||
public NetworkInfo getNetworkInfo(@Nullable Network network) {
|
||||
@ -64,7 +64,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
return getNetworkInfoForUid(network, Process.myUid(), false);
|
||||
}
|
||||
|
||||
@@ -1683,6 +1700,10 @@ public class ConnectivityManager {
|
||||
@@ -1684,6 +1701,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
@NonNull
|
||||
public NetworkInfo[] getAllNetworkInfo() {
|
||||
@ -75,7 +75,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
try {
|
||||
return mService.getAllNetworkInfo();
|
||||
} catch (RemoteException e) {
|
||||
@@ -1722,6 +1743,10 @@ public class ConnectivityManager {
|
||||
@@ -1723,6 +1744,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
@UnsupportedAppUsage
|
||||
public Network getNetworkForType(int networkType) {
|
||||
@ -86,7 +86,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
try {
|
||||
return mService.getNetworkForType(networkType);
|
||||
} catch (RemoteException e) {
|
||||
@@ -1745,6 +1770,10 @@ public class ConnectivityManager {
|
||||
@@ -1746,6 +1771,10 @@ public class ConnectivityManager {
|
||||
@NonNull
|
||||
@Deprecated
|
||||
public Network[] getAllNetworks() {
|
||||
@ -97,7 +97,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
try {
|
||||
return mService.getAllNetworks();
|
||||
} catch (RemoteException e) {
|
||||
@@ -1783,6 +1812,10 @@ public class ConnectivityManager {
|
||||
@@ -1784,6 +1813,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 109783091)
|
||||
public LinkProperties getActiveLinkProperties() {
|
||||
@ -108,7 +108,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
try {
|
||||
return mService.getActiveLinkProperties();
|
||||
} catch (RemoteException e) {
|
||||
@@ -1808,6 +1841,10 @@ public class ConnectivityManager {
|
||||
@@ -1809,6 +1842,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562)
|
||||
public LinkProperties getLinkProperties(int networkType) {
|
||||
@ -119,7 +119,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
try {
|
||||
return mService.getLinkPropertiesForType(networkType);
|
||||
} catch (RemoteException e) {
|
||||
@@ -1825,6 +1862,10 @@ public class ConnectivityManager {
|
||||
@@ -1826,6 +1863,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
@Nullable
|
||||
public LinkProperties getLinkProperties(@Nullable Network network) {
|
||||
@ -130,7 +130,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
try {
|
||||
return mService.getLinkProperties(network);
|
||||
} catch (RemoteException e) {
|
||||
@@ -1879,6 +1920,10 @@ public class ConnectivityManager {
|
||||
@@ -1880,6 +1921,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
@Nullable
|
||||
public NetworkCapabilities getNetworkCapabilities(@Nullable Network network) {
|
||||
@ -141,7 +141,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
try {
|
||||
return mService.getNetworkCapabilities(
|
||||
network, mContext.getOpPackageName(), getAttributionTag());
|
||||
@@ -2891,6 +2936,10 @@ public class ConnectivityManager {
|
||||
@@ -2892,6 +2937,10 @@ public class ConnectivityManager {
|
||||
@UnsupportedAppUsage
|
||||
@Deprecated
|
||||
public String[] getTetherableIfaces() {
|
||||
@ -152,7 +152,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
return getTetheringManager().getTetherableIfaces();
|
||||
}
|
||||
|
||||
@@ -2906,6 +2955,10 @@ public class ConnectivityManager {
|
||||
@@ -2907,6 +2956,10 @@ public class ConnectivityManager {
|
||||
@UnsupportedAppUsage
|
||||
@Deprecated
|
||||
public String[] getTetheredIfaces() {
|
||||
@ -163,7 +163,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
return getTetheringManager().getTetheredIfaces();
|
||||
}
|
||||
|
||||
@@ -2927,6 +2980,10 @@ public class ConnectivityManager {
|
||||
@@ -2928,6 +2981,10 @@ public class ConnectivityManager {
|
||||
@UnsupportedAppUsage
|
||||
@Deprecated
|
||||
public String[] getTetheringErroredIfaces() {
|
||||
@ -174,7 +174,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
return getTetheringManager().getTetheringErroredIfaces();
|
||||
}
|
||||
|
||||
@@ -3233,6 +3290,10 @@ public class ConnectivityManager {
|
||||
@@ -3234,6 +3291,10 @@ public class ConnectivityManager {
|
||||
@UnsupportedAppUsage
|
||||
@Deprecated
|
||||
public String[] getTetherableUsbRegexs() {
|
||||
@ -185,7 +185,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
return getTetheringManager().getTetherableUsbRegexs();
|
||||
}
|
||||
|
||||
@@ -3251,6 +3312,10 @@ public class ConnectivityManager {
|
||||
@@ -3252,6 +3313,10 @@ public class ConnectivityManager {
|
||||
@UnsupportedAppUsage
|
||||
@Deprecated
|
||||
public String[] getTetherableWifiRegexs() {
|
||||
@ -196,7 +196,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
return getTetheringManager().getTetherableWifiRegexs();
|
||||
}
|
||||
|
||||
@@ -3270,6 +3335,10 @@ public class ConnectivityManager {
|
||||
@@ -3271,6 +3336,10 @@ public class ConnectivityManager {
|
||||
@UnsupportedAppUsage
|
||||
@Deprecated
|
||||
public String[] getTetherableBluetoothRegexs() {
|
||||
@ -207,7 +207,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
return getTetheringManager().getTetherableBluetoothRegexs();
|
||||
}
|
||||
|
||||
@@ -3410,6 +3479,10 @@ public class ConnectivityManager {
|
||||
@@ -3411,6 +3480,10 @@ public class ConnectivityManager {
|
||||
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
|
||||
@Deprecated
|
||||
public int getLastTetherError(String iface) {
|
||||
@ -218,7 +218,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
int error = getTetheringManager().getLastTetherError(iface);
|
||||
if (error == TetheringManager.TETHER_ERROR_UNKNOWN_TYPE) {
|
||||
// TETHER_ERROR_UNKNOWN_TYPE was introduced with TetheringManager and has never been
|
||||
@@ -3552,6 +3625,10 @@ public class ConnectivityManager {
|
||||
@@ -3553,6 +3626,10 @@ public class ConnectivityManager {
|
||||
* Internet using {@code network} or {@code false} if not.
|
||||
*/
|
||||
public void reportNetworkConnectivity(@Nullable Network network, boolean hasConnectivity) {
|
||||
@ -229,7 +229,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
printStackTrace();
|
||||
try {
|
||||
mService.reportNetworkConnectivity(network, hasConnectivity);
|
||||
@@ -3658,6 +3735,10 @@ public class ConnectivityManager {
|
||||
@@ -3659,6 +3736,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562)
|
||||
public boolean isNetworkSupported(int networkType) {
|
||||
@ -240,7 +240,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
try {
|
||||
return mService.isNetworkSupported(networkType);
|
||||
} catch (RemoteException e) {
|
||||
@@ -3678,6 +3759,10 @@ public class ConnectivityManager {
|
||||
@@ -3679,6 +3760,10 @@ public class ConnectivityManager {
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
public boolean isActiveNetworkMetered() {
|
||||
@ -251,7 +251,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
try {
|
||||
return mService.isActiveNetworkMetered();
|
||||
} catch (RemoteException e) {
|
||||
@@ -4745,6 +4830,10 @@ public class ConnectivityManager {
|
||||
@@ -4746,6 +4831,10 @@ public class ConnectivityManager {
|
||||
* corresponding NetworkRequest you'd like to remove. Cannot be null.
|
||||
*/
|
||||
public void releaseNetworkRequest(@NonNull PendingIntent operation) {
|
||||
@ -262,7 +262,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
printStackTrace();
|
||||
checkPendingIntentNotNull(operation);
|
||||
try {
|
||||
@@ -4792,6 +4881,10 @@ public class ConnectivityManager {
|
||||
@@ -4793,6 +4882,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
public void registerNetworkCallback(@NonNull NetworkRequest request,
|
||||
@NonNull NetworkCallback networkCallback) {
|
||||
@ -273,7 +273,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
registerNetworkCallback(request, networkCallback, getDefaultHandler());
|
||||
}
|
||||
|
||||
@@ -4820,6 +4913,10 @@ public class ConnectivityManager {
|
||||
@@ -4821,6 +4914,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
public void registerNetworkCallback(@NonNull NetworkRequest request,
|
||||
@NonNull NetworkCallback networkCallback, @NonNull Handler handler) {
|
||||
@ -284,7 +284,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
CallbackHandler cbHandler = new CallbackHandler(handler);
|
||||
NetworkCapabilities nc = request.networkCapabilities;
|
||||
sendRequestForNetwork(nc, networkCallback, 0, LISTEN, TYPE_NONE, cbHandler);
|
||||
@@ -4868,6 +4965,10 @@ public class ConnectivityManager {
|
||||
@@ -4869,6 +4966,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
public void registerNetworkCallback(@NonNull NetworkRequest request,
|
||||
@NonNull PendingIntent operation) {
|
||||
@ -295,7 +295,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
printStackTrace();
|
||||
checkPendingIntentNotNull(operation);
|
||||
try {
|
||||
@@ -4903,6 +5004,10 @@ public class ConnectivityManager {
|
||||
@@ -4904,6 +5005,10 @@ public class ConnectivityManager {
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
public void registerDefaultNetworkCallback(@NonNull NetworkCallback networkCallback) {
|
||||
@ -306,7 +306,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
registerDefaultNetworkCallback(networkCallback, getDefaultHandler());
|
||||
}
|
||||
|
||||
@@ -4929,6 +5034,10 @@ public class ConnectivityManager {
|
||||
@@ -4930,6 +5035,10 @@ public class ConnectivityManager {
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
public void registerDefaultNetworkCallback(@NonNull NetworkCallback networkCallback,
|
||||
@NonNull Handler handler) {
|
||||
@ -317,7 +317,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
registerDefaultNetworkCallbackForUid(Process.INVALID_UID, networkCallback, handler);
|
||||
}
|
||||
|
||||
@@ -5034,6 +5143,10 @@ public class ConnectivityManager {
|
||||
@@ -5035,6 +5144,10 @@ public class ConnectivityManager {
|
||||
@SuppressLint("ExecutorRegistration")
|
||||
public void registerBestMatchingNetworkCallback(@NonNull NetworkRequest request,
|
||||
@NonNull NetworkCallback networkCallback, @NonNull Handler handler) {
|
||||
@ -328,7 +328,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
final NetworkCapabilities nc = request.networkCapabilities;
|
||||
final CallbackHandler cbHandler = new CallbackHandler(handler);
|
||||
sendRequestForNetwork(nc, networkCallback, 0, LISTEN_FOR_BEST, TYPE_NONE, cbHandler);
|
||||
@@ -5052,6 +5165,10 @@ public class ConnectivityManager {
|
||||
@@ -5053,6 +5166,10 @@ public class ConnectivityManager {
|
||||
* @return {@code true} on success, {@code false} if the {@link Network} is no longer valid.
|
||||
*/
|
||||
public boolean requestBandwidthUpdate(@NonNull Network network) {
|
||||
@ -339,7 +339,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
try {
|
||||
return mService.requestBandwidthUpdate(network);
|
||||
} catch (RemoteException e) {
|
||||
@@ -5072,6 +5189,10 @@ public class ConnectivityManager {
|
||||
@@ -5073,6 +5190,10 @@ public class ConnectivityManager {
|
||||
* @param networkCallback The {@link NetworkCallback} used when making the request.
|
||||
*/
|
||||
public void unregisterNetworkCallback(@NonNull NetworkCallback networkCallback) {
|
||||
@ -350,7 +350,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
printStackTrace();
|
||||
checkCallbackNotNull(networkCallback);
|
||||
final List<NetworkRequest> reqs = new ArrayList<>();
|
||||
@@ -5114,6 +5235,10 @@ public class ConnectivityManager {
|
||||
@@ -5115,6 +5236,10 @@ public class ConnectivityManager {
|
||||
* Cannot be null.
|
||||
*/
|
||||
public void unregisterNetworkCallback(@NonNull PendingIntent operation) {
|
||||
@ -361,7 +361,7 @@ index fa27d0e010..d7431bd192 100644
|
||||
releaseNetworkRequest(operation);
|
||||
}
|
||||
|
||||
@@ -5333,6 +5458,10 @@ public class ConnectivityManager {
|
||||
@@ -5334,6 +5459,10 @@ public class ConnectivityManager {
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
|
||||
public @MultipathPreference int getMultipathPreference(@Nullable Network network) {
|
||||
|
@ -9,7 +9,7 @@ Subject: [PATCH] fixup! don't crash INTERNET-unaware apps that try to access
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/framework-t/src/android/net/nsd/NsdManager.java b/framework-t/src/android/net/nsd/NsdManager.java
|
||||
index 4fd0b6e4da..a457369a07 100644
|
||||
index d3110e49d9..9d8ac37a84 100644
|
||||
--- a/framework-t/src/android/net/nsd/NsdManager.java
|
||||
+++ b/framework-t/src/android/net/nsd/NsdManager.java
|
||||
@@ -38,6 +38,7 @@ import android.net.ConnectivityManager.NetworkCallback;
|
||||
@ -20,7 +20,7 @@ index 4fd0b6e4da..a457369a07 100644
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.Message;
|
||||
@@ -671,6 +672,8 @@ public final class NsdManager {
|
||||
@@ -747,6 +748,8 @@ public final class NsdManager {
|
||||
@Override public void stopResolution(int listenerKey) {}
|
||||
@Override public void registerServiceInfoCallback(int listenerKey, NsdServiceInfo serviceInfo) {}
|
||||
@Override public void unregisterServiceInfoCallback(int listenerKey) {}
|
||||
|
@ -109,7 +109,7 @@ index 8e1721219..6690c9cd7 100644
|
||||
}
|
||||
}
|
||||
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt b/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
|
||||
index 2aad0154b..5e850f887 100644
|
||||
index 16c6d5aa9..3ebec4fd4 100644
|
||||
--- a/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
|
||||
+++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
|
||||
@@ -91,6 +91,7 @@ import com.android.permissioncontroller.permission.model.livedatatypes.LightPerm
|
||||
|
@ -10,17 +10,19 @@ Subject: [PATCH] fix usage UI summary for Network/Sensors
|
||||
2 files changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/PermissionController/res/values/strings.xml b/PermissionController/res/values/strings.xml
|
||||
index d10c6fb90..ad597ea7c 100644
|
||||
index 6e8005ad0..bc4739e44 100644
|
||||
--- a/PermissionController/res/values/strings.xml
|
||||
+++ b/PermissionController/res/values/strings.xml
|
||||
@@ -1934,4 +1934,7 @@ Allow <xliff:g id="app_name" example="Gmail">%4$s</xliff:g> to upload a bug repo
|
||||
<string name="safety_label_changes_gear_description">Settings</string>
|
||||
@@ -1950,6 +1950,9 @@ Allow <xliff:g id="app_name" example="Gmail">%4$s</xliff:g> to upload a bug repo
|
||||
|
||||
<!-- Safety Label Change Notifications End -->
|
||||
+
|
||||
|
||||
+ <!-- Summary text if tracking permission usage is not supported [CHAR LIMIT=60] -->
|
||||
+ <string name="permission_usage_preference_summary_not_supported">Tracking usage not yet supported</string>
|
||||
</resources>
|
||||
+
|
||||
<!-- Summary for showing the last access text for today for Wear [CHAR LIMIT=50] -->
|
||||
<string name="wear_app_perms_24h_access">Accessed <xliff:g id="time_date" example="12:42 PM">%1$s</xliff:g></string>
|
||||
|
||||
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageControlPreferenceUtils.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageControlPreferenceUtils.kt
|
||||
index 7d299fdda..fbc8022bb 100644
|
||||
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageControlPreferenceUtils.kt
|
||||
|
@ -140,16 +140,16 @@ applyPatch "$DOS_PATCHES/android_frameworks_base/0003-SUPL_No_IMSI.patch"; #Don'
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0004-Fingerprint_Lockout.patch"; #Enable fingerprint lockout after five failed attempts (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0005-User_Logout.patch"; #Enable secondary user logout support by default (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0005-User_Logout-a1.patch"; #Fix DevicePolicyManager#logoutUser() never succeeding (GrapheneOS)
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-1.patch"; #Support new special runtime permissions (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-2.patch"; #Make INTERNET into a special runtime permission (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-3.patch"; #Add special runtime permission for other sensors (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-4.patch"; #Infrastructure for spoofing self permission checks (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-5.patch"; #App-side infrastructure for special runtime permissions (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-6.patch"; #Improve compatibility of INTERNET special runtime permission (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-7.patch"; #Mark UserHandle#get{Uid, UserId} as module SystemApi (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-8.patch"; #Improve compatibility with revoked INTERNET in DownloadManager (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-9.patch"; #Ignore pid when spoofing permission checks (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-10.patch"; #srt permissions: don't auto-grant denied ones when permissions are reset (GrapheneOS) #TODO: 21REBASE
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-1.patch"; #Support new special runtime permissions (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-2.patch"; #Make INTERNET into a special runtime permission (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-3.patch"; #Add special runtime permission for other sensors (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-4.patch"; #Infrastructure for spoofing self permission checks (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-5.patch"; #App-side infrastructure for special runtime permissions (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-6.patch"; #Improve compatibility of INTERNET special runtime permission (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-7.patch"; #Mark UserHandle#get{Uid, UserId} as module SystemApi (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-8.patch"; #Improve compatibility with revoked INTERNET in DownloadManager (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-9.patch"; #Ignore pid when spoofing permission checks (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0013-Special_Permissions-10.patch"; #srt permissions: don't auto-grant denied ones when permissions are reset (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0014-Automatic_Reboot.patch"; #Timeout for reboot (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0015-System_Server_Extensions.patch"; #Timeout for Bluetooth (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0015-WiFi_Timeout.patch"; #Timeout for Wi-Fi (GrapheneOS)
|
||||
@ -179,8 +179,8 @@ applyPatch "$DOS_PATCHES/android_frameworks_base/0022-Ignore_StatementService_AN
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0024-Burnin_Protection.patch"; #SystemUI: add burnIn protection (arter97)
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/0026-Crash_Details.patch"; #Add an option to show the details of an application error to the user (GrapheneOS) #TODO: 21REBASE
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0028-Remove_Legacy_Package_Query.patch"; #Don't leak device-wide package list to apps when work profile is present (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0029-Strict_Package_Checks-1.patch"; #Disable package parser cache (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0029-Strict_Package_Checks-2.patch"; #Perform additional boot-time checks on system package updates (GrapheneOS)
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/0029-Strict_Package_Checks-1.patch"; #Disable package parser cache (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_base/0029-Strict_Package_Checks-2.patch"; #Perform additional boot-time checks on system package updates (GrapheneOS) #TODO: 21REBASE
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0030-agnss.goog_override.patch"; #Replace agnss.goog with the Broadcom PSDS server (heavily based off of a GrapheneOS patch)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0031-appops_reset_fix-1.patch"; #Revert "Null safe package name in AppOps writeState" (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_base/0031-appops_reset_fix-2.patch"; #appops: skip ops for invalid null package during state serialization (GrapheneOS)
|
||||
@ -210,11 +210,11 @@ if enterAndClear "frameworks/libs/systemui"; then
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_libs_systemui/0001-Icon_Cache.patch"; #Invalidate icon cache between OS releases (GrapheneOS)
|
||||
fi;
|
||||
|
||||
#if enterAndClear "frameworks/native"; then
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_native/0001-Sensors_Permission-1.patch"; #Require OTHER_SENSORS permission for sensors (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_native/0001-Sensors_Permission-2.patch"; #Protect step sensors with OTHER_SENSORS permission for targetSdk<29 apps (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_frameworks_native/0001-Sensors_Permission-3.patch"; #Exempt system processes from OTHER_SENSORS permission enforcement (GrapheneOS) #TODO: 21REBASE
|
||||
#fi;
|
||||
if enterAndClear "frameworks/native"; then
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_native/0001-Sensors_Permission-1.patch"; #Require OTHER_SENSORS permission for sensors (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_native/0001-Sensors_Permission-2.patch"; #Protect step sensors with OTHER_SENSORS permission for targetSdk<29 apps (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_frameworks_native/0001-Sensors_Permission-3.patch"; #Exempt system processes from OTHER_SENSORS permission enforcement (GrapheneOS)
|
||||
fi;
|
||||
|
||||
if [ "$DOS_DEBLOBBER_REMOVE_IMS" = true ]; then
|
||||
if enterAndClear "frameworks/opt/net/ims"; then
|
||||
@ -255,16 +255,12 @@ applyPatch "$DOS_PATCHES/android_hardware_qcom_audio/0001-Unused-sm8350.patch";
|
||||
fi;
|
||||
|
||||
if enterAndClear "libcore"; then
|
||||
#applyPatch "$DOS_PATCHES/android_libcore/0001-Network_Permission.patch"; #Don't throw SecurityException when INTERNET permission is revoked (GrapheneOS) #TODO: 21REBASE
|
||||
applyPatch "$DOS_PATCHES/android_libcore/0001-Network_Permission.patch"; #Don't throw SecurityException when INTERNET permission is revoked (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_libcore/0002-constify_JNINativeMethod.patch"; #Constify JNINativeMethod tables (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_libcore/0003-Exec_Based_Spawning-1.patch"; #Add exec-based spawning support (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_libcore/0003-Exec_Based_Spawning-2.patch";
|
||||
fi;
|
||||
|
||||
#if enterAndClear "lineage-sdk"; then
|
||||
#applyPatch "$DOS_PATCHES/android_lineage-sdk/0001-Private_DNS-Migration.patch"; #Migrate Private DNS preset modes to hostname-mode based (heavily based off of a CalyxOS patch) #TODO: 21REBASE
|
||||
#fi;
|
||||
|
||||
if enterAndClear "packages/apps/CellBroadcastReceiver"; then
|
||||
applyPatch "$DOS_PATCHES/android_packages_apps_CellBroadcastReceiver/0001-presidential_alert_toggle.patch"; #Allow toggling presidential alerts (GrapheneOS)
|
||||
fi;
|
||||
@ -315,7 +311,6 @@ applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0015-SUPL_Toggle.patch";
|
||||
applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0016-microG_Toggle.patch"; #Add a toggle for microG enablement (heavily based off of a GrapheneOS patch)
|
||||
applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0017-OpenEUICC_Toggle.patch"; #Add a toggle for OpenEUICC enablement (heavily based off of a GrapheneOS patch)
|
||||
if [ -d "$DOS_BUILD_BASE"/vendor/divested-carriersettings ]; then applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0018-CC2_Toggle.patch"; fi; #Add a toggle for CarrierConfig2 enablement (heavily based off of a GrapheneOS patch)
|
||||
#applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0018-disable_apps.patch"; #Add an ability to disable non-system apps from the "App info" screen (GrapheneOS) #TODO: 21REBASE
|
||||
fi;
|
||||
|
||||
if enterAndClear "packages/apps/SetupWizard"; then
|
||||
@ -339,12 +334,12 @@ applyPatch "$DOS_PATCHES/android_packages_inputmethods_LatinIME/0001-Voice.patch
|
||||
applyPatch "$DOS_PATCHES/android_packages_inputmethods_LatinIME/0002-Disable_Personalization.patch"; #Disable personalization dictionary by default (GrapheneOS)
|
||||
fi;
|
||||
|
||||
#if enterAndClear "packages/modules/Connectivity"; then
|
||||
#applyPatch "$DOS_PATCHES/android_packages_modules_Connectivity/0001-Network_Permission-1.patch"; #Enforce INTERNET permission per-uid instead of per-appId (GrapheneOS) # #TODO: 21REBASE XXX: PROBABLY BROKEN
|
||||
#applyPatch "$DOS_PATCHES/android_packages_modules_Connectivity/0001-Network_Permission-2.patch"; #Don't crash INTERNET-unaware apps that try to access NsdManager (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_packages_modules_Connectivity/0001-Network_Permission-3.patch"; #ConnectivityManager: pretend that network is down to INTERNET-unaware callers (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_packages_modules_Connectivity/0001-Network_Permission-4.patch"; #Fixup! don't crash INTERNET-unaware apps that try to access NsdManager (GrapheneOS) #TODO: 21REBASE
|
||||
#fi;
|
||||
if enterAndClear "packages/modules/Connectivity"; then
|
||||
applyPatch "$DOS_PATCHES/android_packages_modules_Connectivity/0001-Network_Permission-1.patch"; #Enforce INTERNET permission per-uid instead of per-appId (GrapheneOS) # XXX: PROBABLY BROKEN
|
||||
applyPatch "$DOS_PATCHES/android_packages_modules_Connectivity/0001-Network_Permission-2.patch"; #Don't crash INTERNET-unaware apps that try to access NsdManager (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_packages_modules_Connectivity/0001-Network_Permission-3.patch"; #ConnectivityManager: pretend that network is down to INTERNET-unaware callers (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_packages_modules_Connectivity/0001-Network_Permission-4.patch"; #Fixup! don't crash INTERNET-unaware apps that try to access NsdManager (GrapheneOS)
|
||||
fi;
|
||||
|
||||
if enterAndClear "packages/modules/DnsResolver"; then
|
||||
applyPatch "$DOS_PATCHES/android_packages_modules_DnsResolver/0001-Hosts_Cache.patch"; #DnsResolver: Sort and cache hosts file data for fast lookup (tdm)
|
||||
@ -358,8 +353,8 @@ applyPatch "$DOS_PATCHES/android_packages_modules_NetworkStack/0001-Random_MAC.p
|
||||
fi;
|
||||
|
||||
if enterAndClear "packages/modules/Permission"; then
|
||||
#applyPatch "$DOS_PATCHES/android_packages_modules_Permission/0004-Special_Permissions-1.patch"; #Add special handling for INTERNET/OTHER_SENSORS (GrapheneOS) #TODO: 21REBASE
|
||||
#applyPatch "$DOS_PATCHES/android_packages_modules_Permission/0004-Special_Permissions-2.patch"; #Fix usage UI summary for Network/Sensors (GrapheneOS) #TODO: 21REBASE
|
||||
applyPatch "$DOS_PATCHES/android_packages_modules_Permission/0004-Special_Permissions-1.patch"; #Add special handling for INTERNET/OTHER_SENSORS (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_packages_modules_Permission/0004-Special_Permissions-2.patch"; #Fix usage UI summary for Network/Sensors (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_packages_modules_Permission/0005-Browser_No_Location.patch"; #Stop auto-granting location to system browsers (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_packages_modules_Permission/0006-Location_Indicators.patch"; #SystemUI: Use new privacy indicators for location (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_packages_modules_Permission/0007-No_safety_center.patch"; #Disable Safety Center (GrapheneOS)
|
||||
|
Loading…
Reference in New Issue
Block a user