Android удаление оповещения о близости

1

Я работаю над приложением, которое занимается уведомлениями о близости. Я могу добавить оповещение о близости, но я не могу удалить эти оповещения о близости. Я пробовал свой код как на телефоне, так и на виртуальном устройстве, но я не смог их удалить.

Вот мой код:

активность, в которой добавлены местоположения, сохраненные в базе данных и предупреждения о близости

    saveButton.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View view) {
                        String title = titleText.getText().toString();
                        if(title.matches("")){
                            Toast.makeText(CurrentLocationActivity.this,"Please provide a Title",Toast.LENGTH_SHORT).show();
                        }
                        else{
                            saveLocation(saveProximityAlertPoint(title));                                              
                            setResult(RESULT_OK);                                     
                            Toast.makeText(CurrentLocationActivity.this,"Location Saved",Toast.LENGTH_SHORT).show();    
                        }
                    }
                });

    private void saveLocation(int unique_location_id) {
                if (location == null) {
                    Toast.makeText(this, "No last known location",Toast.LENGTH_LONG).show();
                    return ;
                }
                else{
                    String title = titleText.getText().toString();                     
                    String type = typeSpinner.getSelectedItem().toString();                                         
                    range = (int) (radius + POINT_RADIUS);      
                    int unique_id = unique_location_id;     
                    Double latitude = location.getLatitude();
                    Double longitude = location.getLongitude();

                    location_id = mDbHelper.createLocation(title, type, range, unique_id, latitude, longitude);

                    titleText.setText("");
                    radiusBar.setProgress(0);
                }
            }

    private int saveProximityAlertPoint(String title) {
                if (location == null) {
                    Toast.makeText(this, "No last known location.",Toast.LENGTH_LONG).show();
                    return 0;
                }
                else{
                    Double latitudeProxAlert = location.getLatitude();
                    Double longitudeProxAlert = location.getLongitude();
                    int unique_location_id = addProximityAlert(latitudeProxAlert, longitudeProxAlert, title);

                    return unique_location_id;
                } 
            }

    private int addProximityAlert(double latitude, double longitude, String title) {

                Intent intent = new Intent(PROX_ALERT_INTENT);
                intent.putExtra(LOCAION_TITLE, title);

                PendingIntent proximityIntent = PendingIntent.getBroadcast(this, ++pending_intent_unique_id , intent, 0);

                locationManager.addProximityAlert(latitude, longitude, range, PROX_ALERT_EXPIRATION, proximityIntent );

                IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT);  
                registerReceiver(new ProximityIntentReceiver(), filter);
                Toast.makeText(this, "Proximity has been added for " + title + " with unique_id " + pending_intent_unique_id,
                        Toast.LENGTH_LONG).show();

                SharedPreferences.Editor editor = preferences.edit();
                editor.putInt("UNIQUEID", pending_intent_unique_id);
                editor.commit();
                return pending_intent_unique_id;
            }

и другое действие, в котором я пытался удалить оповещения о близости

    public boolean onContextItemSelected(MenuItem item) {                  
            switch(item.getItemId()) {
            case R.id.menu_delete:
                AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 

                Cursor proxRemoveCursor = mDbHelper.fetchLocation(info.id);
                removeProximityAlert(proxRemoveCursor.getInt(proxRemoveCursor.getColumnIndexOrThrow(DBAdapter.KEY_UNIQUE_LOCATION_ID)));

                mDbHelper.deleteLocation(info.id);

                proxRemoveCursor.close();

                return true;
}

    private void removeProximityAlert(int unique_id) {

            String context = Context.LOCATION_SERVICE;
            LocationManager locationManager = (LocationManager) getSystemService(context);

            Intent anIntent = new Intent(REMOVE_PROXIMITY);
            PendingIntent operation = 
                PendingIntent.getBroadcast(getApplicationContext(), unique_id , anIntent, 0);
            locationManager.removeProximityAlert(operation);
        }
        }

Это немного длинный код, но это самый короткий способ правильно поставить мой вопрос. Thnx за помощь.

Теги:
alert
proximity

2 ответа

3
Лучший ответ

Решила! Проблема в том, что действия, которые я отправлял в объекты-объекты для addProximityAlert() и removeProximityAlert() не removeProximityAlert(). Теперь я могу удалить оповещения о близости после исправления моей ошибки.

  • 0
    Можете ли вы показать свой окончательный код, чтобы я мог видеть, как вы решили свою проблему, пожалуйста?
  • 1
    Intent anIntent = новое намерение (REMOVE_PROXIMITY); Намерение намерение = новое намерение (PROX_ALERT_INTENT) ;. мой окончательный код там. проблема есть; REMOVE_PROXIMITY и PROX_ALERT_INTENT должны совпадать. Когда я впервые попробовал это, они были другими. Когда они одинаковы, вы можете удалить оповещение о близости.
Показать ещё 5 комментариев
0

Какая ценность REMOVE_PROXIMITY?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню