和上篇一样,设备新换成Android9版本以后出现的问题
android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@45f48c40 is not valid; is your activity running?
在自定义里面type改成
params.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
之后又出现了
android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@47dd171 -- permission denied for window type 2038
这个是由于没有给到设置在其他应用上层显示的权限,
public void checkPermission() {
if (Build.VERSION.SDK_INT >= 23) {
if (!Settings.canDrawOverlays(MinimalistModeActivity.this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 10);
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 10) {
if (Build.VERSION.SDK_INT >= 23) {
if (!Settings.canDrawOverlays(this)) {
// SYSTEM_ALERT_WINDOW permission not granted...
Toast.makeText(MinimalistModeActivity.this, "not granted", Toast.LENGTH_SHORT).show();
}
}
}
}
加上,ok