Android VPN onay dokunuşunu yok sayıyor mu? Önce katmanı denetleyin
Dokunuşu kabul etmeyen bir onay düğmesi genellikle yerel bir dokunma engelidir, sunucu veya hesap arızası değildir. Katmanı kaldırın ve korumayı sürdürün.
VPN onay düğmesine dokunuyorsunuz ve iletişim kutusu tepki vermiyor. Doğal sonuç VPN uygulamasının veya sunucunun bozuk olduğudur, bu yüzden insanlar parolaları sıfırlar, DNS değiştirir veya istemciyi yeniden yükler. Olağan durumda bunların hiçbiri arızaya dokunmaz, çünkü Android bir engelin ardından gelen dokunuşları atar ve VPN onay ekranı tam olarak bu korumayı alan hassas onay istemlerinden biridir. Dokunuş hiçbir zaman düğmeye ulaşmaz.
Koruma aslında neyi reddediyor
Android hassas etkileşimleri tapjacking'e karşı korur; burada başka bir pencere bir iletişim kutusunun üzerine oturur ve ya dokunuşu çalar ya da onu belirsizleştirir. Bir görünüm View.setFilterTouchesWhenObscured ile buna katılır ve başka bir pencere onu kısmen veya tamamen örtüyor olarak işaretlendiğinde olay MotionEvent.FLAG_WINDOW_IS_OBSCURED taşıyarak gelir. Bu olduğunda olay yanlış yere teslim edilmek yerine atılır. Android 12 (API 31) aynı korumayı sistem onay yüzeylerinde güvenilmeyen dokunuşları engelleyerek genişletti; bu yüzden onay iletişim kutusu, diğer uygulamaların hâlâ kabul edeceği bir katmandan gelen dokunuşu reddedebilir.
Üç şey düzenli olarak engel üretir: diğer uygulamaların üzerinde gösterme iznine sahip bir uygulama, içerik çizen bir erişilebilirlik hizmeti ve bir ekran kaydediciden veya filtre aracından gelen kayan bir widget. Bazı üretici ekran özellikleri kendi katmanlarını da ekler; bu yüzden aynı iletişim kutusu aynı Android sürümünü çalıştıran iki telefonda farklı davranabilir. Kısmen örten bir pencere FLAG_WINDOW_IS_PARTIALLY_OBSCURED ayarlar ve dokunuş düğme onu görmeden önce atılır. Bu ekranın özelliğidir, ağın değil. Dokunuş atıldığı anda VPN sunucusuna hiçbir şey gönderilmemiştir, bu yüzden sunucu tarafındaki hiçbir değişiklik sonucu etkileyemez.
Ölü dokunuşu başarısız bağlantıdan ayırın
Bu ayrım tüm tanıdır ve on saniye sürer. Dokunuş yok sayılırsa ve iletişim kutusu tam olarak aynı kalırsa, engel yereldir. İletişim kutusu kapanır ve ardından bir hata görünürse, onay kabul edilmiştir ve VPN uygulamasının kendi olay bilgilerini gerektiren başka bir aşamaya geçmişsinizdir.
İstekte bulunan uygulamanın bir bağlantı deneyip denemediğini kontrol ederek yerel okumayı doğrulayabilirsiniz. Onay iletişim kutusu ekrandayken hiçbir zaman el sıkışma denemesi kaydetmeyen bir istemci ağa ulaşmamıştır.
adb shell cmd appops get com.example.vpn SYSTEM_ALERT_WINDOW
adb shell settings get secure enabled_accessibility_servicesKatman izninin kimde olduğunu ve hangi erişilebilirlik hizmetlerinin açık olduğunu listeleyin, sonra bunları çalışanlarla karşılaştırın. Platformun korumasını kendisini kapatmayın; sizin adınıza gizli bir pencerenin onay istemine yanıt vermesini engelleyen odur.
Engeli kaldırın, sonra normal akışı yeniden deneyin
Önce VPN onayını isteyen uygulamayı belirleyin, böylece hangi onayı verdiğinizi bilin. Sonra daha sonra ihtiyaç duyabileceğiniz geniş bir izni geri almak yerine o belirli katmanı kendi ayarından durdurun. Bir ekran filtresi genellikle kendi uygulamasında bir açma kapama düğmesine sahiptir; kayan bir widget'ın kapatma kontrolü vardır; üretici ekran modunun ekran ayarlarında bir anahtarı vardır.
Bundan sonra VPN uygulamasına dönün ve onayı yeniden isteyin, böylece iletişim kutusu sıfırdan oluşturulsun. Dokunuş artık çalışıyorsa katmanın uyumluluk davranışını ayarlayın veya bağlanırken kapalı bırakın ve dokunma korumasını açık tutun.
Hangi pencerenin sorumlu olduğunu söyleyemiyorsanız, bunları tek tek kaldırın ve her değişiklikten sonra onay iletişim kutusunu yeniden deneyin. Bir kaydedici kontrol çubuğu veya kayan bir kısayol genellikle suçludur ve çalışmadan hemen önce kaldırdığınız şey yanıttır.
Yol boyunca kapattığınız ilgisiz her şeyi geri yükleyin. Bir ekran filtresi veya gece modu düşman değildir; iletişim kutusuyla çakışan belirli pencere düşmandır.
İletişim kutusunu aşmak için yapılmaması gerekenler
Düğmeye basabilmesi için tanımadığınız bir uygulamaya erişilebilirlik izni vermeyin ve bunun için yardımcı bir uygulama kurmayın. Bunlar tam olarak korumanın reddetmek için var olduğu yeteneği, VPN'e yetki veren bir ekranda verir.
İletişim kutusunu bir giriş aracıyla da otomatikleştirmeyin. Kötü niyetli bir katmanla aynı sonucu verir ve nedeni konusunda size hiçbir şey öğretmez.
Yönetilen bir cihazda VPN değişikliklerini kısıtlayan bir ilke yöneticinin kararıdır. Bir katman deneyi bunu atlamak için yetki değildir. Aynı şekilde, yanıt vermeyen bir onay düğmesi sertifika doğrulamasını zayıflatmak veya hesap kimlik bilgilerini değiştirmek için neden değildir: hiçbir ayar yerel bir dokunma engelini kaldırmaz.
Hâlâ başarısız olursa kesin davranışı bildirin
Sonucu değil iletişim kutusunu tanımlayın: hangi uygulama onay istedi, iletişim kutusu açık mı kaldı yoksa kapandı mı, bilinmeyen kaynaklar veya erişilebilirlik uyarıları gibi diğer hassas istemler de dokunuşları yok sayıyor mu, cihaz modeli ve Android sürümü ve yakaladığınız katman ve erişilebilirlik listeleri.
Oradayken destek sahibine bir soru daha sorun: cihaz ilkesi VPN yapılandırma değişikliklerini herhangi bir şekilde kısıtlıyor mu. Yönetilen bir engelleme, yok sayılan bir dokunuştan farklı görünür ve hangisine baktığınızı bilmek ikinci bir turu kazandırır.
Bu küme, örtülmüş dokunma sorununu bozuk bir giriş cihazından, donmuş bir iletişim kutusundan veya bir ilke engellemesinden ayırır. Aynı zamanda bir sonraki kişiye ekrana mı yoksa ağa mı bakması gerektiğini söyler.
Android'in tapjacking rehberi örtülmüş pencere koşullarını ve bu davranışın arkasındaki API'leri kapsar. Kanıt izini istiyorsanız, düğmeye hiç ulaşmayan olayda FLAG_WINDOW_IS_OBSCURED ve FLAG_WINDOW_IS_PARTIALLY_OBSCURED arayın. Açık kalan iletişim kutusu yakalanacak şeydir, çünkü dokunuşun başka bir pencereye teslim edilmek yerine tutulduğunu gösterir.