2016-09-21 72 views
1

我的应用程序需要以下权限:请求权限对话框中没有Android的棉花糖弹出

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

直到棒棒糖它工作正常,但与棉花糖开始,我需要在运行时请求许可。所以,我用这个代码:

if (ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.SYSTEM_ALERT_WINDOW)==PackageManager.PERMISSION_GRANTED){ 
    //my code here 
} else { 
    if (shouldShowRequestPermissionRationale(Manifest.permission.SYSTEM_ALERT_WINDOW)) { 
     Toast.makeText(getApplicationContext(),"Permission is requird",Toast.LENGTH_SHORT).show(); 
    } 
    requestPermissions(new String[] {Manifest.permission.SYSTEM_ALERT_WINDOW},REQUEST_RESULT); 
} 


@Override 
public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResult){ 
    if (requestCode==REQUEST_RESULT){ 
     if (grantResult[0]==PackageManager.PERMISSION_GRANTED){ 
      //my code here 
     }else { 
      Toast.makeText(getApplicationContext(),"permission has not granted",Toast.LENGTH_SHORT).show(); 
     } 
    } 
    else { 
     super.onRequestPermissionsResult(requestCode,permissions,grantResult); 
    } 
} 

当我尝试运行应用程序,请求许可对话框不显示,并显示一条消息,“权限没有被授予”。为什么请求权限对话框没有出现?

这里是我的build.gradle文件:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 24 
    buildToolsVersion "24.0.2" 

    defaultConfig { 
     applicationId "com.example.adarsh.ezswipe" 
     minSdkVersion 19 
     targetSdkVersion 24 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:24.2.1' 
    compile 'com.android.support:support-v4:24.2.1' 
} 

回答

2

KILL_BACKGROUND_PROCESSES不需要请求在运行时,其protectionLeveldangerous

SYSTEM_ALERT_WINDOW无法通过此机制在运行时请求。请use canDrawOverlays()ACTION_MANAGE_OVERLAY_PERMISSION

+0

OK然后要求在棉花糖设备的权限我必须使用canDrawOverlays() – Rachan

+0

我已经试过这个,但它没有显示权限没有在我的应用程序的应用程序信息中请求。但是您建议的权限完美工作但它给我一些错误定位是这样的:E /表面:getSlotFromBufferLocked:未知的缓冲区:0xab7519c0它是什么 – Rachan