2015-08-18 40 views
65

Tamamen yok sayar:İzin Android'de çalışmaz 6

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 

yüzden got istisna:

Neden Olduğu: android.view.WindowManager $ BadTokenException: penceresini eklenemedi'yi

0123: - [email protected] izni bile listede bulunmayan bu pencere tipi

için reddedildi

enter image description here

Nasıl düzeltmeliyim? Teşekkürler.

DÜZENLEME: Yapılandırma uygulamalar belirtilenden

/Gelişmiş/diğer uygulama üzerinde çizin. Bu yüzden onu açıyorum ve şimdi iyi çalışıyor, ancak uygulamamı çalıştırdığımda izin almak için neden bir iletişim kutusu yok? Bütün ölümler sağır oldu ve ayarlara gitmeli ve mannualy açılmalı mıyım?

+1

:

public static int OVERLAY_PERMISSION_REQ_CODE = 1234; public void someMethod() { if (!Settings.canDrawOverlays(this)) { Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())); startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE); } } 

Ardından, daha iyi UX için izin yeniden kontrol edin:

kodunuzu Activity veya Fragment yılında, bindirme iznini kontrol edin ve gerekiyorsa bunun için bir istek yapmak olduğunu varsayarsak Ben de bu problemi yaşadım. Ayrıca, "Activity # requestPermissions()" diyerek SYSTEM_ALERT_WINDOW için izin almayı denedim, ancak bu çalışmaz. – Shigerello

+2

Burada bir hata raporu hazırladım: https://code.google.com/p/android-developer-preview/issues/detail?id=2971 –

+9

Bu arada izinler Ayarlar -> Uygulamalar -> Araçlar altında listeleniyor Üst çubukta simge -> Diğer uygulamaların üzerine çizin (Gelişmiş bölümün altında). Çok gizli! –

cevap

125

CommonsWare's blog post sayesinde, bazı ipuçları aldım.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == OVERLAY_PERMISSION_REQ_CODE) { 
     if (!Settings.canDrawOverlays(this)) { 
      // SYSTEM_ALERT_WINDOW permission not granted... 
     } 
    } 
} 
+0

Teşekkürler! Çalışıyor, ancak normal (küçük) iletişim kutusu göstermiyor, izin istediğimde tam ekran iletişim kutusu gösteriyor, burada görebilirsiniz: http://imgur.com/eWf5DSC Bu normal mi? –

+0

Şey… Emin değilim. CommonsWare kendi blogunda bahsederken, SYSTEM_ALERT_WINDOW ile ilgili değişiklikler hakkında çok az (veya hiç) belge yoktur. İzni soran küçük bir diyalog gibi daha basit bir yaklaşım olabilir, ancak şu an bu yaklaşım benim bildiğim tek şey. – Shigerello

+0

Çözümünüz benim için çalışıyor. Ama android docs sağlanan düzenli bir şekilde işe yaramadı (http://developer.android.com/training/permissions/requesting.html) – Noundla

İlgili konular