私は私のbroadcastReceiverからサービスをアクティブにする、これは私のコードですが、それはうまくいきませんでした:broadcastReceiverからサービスを有効にするにはどうすればよいですか?
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);
}}}
、これは、私はちょうどその時、サービスを呼び出したいサービス
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;
}
}
ですブロードキャストの動作は
は、空のあなたの「コンテキスト」フィールドをisn't? 代わりに、アプリケーションコンテキストを介してサービスを開始しようとします。 context.startService(新しいインテント(getApplicationContext()、Deletecontact.class)); – andreasg
@emna:サービスを開始するには、コンテキストの代わりにctxを使用します。 –