Ich habe eine Aktivität namens "AddReminder" Aktivität, die für einen Alarm erstellen. Ein Broadcast-Empfänger wird jedes Mal registriert, wenn ein Alarm erstellt wird. In der anderen Aktivität wird der gesamte erstellte Alarm in einer Listenansicht angezeigt. Wenn ein Benutzer auf eine der Listenansichten klickt, kann der Benutzer den Alarm löschen. Es ist kein Problem für mich, den Alarm aus der Listenansicht zu löschen. Ich habe jedoch keine Ahnung, wie ich den Broadcast-Empfänger von der Löschalarmaktivität abmelden soll.Wie Registrierung von Broadcast-Empfänger, die in anderen Aktivitäten registriert?
Taste Alarm
@Override
public void onClick(View view) {
title_text = title.getText().toString();
desc_text = desc.getText().toString();
if(location.getSelectedItem()==null)
return;
else
place_text = location.getSelectedItem().toString();
int id = group.getCheckedRadioButtonId();
radioButton = (RadioButton)findViewById(id);
point_text = radioButton.getText().toString();
//Log.d("location", place_text);
//Toast.makeText(getApplicationContext(), title_text + " " + desc_text + " " + place_text, Toast.LENGTH_LONG).show();
if (!validateTitle()) {
return;
}
if (!validateDesc()) {
return;
}
if (!validatelocation()) {
return;
}
if(!validatePoints()){
return;
}
reminder rmd = new reminder(getApplicationContext(), title_text, desc_text, place_text, point_text);
rmd.registerReceiver();
submit(rmd);
Toast.makeText(getApplicationContext(), "Success!", Toast.LENGTH_LONG).show();
finish();
}
Alarmklasse
public class reminder {
private Context context;
private String title, desc, location, point;
private AlarmReceiver receiver;
public reminder(){
}
public reminder(Context context, String title, String desc, String location, String point){
this.context = context;
this.title = title;
this.desc = desc;
this.location = location;
this.point = point;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getPoint() {
return point;
}
public void setPoint(String point) {
this.point = point;
}
public void registerReceiver() {
receiver = new AlarmReceiver(context, title, desc, location, point);
IntentFilter intentFilter1 = new IntentFilter();
intentFilter1.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
context.registerReceiver(receiver, intentFilter1);
}
public void unregisterReceiver(int id){
context.unregisterReceiver(receiver);
}
Adapter OnItemClickListener (andere Aktivität) hinzufügen
listrmd.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
position2 = id;
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setIcon(R.drawable.ic_menu_manage);
builder.setTitle("Option");
builder.setAdapter(adapter2, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(which == 0){ //edit option
Toast.makeText(getActivity(), "Edit", Toast.LENGTH_LONG).show();
}
else{ //delete option
boolean flag = myDb.removeReminder(position2);
if(flag)
Toast.makeText(getActivity(), "Success", Toast.LENGTH_LONG).show();
//I WANT TO UNREGISTER BROADCAST RECEIVER HERE
else
Toast.makeText(getActivity(), "Failed", Toast.LENGTH_LONG).show();
updateList();
}
}
});
builder.show();
}
});
Bitte Hilfe.
Hallo, danke für die Antwort ... kann der Service eine Absicht Filter Aktion durchführen? wenn kann ... wie es geht? irgendein Beispiel? –
Die Dokumentation ist bereits auf der Antwort verlinkt, aber Sie können ein praktischeres Beispiel [hier] (http://stackoverflow.com/questions/9092134/broadcast-receiver-within-a-service/9092277#9092277) überprüfen. –
ist nicht das Gleiche, wenn ich Service verwende? Ich muss noch Service für jeden erzeugten Alarm verursachen –