ich einen Dienst von meinem broadcastReceiver aktivieren wollen, dann ist dies mein Code, aber es hat nicht funktioniert:Wie kann ich einen Dienst von einem BroadcastReceiver aktivieren?
public class PackageChangeReceiver extends BroadcastReceiver {
Context context;
Deletecontact delete= new Deletecontact();
@Override
public void onReceive(Context ctx, Intent intent) {
Uri uri = intent.getData();
String pkg = uri != null ? uri.getSchemeSpecificPart() : null;
if(intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")&& pkg.equals("com.alarm"))
{Log.i("action","the package is removed");
Intent service = new Intent(context, Deletecontact.class);
context.startService(service);
}}}
und das ist der Service
public void onCreate()
{
//deletecontact();
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
return START_STICKY;
//return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy()
{
super.onDestroy();
}
@Override
public IBinder onBind(Intent arg0) {
return mBinder;
}
public class MyBinder extends Binder {
Deletecontact getService() {
return Deletecontact.this;
}
}
Ich möchte nur den Service anrufen, wenn die Aktion der Sendung wird eingestellt
isn't Ihr "Kontext" Feld leer? Ich würde versuchen, den Dienst über den Anwendungskontext stattdessen starten context.startService (neue Absicht (getApplicationContext(), Deletecontact.class)); – andreasg
@emna: Verwenden Sie CTX anstelle von Kontext, um den Dienst zu starten. –