Οδηγός για την απόκρυψη της επίμονης ειδοποίησης στο Android O που δείχνει πότε εκτελείται μια εφαρμογή παρασκηνίου ή πότε εμφανίζεται μια επικάλυψη.
Ενημέρωση 25/8/17: Αυτός ο οδηγός είναι πλέον ξεπερασμένος, καθώς η Google διορθώνει τη μέθοδο που χρησιμοποιούμε για να αποκρύψει τη μόνιμη ειδοποίηση στο παρασκήνιο. Ωστόσο, ανακαλύψαμε μια άλλη λύση σε αυτό το ζήτημα και έχουμε γράψει ένα σύντομο σεμινάριο σχετικά με αυτό μπορείτε να βρείτε εδώ.
Το Android O θέλει να φέρει σημαντικές βελτιώσεις στο λειτουργικό σύστημα Android που όλοι γνωρίζουμε και αγαπάμε. Λειτουργία εικόνας σε εικόνα για τηλέφωνα, κανάλια ειδοποιήσεων, έξυπνη επιλογή κειμένου, υπηρεσίες αυτόματης συμπλήρωσης και πολλές, πολλές αλλαγές για να βελτιώσετε τη διάρκεια ζωής της μπαταρίας, την απόδοση και την ασφάλειά σας. Ένα χαρακτηριστικό που υποτίθεται ότι βοηθά τους χρήστες να επιλύσουν προβλήματα με τη διάρκεια ζωής της μπαταρίας και την απόδοση είναι οι περιορισμοί της διαδικασίας στο παρασκήνιο. Χωρίς να υπεισέλθω σε πολλές λεπτομέρειες, οι εφαρμογές στο Android O δεν μπορούν πλέον να αφυπνιστούν από το μανιφέστο τους σιωπηρούς δέκτες εκπομπής και δεν μπορούν πλέον να ξεκινήσουν υπηρεσίες παρασκηνίου χωρίς να περάσουν JobScheduler. Εάν μια εφαρμογή θέλει να ξεκινήσει μια υπηρεσία παρασκηνίου, πρέπει να ενημερώσει ρητά στον χρήστη ότι το κάνει δημοσιεύοντας μια ειδοποίηση. Ωστόσο, όταν μια εφαρμογή εκτελείται στο παρασκήνιο, το Android O τώρα φαίνεται να λειτουργεί
αλλο επίμονη ειδοποίηση που σας ενημερώνει ποιες εφαρμογές εκτελούνται. Αυτό συμβαίνει επίσης όταν μια εφαρμογή με το SYSTEM_ALERT_WINDOW άδεια (όπως η δημοφιλής Λυκόφως app) εμφανίζει επί του παρόντος μια επικάλυψη.Αν και αυτές οι ειδοποιήσεις ελαχιστοποιούνται από προεπιλογή, δεν μπορούν να παραβλεφθούν από τον χρήστη ή να αποκλειστούν μόνιμα στις Ρυθμίσεις. Αυτή η συμπεριφορά είναι πολύ ενοχλητική για πολλούς χρήστες και ελπίζω σοβαρά η Google να μας δώσει έναν τρόπο να απενεργοποιήσουμε αυτήν την ειδοποίηση στην τελική έκδοση Android O/Android 8.0. Ωστόσο, αν δεν το κάνουν, εκεί είναι ακόμα ένας τρόπος για να μόνιμη απόκρυψη της ειδοποίησης για τις επίμονες εφαρμογές παρασκηνίου. Θα παρουσιάσω πώς να το κάνετε αυτό σε έναν οδηγό βήμα προς βήμα, ακολουθούμενο από μια εξήγηση του πώς λειτουργεί καθώς και σημαντικές προειδοποιήσεις.
Απαιτήσεις:
- Android O
- Εγκαταστήστε τα προγράμματα οδήγησης USB για το συγκεκριμένο τηλέφωνό σας εάν χρησιμοποιείτε Windows (μπορείτε να τα βρείτε εδώ).
- Κατεβάστε το Δυαδικό ADB για το συγκεκριμένο λειτουργικό σας σύστημα (Windows, Μακ, Linux). Αυτοί οι σύνδεσμοι θα οδηγούν πάντα στην πιο πρόσφατη έκδοση του δυαδικού αρχείου, ώστε να μην χρειάζεται να ψάχνετε στο δίκτυο αναζητώντας την πιο πρόσφατη.
- Εξαγάγετε τα περιεχόμενα του αρχείου ZIP που κατεβάσατε σε έναν εύκολα προσβάσιμο φάκελο στον υπολογιστή σας (όπως στον φάκελο Λήψεις).
- Μεταβείτε στην εφαρμογή Ρυθμίσεις στο τηλέφωνό σας και πατήστε την επιλογή "Σχετικά με το τηλέφωνο".
- Βρείτε τον Αριθμό κατασκευής και πατήστε τον 7 φορές για να ενεργοποιήσετε τη Λειτουργία προγραμματιστή. Θα δείτε ένα αναδυόμενο παράθυρο μόλις ενεργοποιηθεί.
- Επιστρέψτε στο κύριο μενού Ρυθμίσεις και εισαγάγετε τις Επιλογές προγραμματιστή για να ενεργοποιήσετε τη λειτουργία εντοπισμού σφαλμάτων USB.
- Συνδέστε το τηλέφωνό σας στον υπολογιστή και σύρετε προς τα κάτω τον πίνακα ειδοποιήσεων για να αλλάξετε τη λειτουργία USB από «μόνο φόρτιση» σε λειτουργία «μεταφορά αρχείων (MTP)». Αυτό μπορεί να μην είναι απαραίτητο για το τηλέφωνό σας.
- Στον υπολογιστή σας, περιηγηθείτε στον κατάλογο από τον οποίο εξαγάξατε το δυαδικό ADB.
- Εκκινήστε μια γραμμή εντολών/τερματικό σε αυτόν τον κατάλογο ADB. Για χρήστες Windows, αυτό μπορεί να γίνει με ένα Shift+Δεξί κλικ και στη συνέχεια επιλέγοντας την επιλογή «άνοιγμα γραμμής εντολών εδώ».
- Μόλις βρεθείτε στη γραμμή εντολών ή στο περιβάλλον τερματικού, πληκτρολογήστε την ακόλουθη εντολή:
adb devices
- Αυτό θα ξεκινήσει τον δαίμονα ADB. Εάν αυτή είναι η πρώτη φορά που εκτελείτε το ADB, θα δείτε επίσης ένα μήνυμα στο τηλέφωνό σας που σας ζητά να εξουσιοδοτήσετε μια σύνδεση.
- Τώρα εκτελέστε ξανά την εντολή adb devices από το βήμα 10 και η γραμμή εντολών/τερματικό θα εκτυπώσει τον σειριακό αριθμό της συσκευής σας. Εάν συμβαίνει, τότε είστε έτοιμοι να προχωρήσετε. Εάν όχι, τότε τα προγράμματα οδήγησης USB είναι πιθανό να μην έχουν εγκατασταθεί σωστά.
- Επιστρέψτε στη γραμμή εντολών και πληκτρολογήστε την ακόλουθη εντολή:
adb shell
- Τώρα εκτελέστε την ακόλουθη εντολή:
cmd appops set android POST_NOTIFICATION ignore
- Δεν θα λάβετε μήνυμα επιτυχίας ή οτιδήποτε άλλο, αλλά εφόσον δεν βλέπετε κάποιο σφάλμα θα έπρεπε να έχει λειτουργήσει. Τώρα απλά επανεκκινήστε το τηλέφωνό σας!
Ναι, συνειδητοποιώ ότι αυτές είναι εικόνες οθόνης τηλεφώνου και όχι στιγμιότυπα οθόνης. Δεν έχω ο ίδιος συσκευή συμβατή με Android O, γι' αυτό ζήτησα από την TK να μου στείλει εικόνες.
- Εάν θέλετε να επαναφέρετε αυτήν την εντολή, εισαγάγετε τη στη γραμμή εντολών:
cmd appops set android POST_NOTIFICATION allow
Πως δουλεύει
Χρησιμοποιώντας την κρυφή διεπαφή γραμμής εντολών για το App Ops, το σύστημα διαχείρισης αδειών που αντιμετωπίζει ο χρήστης του Android, μπορούμε να περιορίσουμε την άδεια POST_NOTIFICATION από το πακέτο "android". (Σημείωση: το ρυθμίζουμε σε "αγνοεί" αντί για "άρνηση", επειδή η "άρνηση" θα μπορούσε να προκαλέσει ορισμένα σφάλματα.) Βρήκα αυτήν την άδεια κοιτάζοντας τον σχετικό πηγαίο κώδικα για AppOpsManager, το οποίο παραθέτει όλα τα πιθανά δικαιώματα που μπορούν να παραχωρηθούν/ανακληθούν, πολλά από τα οποία δεν είναι προσβάσιμα στις ρυθμίσεις Android. Το πακέτο "android" αναφέρεται στην πραγματικότητα στο "Android System" AKA Framework-res.apk, το οποίο είναι υπεύθυνο για την επίμονη ειδοποίηση από την οποία προσπαθούμε να απαλλαγούμε.
Με την ουσιαστική ανάκληση της άδειας POST_NOTIFICATION του συστήματος Android, δεν μπορεί πλέον να εμφανίζει ειδοποίηση! Ακούγεται αρκετά απλό, σωστά; Δυστυχώς, υπάρχει μια προειδοποίηση που πρέπει να γνωρίζετε. Το "Σύστημα Android" είναι υπεύθυνο για περισσότερα από αυτήν την ειδοποίηση, επομένως τυχόν άλλες ειδοποιήσεις που μπορεί να δημοσιεύει δεν θα εμφανίζονται πλέον. Αυτό μπορεί να περιλαμβάνει την ειδοποίηση λειτουργίας USB (η οποία μπορεί ακόμα να αλλάξει μέσω της ρύθμισης στις Επιλογές προγραμματιστή) καθώς και κάποια άλλα πράγματα.
Αν και αυτό είναι ένα αρκετά δραστικό μέτρο που πρέπει να λάβουμε από την πλευρά μας, είναι προς το παρόν ο μόνος τρόπος για να αποκρύψετε αυτήν την ειδοποίηση από την ριζοβολία του τηλεφώνου σας και την τροποποίηση του ίδιου του πλαισίου, κάτι που προφανώς δεν είναι πρόθυμοι ή δεν μπορούν πολλοί χρήστες να κάνω. Ελπίζω ειλικρινά ότι η Google προσφέρει έναν τρόπο απόκρυψης αυτής της ειδοποίησης σε μια μελλοντική έκδοση του Android O ή ακόμα καλύτερα να αφαιρέσει εντελώς αυτήν την ειδοποίηση. Η Google είναι κατανοητό ότι θέλει να βελτιώσει την εμπειρία χρήστη ειδοποιώντας τους χρήστες όταν μια εφαρμογή εκτελείται στο παρασκήνιο ο χρήστης μπορεί να μην το γνωρίζει, αλλά η μέθοδος που επέλεξε είναι ενοχλητική για όσους από εμάς γνωρίζουμε τι γίνεται για κάθε εφαρμογή που είμαστε χρησιμοποιώντας.