Android11.0系统关闭App所有通知

通过广播接收方式,根据包名关闭App所有通知。

diff 复制代码
packages/apps/Settings$ git diff
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d4c54c6ed8..1ce7d4136f 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -106,6 +106,7 @@
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
     <uses-permission android:name="android.permission.READ_DREAM_STATE" />
     <uses-permission android:name="android.permission.READ_DREAM_SUPPRESSION" />
+       <uses-permission android:name="android.permission.SET_WALLPAPER" />
 
     <application android:label="@string/settings_label"
             android:icon="@drawable/ic_launcher_settings"
@@ -3542,10 +3543,20 @@
                 <action android:name="com.android.settings.action.LAUNCH_BLUETOOTH_PAIRING"/>
             </intent-filter>/>
         </receiver>
+               
+               <receiver
+            android:name=".MyReceiver"
+            android:enabled="true"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="com.android.setWallpaper"/>
+                               <action android:name="com.android.start_devicetest" />
+                <action android:name="com.android.start_iperf" />
+                <action android:name="com.android.switch_notification" />
+            </intent-filter>
+        </receiver>
 
diff --git a/src/com/android/settings/MyReceiver.java b/src/com/android/settings/MyReceiver.java
--- a/src/com/android/settings/MyReceiver.java
+++ b/src/com/android/settings/MyReceiver.java


+else if("com.android.switch_notification".equals(action)){
+			String packageName = intent.getStringExtra("packageName");
+           boolean enable = intent.getBooleanExtra("enable",false);
+			INotificationManager mNotificationManager = +INotificationManager.Stub.asInterface(ServiceManager.getService(Context.NOTIFICATION_SERV+ICE));
+			try {
+				PackageManager mPackageManager = context.getPackageManager();
+				int uid =  +mPackageManager.getApplicationInfo(packageName,PackageManager.GET_ACTIVITIES).uid;
+				Log.i(TAG,"-----------------setNotificationsEnabledForPackage: " + +packageName + ", uid = " + uid);
+				mNotificationManager.setNotificationsEnabledForPackage(packageName, uid, +enable);
+			} catch (Exception e) {
+				Log.e(TAG, "--------------------setNotificationsEnabledForPackage: " + e);
+			}
+		}

测试方法,发送abd命令

bash 复制代码
am broadcast -a com.android.switch_notification -p com.android.settings --es packageName kr.co.kisvan.andagent --ez enable false
相关推荐
珹洺7 分钟前
Java-Spring入门指南(二十五)Android 的历史,认识移动应用和Android 基础知识
android·java·spring
大白的编程日记.34 分钟前
【MySQL】数据库表的CURD(二)
android·数据库·mysql
介一安全1 小时前
【Frida Android】基础篇4:Java层Hook基础——调用静态方法
android·网络安全·逆向·安全性测试·frida
怪兽20141 小时前
主线程 MainLooper 和一般 Looper 的异同?
android·面试
洋不写bug2 小时前
数据库的创建,查看,修改,删除,字符集编码和校验操作
android·数据库·adb
2501_915909063 小时前
iOS App 上架全流程详解:证书配置、打包上传、审核技巧与跨平台上架工具 开心上架 实践
android·ios·小程序·https·uni-app·iphone·webview
2501_915106323 小时前
iOS 26 系统流畅度测试实战分享,多工具组合辅助策略
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_915918413 小时前
开发 iOS 应用全流程指南,环境搭建、证书配置与跨平台使用 开心上架 上架AppStore
android·ios·小程序·https·uni-app·iphone·webview
灵芸小骏3 小时前
Rokid应用实践:基于CXR-M与CXR-S SDK,打造眼镜与手机协同的‘智能随行记录仪’
android
奔跑中的蜗牛6663 小时前
直播 QoE 监控体系设计与落地(三):原生卡顿优化实践
android