Verberg aanhoudende meldingen voor achtergrondapps en overlays in Android O

Tutorial over het verbergen van de permanente melding in Android O die laat zien wanneer een achtergrondapp actief is of wanneer een overlay wordt weergegeven.

Update 25/08/17: Deze tutorial is nu verouderd, omdat Google de methode heeft gepatcht die we gebruiken om de aanhoudende melding op de achtergrond te verbergen. We hebben echter een andere oplossing voor dit probleem ontdekt en hebben er een korte tutorial over geschreven vind je hier.

Android O wil grote verbeteringen aanbrengen in het Android-besturingssysteem dat we allemaal kennen en waar we van houden. Picture-in-picture-modus voor telefoons, meldingskanalen, slimme tekstselectie, services voor automatisch aanvullen en onder de motorkap heel veel veranderingen om de levensduur, prestaties en beveiliging van uw batterij te verbeteren. Een functie die gebruikers zou moeten helpen problemen met de levensduur en prestaties van de batterij op te lossen, zijn beperkingen van achtergrondprocessen. Zonder al te veel in detail te treden, kunnen apps in Android O niet langer worden gewekt uit hun manifest-geregistreerde impliciete uitzendingsontvangers en ze kunnen niet langer achtergronddiensten starten zonder er doorheen te gaan Jobplanner. Als een app een achtergrondservice wil starten, moet hij de gebruiker daar expliciet van op de hoogte stellen door een melding te plaatsen. Wanneer een app echter op de achtergrond draait, lijkt Android O nu schijnbaar door te gaan 

een andere aanhoudende melding die u vertelt welke apps actief zijn. Dit gebeurt ook wanneer een app met de SYSTEEM_ALERT_WINDOW toestemming (zoals de popular Schemering app) geeft momenteel een overlay weer.

Android O Persistente melding voor achtergrond- en overlay-apps. Credits: Ben Schoon \\ 9to5Google

Hoewel deze meldingen standaard worden geminimaliseerd, kunnen ze niet door de gebruiker worden afgewezen of permanent worden geblokkeerd in Instellingen. Dit gedrag is voor veel gebruikers erg vervelend en ik hoop echt dat Google ons een manier biedt om deze melding uit te schakelen in de definitieve versie van Android O/Android 8.0. Maar als ze dat niet doen, daar is nog steeds een manier om verberg permanent de melding van permanente achtergrondapps. Ik zal in een stapsgewijze handleiding laten zien hoe u dit kunt doen, gevolgd door een uitleg van hoe het werkt en belangrijke kanttekeningen.


Vereisten:

  • Android O
  1. Installeer de USB-stuurprogramma's voor uw specifieke telefoon als u Windows gebruikt (deze kunt u vinden hier).
  2. Download de ADB binair voor uw specifieke besturingssysteem (ramen, Mac, Linux). Deze links verwijzen altijd naar de nieuwste versie van het binaire bestand, zodat u niet het internet hoeft af te speuren op zoek naar de nieuwste versie.
  3. Pak de inhoud van het ZIP-bestand dat u hebt gedownload uit in een gemakkelijk toegankelijke map op uw pc (zoals in de map Downloads).
  4. Ga naar de app Instellingen op uw telefoon en tik op de optie ‘Over de telefoon’.
  5. Zoek het buildnummer en tik er zeven keer op om de ontwikkelaarsmodus in te schakelen. Je ziet een pop-up zodra deze is ingeschakeld.
  6. Ga terug naar het hoofdmenu Instellingen en voer Ontwikkelaaropties in zodat u de USB-foutopsporingsmodus kunt inschakelen.
  7. Sluit uw telefoon aan op de pc en veeg naar beneden via uw meldingenpaneel om de USB-modus te wijzigen van 'alleen opladen' naar 'bestandsoverdracht (MTP)'. Voor uw telefoon is dit wellicht niet nodig.
  8. Blader op uw pc naar de map waar u het ADB-binaire bestand hebt uitgepakt.
  9. Start een opdrachtprompt/terminal in deze ADB-map. Voor Windows-gebruikers kan dit worden gedaan door Shift+Rechts te klikken en vervolgens de optie “open opdrachtprompt hier” te selecteren.
  10. Zodra u zich in de opdrachtprompt- of terminalomgeving bevindt, voert u de volgende opdracht in: adb devices
  11. Hiermee wordt de ADB-daemon gestart. Als dit de eerste keer is dat u ADB gebruikt, ziet u ook een prompt op uw telefoon waarin u wordt gevraagd een verbinding te autoriseren.
  12. Voer nu de opdracht adb devices opnieuw uit vanaf stap 10, en de opdrachtprompt/terminal zal het serienummer van uw apparaat afdrukken. Als dat zo is, ben je klaar om verder te gaan. Als dit niet het geval is, zijn de USB-stuurprogramma's waarschijnlijk niet correct geïnstalleerd.
  13. Ga terug naar de opdrachtprompt en voer de volgende opdracht in: adb shell
  14. Voer nu het volgende commando uit: cmd appops set android POST_NOTIFICATION ignore
  15. Je krijgt geen succesbericht of iets dergelijks, maar zolang je geen fout ziet, zou het moeten werken. Start nu gewoon uw telefoon opnieuw op!

    Ja, ik realiseer me dat dit afbeeldingen zijn van een telefoonscherm en geen schermafbeeldingen. Ik heb zelf geen Android O-compatibel apparaat, dus ik heb TK gevraagd mij afbeeldingen te sturen.

  16. Als u deze opdracht wilt terugdraaien, voert u dit in de opdrachtprompt in: cmd appops set android POST_NOTIFICATION allow

Hoe het werkt

Met behulp van de verborgen opdrachtregelinterface voor App Ops, het gebruikersgerichte toestemmingsbeheersysteem van Android, kunnen we de POST_NOTIFICATION-machtiging van het "android"-pakket beperken. (Opmerking: we stellen het in op 'negeren' in plaats van op 'weigeren', omdat 'weigeren' enkele fouten kan veroorzaken.) Ik heb deze toestemming gevonden door naar de relevante broncode te kijken voor AppOpsManager, waarin alle mogelijke machtigingen worden vermeld die kunnen worden verleend/ingetrokken, waarvan er vele niet toegankelijk zijn in de Android-instellingen. Het "android" -pakket verwijst eigenlijk naar "Android System" AKA framework-res.apk, dat verantwoordelijk is voor de aanhoudende melding waar we vanaf proberen te komen.

Door feitelijk de POST_NOTIFICATION-toestemming van het Android-systeem in te trekken, kan het niet langer een melding weergeven! Klinkt vrij eenvoudig, toch? Helaas is er een voorbehoud waar u rekening mee moet houden. "Android-systeem" is verantwoordelijk voor meer dan alleen deze melding, dus eventuele andere meldingen die het plaatst, worden niet langer weergegeven. Dit kan de USB-modusmelding omvatten (die nog steeds kan worden gewijzigd via de instelling in Ontwikkelaarsopties) en enkele andere dingen.

Hoewel dit een behoorlijk drastische maatregel van onze kant is, is dit momenteel de enige manier om deze melding te verbergen van het rooten van je telefoon en het aanpassen van het raamwerk zelf, wat duidelijk iets is dat niet veel gebruikers willen of kunnen Te doen. Ik hoop oprecht dat Google een manier biedt om deze melding in een toekomstige release van Android O te verbergen, of nog beter om deze melding geheel te verwijderen. Google wil begrijpelijkerwijs de gebruikerservaring verbeteren door gebruikers op de hoogte te stellen wanneer een app op de achtergrond draait de gebruiker is zich er misschien niet van bewust, maar de methode die ze hebben gekozen is vervelend voor degenen onder ons die weten hoe het zit met elke app die we hebben gebruik makend van.