因此,基本上,我正在制作一个将在后台运行的应用程序。现在,我的应用程序可以选择启动和停止服务,但默认情况下将在启动时运行该服务。
有没有一种类似于“ Windows启动时启动”的拨动开关的方法,允许用户启用在启动手机时是否要启动该服务的功能?
如果这是我的代码……启动运行该活动的BG服务:
public class startOnBoot extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent arg1)
{
Intent intent = new Intent(context,backgroundService.class);
context.startService(intent);
Log.i("Autostart", "Service Started");
}
}
我有我的切换按钮:
final ToggleButton toggle = (ToggleButton) findViewById(R.id.togglebutton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
Toast.makeText(getBaseContext(), "On", Toast.LENGTH_LONG).show();
enableReceiver(Home.this);
} else {
Toast.makeText(getBaseContext(), "Off", Toast.LENGTH_LONG).show();
disableReciever(Home.this);
}
}
});
还有两个功能:
public void enableReceiver(Context context) {
ComponentName component = new ComponentName(context, startOnBoot.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(
component,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
public void disableReciever(Context context) {
ComponentName component = new ComponentName(context, startOnBoot.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(
component,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}
问题是,尽管这可能会启用和禁用该功能;如果我重新启动手机,它将默认为我的AndroidManifest读取的内容,默认情况下已禁用。因此解决方案不是永久性的,它会重置。我不知道这是否是正确的方法,但是我需要做些什么才能允许用户选择是否需要自动启动功能。
答案 0 :(得分:1)
您可以将切换开关的值(是或否)存储在共享首选项中。在接收器中检索它,如果为true,则启动服务。