use*_*979 3 settings notifications android root
有没有办法以编程方式更改应用程序的详细信息(设置 - >应用程序 - > [anApp])?具体来说,我可以取消选中"显示通知"吗?
我假设你有root权限
在此先感谢您的帮助
sat*_*ine 10
首先,它似乎取决于您感兴趣的Android版本.似乎4.3中的内容发生了变化.我正在调查最新的master分支(这是l-preview),所以沿着AOSP兔子洞找到......
在"设置"包中...
InstalledAppDetails.java:1299
private void setNotificationsEnabled(boolean enabled) {
String packageName = mAppEntry.info.packageName;
INotificationManager nm = INotificationManager.Stub.asInterface(
ServiceManager.getService(Context.NOTIFICATION_SERVICE));
try {
final boolean enable = mNotificationSwitch.isChecked();
nm.setNotificationsEnabledForPackage(packageName, mAppEntry.info.uid, enabled);
} catch (android.os.RemoteException ex) {
mNotificationSwitch.setChecked(!enabled); // revert
}
}
Run Code Online (Sandbox Code Playgroud)
在框架/基础......
NotificationManagerService.java:454
public void setNotificationsEnabledForPackage(String pkg, int uid, boolean enabled) {
checkCallerIsSystem();
Slog.v(TAG, (enabled?"en":"dis") + "abling notifications for " + pkg);
mAppOps.setMode(AppOpsManager.OP_POST_NOTIFICATION, uid, pkg,
enabled ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED);
// Now, cancel any outstanding notifications that are part of a just-disabled app
if (ENABLE_BLOCKED_NOTIFICATIONS && !enabled) {
cancelAllNotificationsInt(pkg, 0, 0, true, UserHandle.getUserId(uid));
}
}
Run Code Online (Sandbox Code Playgroud)
进一步在框架/基础......
base/core/java/android/app/AppOpsManager.java
124: public static final int OP_POST_NOTIFICATION = 11;
更深入的框架/基础......
base/services/java/com/android/server/am/ActivityManagerService.java
2000: mAppOpsService = new AppOpsService(new File(systemDir, "appops.xml"));
所以,如果你有root,你可以修改/data/system/appops.xml.您可能需要通过阅读代码,研究格式:https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/AppOpsManager.java
我在这里发现了一篇很长的文章,其中包含一些可能有用的信息:
http://commonsware.com/blog/2013/07/26/app-ops-developer-faq.html
| 归档时间: |
|
| 查看次数: |
9074 次 |
| 最近记录: |