1
中不工作

我是Android新手,這是我的第一個應用程序。Android鬧鐘在Release

我創建了我的應用程序,一切都正常工作報警觸發器。我創建了一個簽名的版本並安裝後,我的報警器不工作:(

這是我的鬧鐘,註冊接收器:

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

在非發佈版本中,這一切都工作正常我沒有把接收器放在我的清單中,因爲我正在手動註冊設置的報警方法是bei ng叫,我知道這是肯定的,因爲我做了一個敬酒來測試它。然而,它從未收到任何brocastcasts。

+0

問題是預覽刪除所有警報,請參閱下面的評論。有了一個新問題:如果取消註冊警報會刪除應用程序其他實例的所有其他註冊警報,那麼可以對此做些什麼? – serenskye

回答

0

好的,我發現了這個問題。

由於這是一個動態壁紙,引擎被調用兩次,一次用於預覽,一次用於實際壁紙,一旦你設置了它。

事件的順序決定了警報是否有效。事實證明,如果在文件創建後預覽被破壞,那麼我的所有警報都會關閉,因爲意圖匹配?

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

所以我所做的不是註冊報警預覽 - 爲什麼你會在這裏需要它們。儘管我的新問題是如果我無法禁用預覽,那麼解決此問題的最佳方法是什麼。每種紙張的獨特意圖?

有趣的是,爲什麼這只是在發佈時纔拿起的原因是因爲它在測試過程中很少見,我會通過手動設置wallaper進程,所以直到現在還沒有拿到它。