1

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)
4

3 に答える 3

0

一部のファームウェアのみの問題のようですが、現在問題はMeizuのみです。

于 2012-05-17T08:06:23.260 に答える
0

音を鳴らしているときに通知プレーヤーがウェイクロックを取得しようとしているようです。

NotificationManagerServiceソース

NotificationPlayerソース

于 2011-07-18T13:16:49.687 に答える
0

サービスを利用しているようです。おそらく、サービスの実行時間が長すぎて、通知が送信される前に電話がスリープ状態に戻る可能性があります。AlarmManager を使用して電話をスリープ状態から解除し、更新を確認していると思いますか? その場合は、次のWAKE_LOCKように許可を宣言する必要があります。

<uses-permission android:name="android.permission.WAKE_LOCK" />

特にインターネット上のサービスから更新するときに、以前にこの問題に遭遇しました。私が見つけた唯一の解決策は、WAKE_LOCK許可を宣言することです。

于 2011-07-18T16:34:48.883 に答える