问题描述:

程序是用来打开手机摄像头的,但是运行软件的时候报 WindowManager$BadTokenException

问题原因:

安卓版本6.0以上会因为SYSTEM_ALERT_WINDOW权限的问题,无法在最上层显示,调试的时候就会出现这个异常

解决方法:

简单方法:调安卓版本,在 build.gradle 中将 targetSdkVersion 调成 22 ,问题解决

其他方法:在 onCreate() 方法中添加以下代码

//让用户手动授权 
if (Build.VERSION.SDK_INT >= 23) {
if (!Settings.canDrawOverlays(MainActivity.this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivity(intent);
}
}