复选框偏好使用Broadcastreceiver中的通知



我想在我的broadcastreceiver.i中使用复选框进行通知。我设置了所有复选框,但我无法停止振动,我无法控制我的通知。我想停止振动。CECKBOX的首选项为FALSE。CECKBOX首选项是正确的。振动我的手机。我怎样才能做到这一点?(我是偏好活动的初学者)

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

我的设置活动(因此偏爱):

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;
}

最新更新