❶ oppo手机android系统通知怎么关闭
通知管理的方式
桌面应用总是有弹窗广告出来,怎么一键关闭呢,通知管理就可以管理所有应用的通知权限,您可以自行选择各应用通知的展现方式哦~
设置方法:
1、前往“设置 > 通知与状态栏 > 通知管理”。
(1)锁屏通知:手机锁屏时是否接收通知。
显示通知内容、显示通知但隐藏内容、不显示。
(2)桌面角标:选择来通知时在桌面图标上显示数字角标、圆点角标或无角标。
混合(数字角标和圆点角标混用)、数字(应用存在未读消息时显示)、圆点(应用存在通知时持续显示)、不显示。
(3)更多:
不重要通知:不折叠、折叠至底部。
通知历史:可查看过往通知和已延时通知。
允许显示延时通知
全屏时显示简洁横幅通知
全屏时通知轻反馈:全屏时(例如看视频、打游戏)通知铃声更轻柔并且振动减弱。
锁屏时来电通知时亮屏
(4)选择需要设置通知管理的应用,如““哔哩哔哩”APP > 开启或关闭允许通知”, 根据实际需求设置应用通知(是否允许通知及类别项)。
2、若为桌面应用,可长按桌面“应用图标 > 点击“应用信息(详情)” > 通知管理”,根据实际需求设置应用通知(是否允许通知及类别项)。
3、开启应用的通知权限后,应用的常规推送会集中展示在通知中心(状态栏通知)。在解锁后的任意屏幕下,从屏幕顶部向下轻扫,即可看到通知中心的消息。
❷ android8.0之悬浮窗和通知栏
悬浮窗:
使用场景:例如微信在视频的时候,点击Home键,视频小窗口仍然会在屏幕上显示;
注意事项:
1、一般需要在后台进行操作的时候才需要悬浮窗,这样悬浮窗才有意义;
2、API Level >= 23的时候,需要在AndroidManefest.xml文件中声明权限SYSTEM_ALERT_WINDOW才能在其他应用上绘制控件。
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />;除了这个权限外,我们还需要在系统设置里面对本应用进行设置悬浮窗权限。该权限在应用中需要启动Settings.ACTION_MANAGE_OVERLAY_PERMISSION来让用户手动设置权限:startActivityForResult(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())), REQUEST_CODE);
3、LayoutParam设置:LayoutParam里的type变量。这个变量是用来指定窗口类型的。在设置这个变量时,需要注意一个坑,那就是需要对不同版本的Android系统进行适配。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;
};在Android 8.0之前,悬浮窗口设置可以为TYPE_PHONE,这种类型是用于提供用户交互操作的非应用窗口。
而Android 8.0对系统和API行为做了修改,包括使用SYSTEM_ALERT_WINDOW权限的应用无法再使用一下窗口类型来在其他应用和窗口上方显示提醒窗口:
- TYPE_PHONE
- TYPE_PRIORITY_PHONE
- TYPE_SYSTEM_ALERT
- TYPE_SYSTEM_OVERLAY
- TYPE_SYSTEM_ERROR
如果需要实现在其他应用和窗口上方显示提醒窗口,那么必须该为TYPE_APPLICATION_OVERLAY的新类型;
如果在Android 8.0以上版本仍然使用TYPE_PHONE类型的悬浮窗口,则会出现如下异常信息:
android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@f8ec928 -- permission denied for window type 2002;
具体实现:
1、Activity:
public void startFloatingService(View view) {
...
if (!Settings.canDrawOverlays(this)) {
Toast.makeText(this, "当前无权限,请授权", Toast.LENGTH_SHORT);
startActivityForResult(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())), 0);
} else {
startService(new Intent(MainActivity.this, FloatingService.class));
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 0) {
if (!Settings.canDrawOverlays(this)) {
Toast.makeText(this, "授权失败", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "授权成功", Toast.LENGTH_SHORT).show();
startService(new Intent(MainActivity.this, FloatingService.class));
}
}
}
2、service:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
showFloatingWindow();
return super.onStartCommand(intent, flags, startId);
}
private void showFloatingWindow() {
if (Settings.canDrawOverlays(this)) {
// 获取WindowManager服务
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
// 新建悬浮窗控件
Button button = new Button(getApplicationContext());
button.setText("Floating Window");
button.setBackgroundColor(Color.BLUE);
// 设置LayoutParam
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;
}
layoutParams.format = PixelFormat.RGBA_8888;
layoutParams.width = 500;
layoutParams.height = 100;
layoutParams.x = 300;
layoutParams.y = 300;
// 将悬浮窗控件添加到WindowManager
windowManager.addView(button, layoutParams);
}
}
效果展示:
❸ Android系统的通知栏管理如何开启和关闭
开启通知栏方法请查看以下内容:
用手指从屏幕顶部由上至下滑动屏幕即可。