CheckboxPreference在broadcastReceiver中用于通知
问题描述:
我想在我的BroadcastReceiver.I中使用复选框来通知我设置了所有复选框,但是我无法阻止振动,并且无法控制我的通知。我想停止振动。如果checkbox首选项是false.İfcheckboxpreference是true.Vibrate我的手机。我该怎么做? (我begginner在Preferenceactivity)CheckboxPreference在broadcastReceiver中用于通知
我设置的XML:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:defaultValue="true"
android:key="vibrate"
android:summary="Telefona görev geldiğinde titreşim yollanır."
android:title="Titreşim"
>
</CheckBoxPreference>
<CheckBoxPreference
android:defaultValue="true"
android:key="notify"
android:summary="Telefona görev geldiğinde ses ile uyarılır."
android:title="Bildirim sesi"
>
</CheckBoxPreference>
</PreferenceScreen>
我的设置活动(所以PreferenceActivity):
public class Ayarlar extends PreferenceActivity {
boolean autovibrate;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
getListView().setBackgroundColor(getResources().getColor(R.color.yüz));}
public void onStart(Intent intent, int startId) {
getPrefs();
}
private void getPrefs() {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
autovibrate = prefs.getBoolean("vibrate", true);
}
}
我的广播接收器:
public class Alarm extends BroadcastReceiver {
cancelAlarm(context);
setalarm(context);
}
It is in a if loop.
Notification noti = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
noti = new Notification.Builder(context)
.setTicker(" size bir bildirim yolladı.")
.setContentTitle("")
.setContentText(listData.get(secilmissayı) + " i arama zamanı")
.setSmallIcon(R.drawable.alarm_24dp)
.addAction(R.drawable.cal, "Ara", pendingIntentYes)
.addAction(R.drawable.se, "Daha Sonra", pendingIntentYes2)
.setContentIntent(pIntent).getNotification();
}
NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
noti.flags |= Notification.FLAG_AUTO_CANCEL;
noti.defaults |= Notification.DEFAULT_ALL;
noti.defaults |= Notification.DEFAULT_VIBRATE;
notificationManager.notify(0, noti);
I tried achive settings activity
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
}
答
看起来你需要从共享首选项中获取负责振动的属性在它的价值改变通知设置。将它添加到闹钟类中的代码中:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Boolean vibrate = prefs.getBoolean("vibrate", true);
noti.defaults |= Notification.DEFAULT_SOUND;
if (vibrate) {
noti.defaults |= Notification.DEFAULT_VIBRATE;
}