尝试创建一个可在启动时自动启动的应用,但可以选择关闭此功能。编程很新。
这是清单
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
这是听众类
public class MyBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean auto = prefs.getBoolean("as", true);
if(auto == true) {
Intent i = new Intent(context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
这是设置类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
autostart= (Switch) findViewById(R.id.switch1);
autostart.setOnClickListener(this);
settings = getSharedPreferences("as", MODE_PRIVATE);
editor = settings.edit();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean auto = prefs.getBoolean("as", false);
if(auto == true){
autostart.setChecked(true);
}else{
autostart.setChecked(false);
}
@Override
public void onClick(View view) {
Switch auto = (Switch) view;
if (auto.isChecked())
{
editor.putBoolean("as",true);
Toast.makeText(SettingsActivity.this, "autostart on", Toast.LENGTH_SHORT).show();
editor.commit();
}else{
editor.putBoolean("as",false);
Toast.makeText(SettingsActivity.this, "autostart off", Toast.LENGTH_SHORT).show();
editor.commit();
}
}
正如您所看到的,我正在尝试使用按钮来切换自动启动功能,我没有错误,但是程序总是在启动时启动。我究竟做错了什么?
答案 0 :(得分:0)
您将值设置为不同于尝试从中读取的首选项。您正在使用getSharedPreferences("as")
存储它并getDefaultSharedPreferences()
来阅读它。
另外,prefer using package manager to enable or disable the broadcast receiver itself。