2013-07-22 73 views
6

我創建了一個應用程序,提醒人們按時發瘋。 每當我在Google Play上放置新APK時,我都會收到很多投訴,警報不再有效。 只有在用戶啓動應用程序(或重新啓動)後纔會重新開始工作。 幫助!Android AlarmManager在Google Play更新後不會觸發

+0

您的應用程序將被停止,以更新它,包括任何服務和警報。您需要告訴他們在更新後打開應用程序,這會讓您有機會啓動您需要的任何服務/警報。 –

+0

是啊,你幾乎卡在這裏。 http://stackoverflow.com/questions/8531926/how-to-start-a-service-when-apk-is-installed-for-the-first-time/8535062#8535062 – roostertech

回答

8

查看ACTION_MY_PACKAGE_REPLACED意向操作(在蜂巢上)。

您應該能夠在清單中註冊一個廣播接收器,然後可以重新安排您的警報。

+0

在Studio 1.0中,當我使用上下文幫助我只看到這個android.intent.action.PACKAGE_REPLACED。我沒有看到android.intent.action.ACTION_MY_PACKAGE_REPLACED。可以使用第一個嗎? 我只支持API 16 – user2731584

+0

您的minSdkVersion 16和您的targetSdkVersion 21? – orip

+0

是的,min SDK是16,最大值是21. – user2731584

3

升級時不會取消計劃報警。我在編寫本文時驗證了Android版本2.2和4.3以及最新的Google Play。

你必須確保你的新版本可以處理任何舊版本的所有未決意圖。這意味着:

  • 在清單(廣播接收器或服務)
  • 目的相同的「合同」相同的目標定義:動作,演員等
+1

實際上沒有報警會被取消,而且你有重新設置它 – AnasBakez

+2

這是不正確的。警報不會再被取消。想要證明?查看源代碼:http://grepcode.com/file/repo1.maven.org/maven2/org.robolectric/android-all/4.3_r2-robolectric-0/com/android/server/AlarmManagerService.java#AlarmManagerService。 UninstallReceiver – sooniln

+2

@sooniln你是對的,但你的鏈接指向Robolectric源代碼。這裏是Android源代碼的鏈接 - http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.2_r1/com/android/server/AlarmManagerService。 java /#1902 – Eliezer

相關問題