在 broadcastReceiver 中使用复选框首选项进行通知

Checkbox preference using in broadcastReceiver for notification

我想在 BroadcastReceiver.I 设置所有复选框中使用我的通知复选框,但我无法停止振动,也无法控制我的通知。我想停止振动。İf 复选框首选项为 false。İf 复选框首选项为 true。振动我的phone。我怎样才能做到这一点? (我是Preference的初学者activity)

我的设置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>

我的设置 activity(所以 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);




            }

看起来您需要从共享首选项中获取负责振动的属性,并取决于它的值更改通知设置。将它添加到警报中的代码 class:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Boolean vibrate = prefs.getBoolean("vibrate", true);

noti.defaults |= Notification.DEFAULT_SOUND;
if (vibrate) {
    noti.defaults |= Notification.DEFAULT_VIBRATE;
}