Komunikat „Wykryto nakładkę ekranu” systemu Android, jeśli użytkownik próbuje udzielić pozwolenia, gdy wyświetla się powiadomienie

80

Mam Androida Marshmallow na Nexusie 6. Próbuję rozwiązać następujący problem:

Jeśli użytkownik próbuje udzielić pozwolenia, gdy wyświetlane jest powiadomienie, zostanie wyświetlony komunikat „Wykryto nakładkę ekranu”, a okno dialogowe Poproś o pozwolenie znika - oczywiście aplikacja nie uzyska żądanego pozwolenia. (Sprawdź zrzut ekranu)

Próbowałem rozwiązać ten problem, dodając uprawnienie „DRAW OVER OTHER APPS” - android.permission.SYSTEM_ALERT_WINDOW do manifestu, ale bez powodzenia.

PS: Jestem pewien, że problem jest spowodowany powiadomieniem. Nie mam zainstalowanej żadnej aplikacji, która nakładałaby się na inne aplikacje. Wyłączyłem nawet wszystkie aplikacje z uprawnieniem „Rysuj na innych aplikacjach” w ustawieniach. Nie pomogło..

Czy ktoś zna rozwiązanie tego problemu?

wprowadź opis obrazu tutaj

Alexi Akl
źródło
@gsgsgs Nie mam aplikacji, która nakładałaby się na inne aplikacje. W każdym razie wyłączyłem wszystkie aplikacje z uprawnieniem „Rysuj nad innymi aplikacjami” w ustawieniach. Nie pomogło. Jak wspomniałem w pytaniu, problem jest spowodowany powiadomieniem, a nie aplikacją.
Alexi Akl
2
To nie jest coś, co możesz „naprawić” w kodzie. Jest to błąd w systemie Android (lub w najlepszym przypadku słabo przemyślany komunikat o błędzie) i mam nadzieję, że Google powinien go naprawić w przyszłej wersji.
Naucz się OpenGL ES
3
Przydarza mi się, gdy komunikator Facebook jest otwarty (w tle)
Tim
1
Dzieje się tak również w przypadku wznoszenia toastu.
GLee

Odpowiedzi:

75

W sytuacji, na którą się natknąłem, sam powodowałem problem. Wynikało to z użycia a Toastdo wyświetlenia informacji użytkownikowi w tym samym czasie, gdy prosiłem o pozwolenie. Obie te czynności razem powodują tego typu błąd.

Inne odpowiedzi mogą rozwiązać problem innej osoby. Chciałem jednak zauważyć, że należy zachować ostrożność podczas tworzenia własnych błędów nakładek. Uważaj, aby nałożyć coś w widoku, jednocześnie prosząc o pozwolenie.

Jay Snayder
źródło
4
Napotkałem ten sam problem, usunąłem tosta i przestaje się pojawiać.
shijin
1
W obliczu tego samego. Usunięto Toast i działałem jak urok
Dennis Anderson
1
Dokładnie ten sam problem rozwiązany za pomocą tego rozwiązania. Pokazałem toastową wiadomość tuż przed pytaniem o pozwolenie.
Sandoval0992
To rozwiązało dla mnie. Używał Toastdo debugowania. Może to być również główny powód, dla którego ludzie to mają.
Minoru
Toast to display information to the user at the same time that I was asking for permission
Pomogła
8

Odinstaluj aplikację Clean Master. Odinstalowałem go i problem został rozwiązany

Hojjat
źródło
2
Próbowałem tego, ale nie pomogło. Wręcz przeciwnie, spowodowało to niepotrzebną niepotrzebną instalację.
user3251882
1
Próbowałem to, że nie pomocy. Spowodowało to konieczną instalację un. Dzięki! (Sony Xperia Z3)
Justin,
1
Odinstalowanie nie powinno być rozwiązaniem. Sprawdź stackoverflow.com/a/39826828/2724626, aby uzyskać poprawną odpowiedź.
akshay
W moim przypadku nie było Facebook Messengerpotrzeby odinstalowywania, wystarczy wymusić zatrzymanie.
Hamzeh Soboh
5

Ten problem pojawia się z powodu niektórych aplikacji winnych, takich jak Twilight, cleaner-master, drupe itp.

Aby rozwiązać ten problem, musisz wyłączyć nakładkę ekranu dla tych aplikacji sprawców.

mam moto g4 plus i tak rozwiązuję ten problem

Idź do Ustawienia -> Wybierz aplikacje ---> ponownie wybierz ikonę ustawień w Aplikacjach ---> wybierz rysowanie nad innymi aplikacjami ---> i wyłącz aplikacje winowajców, które mają problemy z innymi aplikacjami.

To, co zrobiłem, to sprawdzenie każdej aplikacji, wyłączając to uprawnienie i próbując uruchomić moją aplikację, i znalazłem jedną aplikację z tą kłopotliwą nakładką dla innych aplikacji, więc na koniec wyłączyłem tylko tę aplikację.

Zrzuty ekranu:

Wybierz Aplikacje wybierz ustawienie konfiguracji

wybierz rysuj nad innymi aplikacjamiwyłącz aplikacje winowajców

Sagar Chavada
źródło
MobileGoConnector i Mobile Go Not Show in My Mobile
Keshav Gera
Co powinienem teraz zrobić
Keshav Gera
1
@KeshavGera to nigdy nie będzie .. bcz jego nie wewnętrzna aplikacja, zainstalowałem ją zewnętrznie. dla ciebie będzie to inna aplikacja, która powoduje problem z nakładką .. w moim przypadku te dwie aplikacje powodują problem z nakładką.
Sagar Chavada
@KeshavGera, powinieneś sprawdzić każdą aplikację, wyłączając uprawnienia do nakładania ..
Sagar Chavada,
3

Mam spostrzeżenia z wielu odpowiedzi tutaj i innych forów.

Konsolidacja, jak pozbyłem się problemu:

  1. Iść do Ustawienia> Aplikacje> (Twoja aplikacja, której dotyczy problem)
  2. Naciśnij przycisk zasilania, aż okno wyłączania, restartu, pojawi się tryb samolotowy
  3. Przytrzymaj opcję wyłączania
  4. Wybierz opcję Uruchom ponownie w trybie awaryjnym
  5. Idź do ustawień> aplikacje> (Twoja aplikacja, której dotyczy problem)
  6. Wybierz dowolne uprawnienia
  7. Po aktualizacji Androida M problemy mogą pojawić się w aplikacjach takich jak Messenger, Whatsapp, Prisma itp.

Daj mi znać, jeśli masz jakieś problemy.

Uwaga: mam telefon komórkowy One plus One.

user3251882
źródło
1
Ale my, jako programiści, chcemy, aby rozwiązanie było rozwiązywane przez kodowanie, a nie za pomocą tego podejścia (ponowne uruchomienie w trybie awaryjnym).
Rakesh Yadav
Masz rację Rakesh, to nie jest idealne rozwiązanie. Ale do tej pory nie mam innego rozwiązania, które działałoby na mój telefon komórkowy.
user3251882
Pracował dla mnie od teraz !! Miejmy nadzieję, że Google naprawi to w wydaniach Nougat +.
Surendra Kumar
1

Właśnie usunąłem aplikację i wyłączyłem Nexusa 6P. Po ponownym włączeniu ponownie zainstalowałem aplikację i nie wyświetlały się już okna dialogowe „nakładki ekranu” podczas nadawania aplikacji uprawnień.

Studentka
źródło
1
Jest to bliższe komentarzowi niż odpowiedzi. Możesz nieco rozszerzyć, dlaczego to działa. Jak odpowiedzieć
AgataB,
1
@AgataB Jestem nowy w StackOverflow. Nie miałem wtedy prawa do komentowania i nie wiedziałem, dlaczego wyłączenie telefonu i odinstalowanie aplikacji działa, po prostu pomyślałem, że to może pomóc.
Student z
1

To wyskakujące okienko jest spowodowane przez uprawnienie manifest.PERMISSION.SYSTEM_ALERT_WINDOW zadeklarowane w manifeście.

Istnieją 3 kategorie uprawnień, o których deweloper musi wiedzieć:

Normalne pozwolenie - nic z nimi nie rób, po prostu zadeklaruj w Manifeście

Uprawnienia podatne na atak - zadeklaruj w Manifest i poproś o pozwolenie za pierwszym razem. Można je zmienić w ustawieniach systemu.

Powyższe niebezpieczne uprawnienia: SYSTEM_ALERT_WINDOW i WRITE_SETTINGS należą do tej kategorii. Muszą być przyznane, ale nie są widoczne w ustawieniach systemu. Aby o to poprosić, nie używasz standardowego sposobu (int checkSelfPermission (uprawnienie String)), ale musisz odpowiednio sprawdzić Settings.canDrawOverlays () lub Settings.System.canWrite (), a jeśli tego nie zrobisz, otrzymasz wyjątek, taki jak

Nie można dodać okna android.view.ViewRootImpl$W@1de28ad - odmowa uprawnień dla tego typu okna

1-Poproś o to pozwolenie samodzielnie w swoim kodzie, tak jak podano poniżej:

public class MainActivity extends AppCompatActivity {

public final static int REQUEST_CODE = 10000;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if (checkDrawOverlayPermission()) {
          Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
    }
}

public boolean checkDrawOverlayPermission() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        return true;
    }
    if (!Settings.canDrawOverlays(this)) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
            Uri.parse("package:" + getPackageName()));
        startActivityForResult(intent, REQUEST_CODE);
        return false;
    } else {
        return true;
    }
}

@Override
@TargetApi(Build.VERSION_CODES.M)
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE) {
        if (Settings.canDrawOverlays(this)) {
              Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
        }
    }
}
Ghulam Qadir
źródło
0

Musisz wyłączyć nakładkę dla wszystkich aplikacji, które widzisz na liście. Tylko w ten sposób możesz modyfikować uprawnienia w aplikacji, której potrzebujesz. Zrobiłem to w trybie awaryjnym i zadziałało. Na koniec zrestartowałem telefon i teraz działa dobrze.

elrumeromayor
źródło
0

Zaktualizowałem moją Sony Xperię Z3 (Dual Sim) do Androida 6.0.1 (Marsmallow). Mam problemy z nakładkami na ekranie. U mnie nie mam Clean Master, Du Speed ​​ani Du Booster (tak jak rozwiązania, które przeczytałem).

Więc rozwiązałem mój, szukając aplikacji do nakładania ekranu.

Aplikacja nakładająca się na ekran to aplikacja, za pomocą której można uzyskać dostęp do innych aplikacji na głównym ekranie głównym bez opuszczania ekranu głównego. Dla mnie aplikacja Screen Overlay w mojej sytuacji była OMNI SWIPE . Jeśli więc napotykasz ten problem, musisz się uspokoić i sprawdzić, która aplikacja pasuje do definicji aplikacji do nakładania ekranu.

znajdź aplikację i odinstaluj, a następnie uruchom ponownie telefon.

Właśnie skończyłem to robić i dobrze się bawię przy telefonie

Powodzenia

Habdulwahab
źródło
0

Dopóki Android 6.x jest wadliwy na niektórych urządzeniach, na których ten „alert nakładki” jest wyświetlany bez żadnego powodu (na 2 do 5% urządzeń według moich danych analitycznych), najlepszym rozwiązaniem jest uniknięcie całego procesu uzyskiwania uprawnień przez definiowanie targetSdk do 22.

Uważaj, aby nie można było obniżyć wersji docelowego zestawu SDK do nowej wersji, ponieważ spowoduje to błąd INSTALL_FAILED_PERMISSION_DOWNGRADE, gdy aktualizacje użytkownika wymagają odinstalowania / zainstalowania aplikacji.

Regis_AG
źródło
0

rozwiązaniem jest

usuń wiadomości Toast z metody onRequestPermissionsResult

Sai Gopi Me
źródło
0

Dzieje się tak, gdy zezwolisz na nakładanie złośliwych aplikacji. Przejdź do ustawień nakładki i wyłącz funkcję nakładki we wszystkich aplikacjach, które nie należą do Google, a będziesz gotowy.

Gordon Android Javalist
źródło
-1

Mam ten problem podczas instalowania nowej aplikacji. Sposobem na obejście tego problemu jest ręczne włączenie uprawnień dla nowo zainstalowanej aplikacji (przed uruchomieniem aplikacji). Jestem prawie pewien, że jest to problem w szczególności z urządzeniami z Androidem i Samsungami. Mam nadzieję że to pomoże

user2288580
źródło
-4
  1. Usuń aplikacje z nakładką ekranu, takie jak zabezpieczenia CM, Clean Master itp.

  2. W razie potrzeby usuń nawet i wypróbuj komunikator (aplikacja FB).

Omkar Nibandhe
źródło
Próbowałem tego, ale nie pomogło. Wręcz przeciwnie, spowodowało to niepotrzebną niepotrzebną instalację.
user3251882
Czasami jest powód, dla którego aplikacja została zainstalowana w pierwszej kolejności.
Alen Siljak
Nie. Wystarczy ponownie zainstalować aplikację Clean Master i / lub aplikację Facebook Messenger. To rozwiązało problem.
Omkar Nibandhe