1

我是 android 新手,这是我的第一个应用程序。

我创建了我的应用程序,一切正常,警报触发。创建签名版本并安装后,我的警报不起作用:(。

这是我的闹钟,用于注册接收器:

public void enable(){
    if(enabled == true) return;
    IntentFilter filter = new IntentFilter();
    filter.addAction(INTENT);
    mContext.registerReceiver(this, filter);
    enabled = true;
}

然后设置闹钟:

private void setAlarm(Long interval){
    Intent startIntent = new Intent(INTENT);
    mPendingIntent = PendingIntent.getBroadcast(context, 0, startIntent, 0);
    AlarmManager alarm = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
    alarm.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 60000, 60000, mPendingIntent);
}

最初我调用 enable,然后调用 setAlarm。

在非发行版中一切正常。我没有将接收器放在我的清单中,因为我是手动注册的。正在调用设置警报方法,我肯定知道这一点,因为我举杯进行测试。但是,它从不接收任何广播。

4

1 回答 1

0

好的,我发现了问题。

由于这是动态壁纸,因此引擎会被调用两次,一次用于预览,一次用于设置实际壁纸。

事件的顺序决定了警报是否会起作用。事实证明,如果在创建论文后预览被破坏,那么我所有的警报都会被关闭,因为意图匹配?

AlarmManager alarm = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
alarm.cancel(mPendingIntent);

所以我所做的不是在预览时注册警报 - 为什么你仍然需要它们。尽管我的新问题是如果我无法禁用预览,那么解决此问题的最佳方法是什么。每篇论文的独特意图?

有趣的是,这只是在发布时才被发现的原因是因为它在测试过程中很少见,我会通过手动设置 wallaper 过程,所以直到现在才被选中。

于 2012-08-22T07:16:50.547 回答