2012-03-29 4 views
-1

私は私の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; 
    } 
} 

ですブロードキャストの動作は

+0

は、空のあなたの「コンテキスト」フィールドをisn't? 代わりに、アプリケーションコンテキストを介してサービスを開始しようとします。 context.startService(新しいインテント(getApplicationContext()、Deletecontact.class)); – andreasg

+0

@emna:サービスを開始するには、コンテキストの代わりにctxを使用します。 –

答えて

0

@Emnaに設定されています。サービスを開始するためにこのコードを使用しました。このコードcontext

context.startService(service); 

あなたはonReceive後のコードの上に追加startService

context=ctx; 

を呼び出す前に、これはそう

以下のように割り当てられません。

そして、あなたは下の例の場合Deletecontact.classのAndroidManifest.xmlでサービスタグなど、このクラスを定義していることを確認してください:これは動作します

<service android:enabled="true" android:name="xxx.yyy.zzz.Deletecontact" 
     ></service> 

希望。

0

は、サービスを開始し、テントを製造するための代わりに、コンテキストのCTXを使用し、これを試してみてください。

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(ctx, Deletecontact.class); 
ctx.startService(service); 
}}} 
関連する問題