目录
版本
autojs 4.1.1
官方方法
events.obverseNotification();
开启通知监听。例如QQ消息、微信消息、推送等通知。
通知监听依赖于通知服务,如果通知服务没有运行,会抛出异常并跳转到通知权限开启界面。(有时即使通知权限已经开启通知服务也没有运行,这时需要关闭权限再重新开启一次)
我的问题
mi5 正常
系统为 安卓6
符合预期运行,能正常try,能正常跳转
redmi k30US 不正常
系统为 安卓11
不符合预期运行,不能正常try,不能正常跳转
解决方法
1、 判断是否有读取通知权限
2、 跳转到读取通知权限配置页面
importClass(com.stardust.notification.NotificationListenerService);
importClass(android.provider.Settings);
importClass(android.content.Intent);
let enabled = NotificationListenerService.Companion.getInstance()!= null
if (!enabled) {
app.startActivity(new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS));
}
参考的autojs 源码
public void observeNotification() {
ScriptRuntime.requiresApi(18);
if (mListeningNotification)
return;
mListeningNotification = true;
ensureHandler();
mLoopers.waitWhenIdle(true);
if (NotificationListenerService.Companion.getInstance() == null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
mContext.startActivity(new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS));
}
throw new ScriptException(mContext.getString(R.string.exception_notification_service_disabled));
}
NotificationListenerService.Companion.getInstance().addListener(this);
}
疑惑
这里的就很奇怪了,代码是一样的,除了一行判断版本。
Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1
但是这里是我的版本是大于安卓5.1,redmi 的 安卓11 应该是 满足这个条件的。