2016-07-10 26 views
0

我試圖處理在Android版本使用稱爲德克斯特庫23新的權限模型:德克斯特庫的Android權限總是處理總是觸發回調onPermissionDenied

https://github.com/Karumi/Dexter

問題是,如果我需要檢查允許訪問SYSTEM_ALERT_WINDOW回調onPermissionDenied總是被調用而不顯示權限對話框。

PermissionListener dialogPermissionListener = new PermissionListener() { 
       @Override public void onPermissionGranted(PermissionGrantedResponse response) { 
        Logger.d("onPermissionGranted"); 
       } 
       @Override public void onPermissionDenied(PermissionDeniedResponse response) { 
        Logger.d("onPermissionDenied"); 

       } 

       @Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) { 
        Logger.d("onPermissionRationaleShouldBeShown"); 
       } 
      }; 

      Dexter.checkPermission(dialogPermissionListener, Manifest.permission.SYSTEM_ALERT_WINDOW); 

如何以正確的方式進行權限檢查?

注意:權限檢查是在服務中處理的,而不是在Activity中,因爲服務應該在應用中的所有其他窗口上方顯示SYSTEM_ALERT_WINDOW(授予權限)。

非常感謝您的任何建議。

+0

你試圖改變'checkPermission'方法'checkPermissionOnSameThread' [早在lib本身這裏提到]由於您使用的是服務,我懷疑您是在其他線程中接收回調。 此外,這可能是有用的:http://stackoverflow.com/questions/32292675/how-to-request-permissions-from-a-service-in-android-marshmallow –

回答

1

您還應該添加的權限在AndroidManifest.xml