在Android 2.2上NotificationManager.notify()
何时需要WAKE_LOCK
权限?
我收到了一位用户的以下堆栈跟踪:
java.lang.SecurityException: Neither user ***** nor current process has android.permission.WAKE_LOCK.
at android.os.Parcel.readException(Parcel.java:1247)
at android.os.Parcel.readException(Parcel.java:1235)
at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:274)
at android.app.NotificationManager.notify(NotificationManager.java:118)
at android.app.NotificationManager.notify(NotificationManager.java:94)
...
更新在Scala中调用代码:
notification = new Notification(android.R.drawable.stat_notify_sync,
"%s %s".format(statusTitle, finishedStatus), 0)
notification.flags = Notification.FLAG_SHOW_LIGHTS | Notification.FLAG_AUTO_CANCEL
notification.setLatestEventInfo(SyncService.this, statusTitle, finishedStatus,
PendingIntent.getActivity(SyncService.this, 0, new Intent(SyncService.this, classOf[MainActivity]), 0))
notificationManager.notify(NOTIFICATION, notification)
答案 0 :(得分:0)
答案 1 :(得分:0)
看起来您正在使用服务。也许服务运行时间过长,手机会在发送通知之前重新进入睡眠状态。我假设你正在使用AlarmManager让手机退出睡眠以检查更新?如果是这种情况,您只需要声明WAKE_LOCK
权限,如下所示:
<uses-permission android:name="android.permission.WAKE_LOCK" />
之前我遇到过这个问题,尤其是在从互联网上的服务进行更新时。我找到的唯一解决方案是声明WAKE_LOCK
权限。
答案 2 :(得分:0)
似乎只是一些固件的问题,目前问题只有魅族。