2017-09-04 5 views
0

Ich möchte Kontrollkästchen für meine Benachrichtigung in meinem BroadcastReceiver.Ich setzte alle Kontrollkästchen, aber ich kann nicht aufhören Vibrationen und ich kann meine Benachrichtigung nicht kontrollieren. Ich möchte die Vibration stoppen. Die Checkbox ist falsch. Die Checkbox ist wahr. (Ich bin begginner bei Preferenceactivity)CheckboxPreference Verwendung in BroadcastReceiver für die Benachrichtigung

Meine Einstellungen 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> 

Meine Einstellungen Aktivität (so 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); 
    } 


    } 

Mein broadcastReceiver:

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




      } 

Antwort

1

aussieht wie du müssen das Attribut, das für die Vibration verantwortlich ist, von gemeinsamen Präferenzen und abhängig erhalten auf seinen Wert ändern Benachrichtigungen Einstellungen. Fügen Sie es Ihrem Code in der Alarmklasse hinzu:

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

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