Skip to content

Enable Repair Mode #87

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 304 commits into from
Closed

Conversation

ThatOneCalculator
Copy link

muhomorr and others added 30 commits December 6, 2024 07:13
This change is required by Settings app commits that add extra items to "All files access" and
"Install unknown apps" special access permission screens.
Previously I set this to null, but this can cause a NPE
Ported from 11, 12 moved the isLogoutEnabled boolean to ActiveAdmin.java
Android 12's privacy dashboard shows permission usage timelines for
location, camera, and microphone. However, there's no reason to limit it
to those specific permissions; all the infrastructure is in place for
other permissions.

To enable the usage timeline for more permissions, keep discrete app op
history for all permission groups shown in the privacy dashboard. The
list of permission group -> app op mappings was obtained from
AppOpsManager.RUNTIME_AND_APPOP_PERMISSION_OPS with a few additional ops
from PrivacyItemController, and each op was resolved to its respective
enum ordinal from frameworks/proto_logging/stats/enums/app/enums.proto.

Change-Id: I6b1c476ea4c0edbc0b3fdf2e3e5cfcb11da77e33
…tivity. (GrapheneOS#2)

This is the partner commit to the addition of an option in Settings for
the same feature. This config can be enabled by an overlay for devices
that support increased touch sensitivity (otherwise known as "Glove
Mode") via the persist.vendor.touch_sensitivity_mode system property.

Signed-off-by: Diab Neiroukh <[email protected]>
India, Japan and Korea have either industry standards or regulations for
phones sold within the country enforcing camera sounds. It's trivially
bypassed by taking out the SIM card, using video, using a headset or
turning off the volume. It doesn't make sense for us to enforce this.
Generated with Android 12 Extensions v9.0.0-test2 [1] using #1565C0
(light link accent color from GrapheneOS website) as a seed color,
with all other settings left at themelib [2] and colorkt [3] defaults.

[1] https://github.com/kdrag0n/android12-extensions/
[2] https://github.com/ProtonAOSP/android_external_themelib
[3] https://github.com/kdrag0n/colorkt
This switches to secure-by-default instead of crash-by-default for API
31 to work around apps which have updated to API 31 without specifying
either FLAG_MUTABLE or FLAG_IMMUTABLE for PendingIntents. If the app
ends up needing the FLAG_MUTABLE behavior, it may crash later, but it
should still be obvious why it happened.

There are many apps with outdated Play services client libraries lacking
support for Android 12 which are nonetheless targeting API 31 or higher
and will crash in certain situations. Google Play services will ask the
client library to request runtime permissions from the user on behalf of
it when it thinks that they're required for an operation that's
requested. The older client libraries will cause a crash in the app by
trying to create a PendingIntent with no FLAG_MUTABLE or FLAG_IMMUTABLE
specified. This is a much more common issue on GrapheneOS since Play
services is a regular user installed app with no special access or
privileges, and starts without any standard runtime permissions granted
to it.

Ported from 13: 94363af7c45a
Co-authored-by: Dmitry Muhomor <[email protected]>
It doesn't make sense to show a generic Android letter version icon for
USB.

Change-Id: I0441fc76fa8beab16675ac91e92e9b0490044dec
This change makes sharesheet way more useful by increasing the amount of
visible ranked apps.

Change-Id: Ic092f1d1784259c9f3c0870eda1dd1ae8544c697
muhomorr and others added 10 commits December 6, 2024 22:15
… state"

This reverts commit 62e8a24837208726508a3785f09ca2a18f239bcc.
onBind() is always called immediately after onCreate() for these services. onBind() is called from
binder threads, it's not thread-safe to perform lazy initialization there without locking.
Location providers aren't expected to be removed at runtime by the apps and by the OS itself.

Removing a location provider leads to app and system_server crashes when they attempt to use the
previously existing provider.

Upstream removes location providers in just one case: when a test (mock) location provider is added
and then removed for a non-existing location provider.
@thestinger
Copy link
Member

This probably can't be done without adding support for it elsewhere. Have you tested a build with this?

@ThatOneCalculator
Copy link
Author

ThatOneCalculator commented Dec 22, 2024

I can't test it without it being on some sort of alpha build, since I'd need to reset my phone anyways, and I'm sending it to repair tomorrow since I cracked my screen really bad. Apologies for the hasty PR, I'm crashing out rn :(

@ThatOneCalculator
Copy link
Author

But according to this article, it should work out of the box on AOSP?

According to Rahman, support for repair mode was recently merged into the Android Open Source Project (AOSP). AOSP provides the information and source code needed to create custom variants of the Android OS. The configuration enabling support for repair mode is disabled by default because some smartphones may already have a similar feature.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Include repair mode in GOS