【发布时间】:2013-11-22 23:03:53
【问题描述】:
我想要做的是,当你点击复选框时,它会启动一个通知图标,并在启动时重复。如果复选框关闭,它将终止通知并且不会在启动时重新启动。我有一半的工作。 (顺便说一句,我的复选框不在活动中,它在偏好类中)这是它的代码。
CheckBoxPreference checkboxPref = (CheckBoxPreference)getPreferenceManager().findPreference("quickTweeterSaver");
checkboxPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
//preference.setDefaultValue(false);
//preference.setChecked(true);
CheckBoxPreference pref = (CheckBoxPreference)
findPreference("quickTweeterSaver");
if(pref != null) {
pref.setChecked(false);
boolean myValue = (Boolean) newValue;
if(myValue)
startService(new Intent(UserSettingsActivity.this, NotifyService.class));
//Toast.makeText(getBaseContext(), "Checked", Toast.LENGTH_SHORT).show();
//quickTweetNotification();
else
stopService(new Intent(UserSettingsActivity.this, NotifyService.class));
//Toast.makeText(getBaseContext(), "Unchecked", Toast.LENGTH_SHORT).show();
quitQuickTweetNotification();
return true;
}
return false;
};
});
如您所见,我有一个 if else 语句,第一部分有效,它启动服务并显示通知(但不会在启动时保持它),而在 else 部分,我必须手动调用一个方法退出通知图标,因为停止服务不起作用。
所以换句话说,我试图让它做的是...... -单击复选框时保持服务启动 - 取消选中复选框时在启动时销毁服务
这是我的通知服务类http://pastebin.com/zgRZpAsF
如果你能帮我解决这个问题,那就太好了。非常感谢各位!
*如果您需要任何其他信息、代码,请告诉我。我马上发帖!
【问题讨论】:
-
您所说的“但不保持开机”是什么意思?是否意味着如果您启动应用程序,它会按照您的意愿运行,但是当您关闭手机并启动时,它的工作方式就不一样了?
-
我的意思是,我想要它,所以当您单击复选框时,当您重新启动手机时通知图标仍会出现,您不必手动再次单击它即可打开。 @Mafro34
-
你有一个BroadcastReciever来捕捉android.intent.action.BOOT_COMPLETED广播吗?
-
是的,我在我的 NotifyService 类中添加了这个,但是当手机启动时它崩溃了
@Override public void onReceive(Context context, Intent arg1) { Toast.makeText(getBaseContext(), "on receive checkbox boot", Toast.LENGTH_SHORT).show(); //startService(new Intent(NotifyService.this, NotifyService.class)); }这是我在下一条评论中的清单条目 -
<receiver android:name=".NotifyService" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> <service android:name=".NotifyService" />
标签: android service checkbox notifications sharedpreferences