サービス メソッドを含むアラーム サービスのサービス クラスがあります。これらのメソッドは、アラーム サービスがアクティブ化されたときに呼び出されます。私がやりたいことは、サービス クラスで呼び出されるこれらのメソッドの 1 つで別のクラスにインテントを呼び出すことです (アラームが鳴ったとき)。インテントを呼び出すときにエラーにフラグを立てるだけです。これは、アラーム サービスがアクティブ化されたときに呼び出されるメソッド (サービス クラスのメソッド) でのみ発生します。これはクラスのためでありextends Service
、そうではありませんextends Activity
か?よくわかりませんが、アイデアはありますか?
(以下は私のサービスクラスです。別のアクティビティへのインテントがonStart
メソッドで呼び出され、アプリが強制的に閉じられます。)
public class MyAlarmService extends Service {
@Override
public void onCreate() {
// TODO Auto-generated method stub
Toast.makeText(this, "MyAlarmService.onCreate()", Toast.LENGTH_LONG).show();
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(this, "MyAlarmService.onBind()", Toast.LENGTH_LONG).show();
return null;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Toast.makeText(this, "MyAlarmService.onDestroy()", Toast.LENGTH_LONG).show();
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
Toast.makeText(this, "MyAlarmService.onStart()", Toast.LENGTH_LONG).show();
//////////////////////////////////////////////////////////////////////////////////
Intent i = new Intent("com.exercise.AndroidAlarmService.HELLO");
startActivity(i);
The intent that is send to open another class, an activity.
**
/////////////////////////////////////////////////////////////////////////////////
}
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(this, "MyAlarmService.onUnbind()", Toast.LENGTH_LONG).show();
return super.onUnbind(intent);
}
}
LogCat のこれらのエラーの 1 つは次のとおりです。
06-24 01:11:36.857: E/AndroidRuntime(10805): java.lang.RuntimeException: Intent { flg=0x4 cmp=com.exercise.AndroidAlarmService/. MyAlarmService (エキストラあり) }: android.util.AndroidRuntimeException: アクティビティ コンテキストの外部から startActivity() を呼び出すには、FLAG_ACTIVITY_NEW_TASK フラグが必要です。これは本当にあなたが望むものですか?