我建立了一個應用程序,彈出通知在我設置的位置。 一切正常。即使在重新啓動我的設備後。沒有問題。但我注意到,如果我關閉GPS,然後重新啓動我的設備,BroadcastReceiver可能嘗試登錄Geofence API並因爲沒有GPS而出錯。和Geofence通知不會再彈出,直到我用gps模式重啓我的設備。 我需要使用AlarmManager嗎?爲了每x次推一些刷新?驗證GPS模式是否開啓?如何在設備重新啓動後註冊地理柵欄?
3
A
回答
5
此解決方案假設您已經存儲了您想要使用的地理圍欄信息,其方式將通過重新啓動設備來保留。
第一次啓動時,在處理RECEIVE_BOOT_COMPLETED
的BroadcastReceiver中,請檢查GPS是否爲is enabled。如果是,請繼續正常,但如果沒有,請將其添加到您的接收器中:
@Override
public void onReceive(Context context, Intent intent) {
//Or whatever action your receiver accepts
if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
LocationManager locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER){
context.registerReceiver(this, new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION));
}
else{
//We are good, continue with adding geofences!
}
}
if(intent.getAction().equals(LocationManager.PROVIDERS_CHANGED_ACTION)){
if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER){
context.unregisterReceiver(this);
//We got our GPS stuff up, add our geofences!
}
}
}
2
您可以將其添加到清單中。這個例子假定你有一個BroadcastReceiver com.example.MyBroadcastReceiver,用你自己的代替。每當GPS打開或關閉時,該接收器都會收到廣播意圖。
<receiver android:name="com.example.MyBroadcastReceiver">
<intent-filter>
<action android:name="android.location.PROVIDERS_CHANGED" />
</intent-filter>
</receiver>
+0
謝謝,我會嘗試 – Anna
相關問題
- 1. 如何在手機重新啓動時註冊地理圍欄?
- 2. 從BroadcastReceiver在Android中重新註冊地理柵欄
- 3. Android - 如何檢索已註冊地理柵欄的列表
- 4. Android更新地理柵欄
- 5. 註冊後重新設計
- 6. [Android]應用程序重新啓動設備後重新啓動
- 7. 獲取所有註冊地理柵欄的列表
- 8. 如何重新啓動設備後重新啓動應用程序?
- 9. 安裝後重新啓動設備
- 10. 如何重新啓動android設備
- 11. 如何重新啓動android設備?
- 12. 地理柵欄理解地理柵欄一生
- 13. 明確重新註冊設備到GCM
- 14. 如何在Apple的Provisioning Portal中重新註冊設備?
- 15. 如何在供應商重新註冊的Android地理圍欄改變?
- 16. 如何在Android設備上禁用「重新啓動:冷啓動」物理按鈕
- 17. 如何在註冊後使用設備自動登錄?
- 18. 觸發後刪除地理柵欄
- 19. 註冊表項在機器重新啓動後不再持續
- 20. 如何創建地理柵欄
- 21. 柵欄未註冊 - 谷歌認知API
- 22. 取消註冊後重新註冊$ watch
- 23. 重啓設備後FirebaseJobDispatcher未啓動
- 24. ASP.NET移動設備註冊
- 25. 註冊失敗後重新設計
- 26. 重新啓動後重新連接外圍設備 - Objective-C
- 27. 地理柵欄:如何識別使用Oracle Spatial重疊地理柵欄邊界的對象(要素)?
- 28. 實現地理柵欄 - C#
- 29. 在TensorFlow中註冊新的XLA設備
- 30. 類重新啓動IIS網站後未註冊
謝謝,我會試試 – Anna
它的工作原理!非常感謝您 – Anna
我是否必須使用:「context.registerReceiver(this,new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION));或者mContext.unregisterReceiver(this)? – Anna