0
Ich verwende einen Rundfunkempfänger mit mehreren Intent-Filtern. Meine Anforderung besteht darin, auf den Klick der Benachrichtigung zuzugreifen und einen Auftrag mit diesem Klick im Hintergrund (bei minimierter Anwendung) oder im Vordergrund auszuführen. Die ersten beiden Jobs werden beendet, aber der dritte wird nicht ausgeführt. Wo ich falsch liege? ist hier mein CodeBroadcast-Empfänger funktioniert nicht?
public class MainActivity extends Activity{
int choice; EditText et;
@override
onCreate(Bundle SavedInstanceState){
setContentView(R.layout.main);
et= (EditText)findViewById(R.id.choice);
choice=Integer.parseInt(et.getText().toString());
//some_stuff
if (choice==1)
registerReceiver(br, new IntentFilter("ACT_ONE");
else if (choice==2){
registerReceiver(br, new IntentFilter("ACT_TWO");
registerReceiver(br, new IntentFilter("ACT_THREE");
}
else if (choice==3) {
NotificationCompat.Builder nb=new NotificationCompat.Builder(this);
nb.setContentTitle("Do Job_Four");
nb.setContentText("Click here to do job four");
nb.setAutoCancel(true);
nb.setSmallIcon(R.drawable.icon);
nb.setDefaults(Notification.DEFAULT_ALL);
Intent in=new Intent(this,MainActivity.class);
IntentFilter lf=new IntentFilter("ACT_FOUR");
PendingIntent pi=PendingIntent.getBroadcast(this,(int)System.currentTimeMillis(),in,0);
nb.setContentIntent(pi);
NotificationManager nm=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
registerReceiver(br,lf);
nm.notify((int)System.currentTimeMillis(),nb.build());
}
}
private void m_one(){
//job_one_code
}
private void m_two(){
//job_two_code
}
private void m_three(){
//job_three_code
}
BroadcastReceiver br=new BroadcastReceiver(){
@override
onReceive(Context c, Intent i){
if(i.getAction().equals("ACT_ONE")
m_one();
else if(i.getAction().equals("ACT_TWO")
m_two();
else if(i.getAction().equals("ACT_THREE")
m_two();
else if(i.getAction().equals("ACT_FOUR")
m_three();
}
};
@override
public void onDestroy(){
unregisterReceiver(br);
super.onDestroy();
}
}
Hier manifestieren
<receiver android:name=".MainActivity">
<intent-filter android:priority="999">
<action android:name="ACT_ONE"/>
</intent-filter>
</receiver>
Habe ich nur noch "intent.setAction (" some_Action ")" Es ist hleped mir danke, aber gibt es einen Unterschied b/w intent = Neue Absicht ("some_action") und setAction-Methoden? – Naveen