首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设备锁定一段时间后报警管理器不工作

设备锁定一段时间后报警管理器不工作
EN

Stack Overflow用户
提问于 2016-03-25 12:49:53
回答 1查看 1.7K关注 0票数 2

背景

我的应用程序给用户提供事件通知。通知由版主发送。然而,应用程序允许版主发送“定时通知”,他们可以选择提前发送特定时间的通知。

我的逻辑

当版主发送通知时,他们会发送特定的标签。在客户端,如果检测到标记,设备将不会显示通知。相反,它将使用AlarmManager并在给定的时间设置警报。当在期望的时间从AlarmManager接收到意图时,广播接收器将发送通知。

NotificationService.java

代码语言:javascript
复制
    //Some other code

    public void setTimedNotification(String notificationstring, int Seconds){

            // get a Calendar object with current time
            Calendar cal = Calendar.getInstance();
            // add seconds to the calendar object
            cal.add(Calendar.SECOND, Seconds);
            Intent intent = new Intent(getBaseContext(), TimedNotifications.class);
            PendingIntent sender = PendingIntent.getBroadcast(getBaseContext(), 1989, intent, PendingIntent.FLAG_UPDATE_CURRENT); //1989 is some random number

            // Get the AlarmManager service
            AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
            alarmMgr.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
        } 

TimedNotifications.java

代码语言:javascript
复制
public class TimedNotifications extends BroadcastReceiver {

    public static final int NOTIFICATION_ID = 1;

    @Override
    public void onReceive(Context context, Intent intent) {

        NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        int requestID = (int) System.currentTimeMillis();
        Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        Intent notificationIntent = new Intent(context, TargetClass.class);
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        PendingIntent contentIntent = PendingIntent.getActivity(context, requestID,notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        int color = context.getResources().getColor(R.color.colorPrimary);
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle(notificationTitle)
                .setStyle(new NotificationCompat.BigTextStyle()
                        .bigText(notificationMessage))
                .setColor(color)
                .setContentText(notificationMessage).setAutoCancel(true);
        mBuilder.setSound(alarmSound);
        mBuilder.setContentIntent(contentIntent);
        mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());

    }
}

AndroidManifest.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.XXX.ZZZ">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<permission
    android:name="com.PackageName.App.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

<uses-permission android:name="com.PackageName.App.permission.C2D_MESSAGE" />

<application

        <!-- Some other activities and details -->

  <receiver
        android:name="com.PackageName.App.gcm.TimedNotifications"
        android:process=":remote"/>

          <!-- Bla bla bla -->
</application>

</manifest>

问题

当设备运行且屏幕未被锁定时,此代码运行良好。所以我相信服务是正常的。如果设备没有进入睡眠状态,它甚至会给我定时通知。这也表明代码工作正常。然而,是设备被锁定超过5-10分钟。我没有收到任何通知。我想是有什么许可问题。我尝试了许多权限组合,比如在意图中添加自定义标志、添加删除android:process=":remote"、更改接收方类的名称(包括接收方名称中的包名)、检查拼写错误、甚至尝试使用 post :/等中所示的wakelock。但是到目前为止没有任何进展。有东西不见了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-29 11:57:47

对于在这种情况下正在寻找答案的不幸的人来说,我的代码是非常好的和工作的。我刚刚发现,当设备进入睡眠模式时,"绿色化应用程序“正在杀死/休眠我的应用程序。测试警报管理器功能时,请检查您的任务管理器或其他节省电池的应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36220274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档