(xmlで定義されたチェックボックス設定に基づいて)起動時に条件付きで開始されるサービスを持つアプリケーションがあります。私の放送受信機クラスはこれです:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.util.Log;
public class BootServiceReceiver extends BroadcastReceiver {
private static final String TAG = "tweakmanager";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
SharedPreferences prefLights;
prefLights = PreferenceManager.getDefaultSharedPreferences(context);
if (prefLights.getBoolean("checkbox1", false)) {
Log.i(TAG, "doing nothing...");
} else {
Intent p = new Intent();
p.setAction("app.tweaks.Service");
context.startService(p);
}
}
}
}
チェックボックスがオフになっている場合にのみサービスを開始する必要があることに注意してください。デフォルトの状態がチェックされます。
これで、通常の操作では、すべてが正常に機能しています。チェックボックスがオンの場合、サービスは開始されません。チェックボックスがオフの場合、サービスは起動時に開始されます。
問題は、アプリケーションがインストールされているのに実行されない場合にあります...この場合、チェックボックスがオンになっている場合でも、サービスは次回の起動時に開始されます。受信者が読み取れるファイルにデフォルトの設定を書き込むことを考えましたが、それが最も良い解決策ではないと思います...