2015-04-15 2 views
0

Любая помощь приветствуется.Брандмауэр и преференциальный флажок не работают вместе

У меня есть широковещательный приемник в манифесте, когда при андроиде: enabled = "true" получает трансляцию и запускает службу. И когда это андроид: enabled = "false" не получает трансляцию, и служба не запускается.

Это то, что можно было бы ожидать при использовании PackageManger, когда я попытаюсь использовать это с моей активностью в отношении предпочтений, служба получает все время в случае андроида: enabled = "true" или android: enabled = "false" услуга никогда не называется. В обоих случаях не имеет значения, установлен флажок или нет.

Я думаю, что проблема заключается в том, как сконфигурирована деятельность предпочтений, в том, что истинная/ложная логика, которую я пробовал, прикручена. Я не получаю ошибок, которые заставляют думать, что именно так построена Java. На самом деле мне хотелось бы помочь в решении этого вопроса . Заранее благодарим за любую помощь, которую вы могли бы предложить.

Здесь представлены предпочтения XML и предпочтения Java.

<PreferenceScreen 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<CheckBoxPreference 

android:key="CheckBox" 

android:id="@+id/CheckBox1" 
android:title=" StartUp" 
android:summary="Change The CheckBox Status here, it will be saved in 
Preference" /> 
</PreferenceScreen> 

И ниже является Java

package com.collabera.labs.sai; 

import java.util.Calendar; 

import android.app.AlarmManager; 
import android.app.PendingIntent; 
import android.content.ComponentName; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.content.SharedPreferences.Editor; 
mport android.content.SharedPreferences.OnSharedPreferenceChangeListener; 
import android.content.pm.PackageManager; 
import android.os.Bundle; 
import android.preference.PreferenceActivity; 
import android.preference.PreferenceManager; 
import android.view.View; 
import android.widget.CheckBox; 

public class ShowPreferences extends PreferenceActivity implements  
OnSharedPreferenceChangeListener{ 
boolean CheckBox; 
CheckBox cb; 
PreferenceManager pm; 
SharedPreferences sp; 
Editor editor; 
private String CHECKBOX; 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.bootpreference); 

    cb = (CheckBox) findViewById(R.id.CheckBox1); 

    loadPref();} 



    private void loadPref() { 
    // TODO Auto-generated method stub 

    SharedPreferences sp =   
    PreferenceManager.getDefaultSharedPreferences(this); 
    sp.getBoolean("CHECKBOX", false);} 



    private void savePrefs(String key, boolean value) { 
     SharedPreferences sp = 
     PreferenceManager.getDefaultSharedPreferences(this); 
     Editor edit = sp.edit(); 
     edit.putBoolean(CHECKBOX, true); 
     edit.commit(); 
    } 


     public void onClick(View v) { 
     // TODO Auto-generated method stub 
     savePrefs("CHECKBOX", cb.isChecked()); 
     if (cb.isChecked()); 


     } 


     public void pendingIntent() { 
     // TODO Auto-generated method stub 

    } 

    public void onSharedPreferenceChanged(SharedPreferences 
    sharedPreferences, 
     String key, boolean cbValue) { 
    // TODO Auto-generated method stub 

    if(cbValue){ 
     cb.setChecked(true); 

     Intent myIntent = new Intent(getBaseContext(), 
       BroadcastServiceReceiver.class); 

     PendingIntent pendingIntent 
      = PendingIntent.getBroadcast(getBaseContext(), 
        0, myIntent, 0); 

     AlarmManager alarmManager 
       = (AlarmManager)getSystemService(ALARM_SERVICE); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
     calendar.add(Calendar.SECOND, 10); 
     long interval = 60 * 1000; // 
     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 
       calendar.getTimeInMillis(), interval, pendingIntent); 

     PackageManager pm = getPackageManager(); 
     ComponentName compName = 
       new ComponentName(getApplicationContext(), 
         BroadcastServiceReceiver.class); 
     pm.setComponentEnabledSetting(
       compName, 
       PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0); 







     }else{ 
      cb.setChecked(false); 

     Intent myIntent = new Intent(getBaseContext(), 
       BroadcastServiceReceiver.class); 

     PendingIntent pendingIntent 
      = PendingIntent.getBroadcast(getBaseContext(), 
        0, myIntent, 0); 

     AlarmManager alarmManager 
       = (AlarmManager)getSystemService(ALARM_SERVICE); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 

     alarmManager.cancel(pendingIntent); 


     PackageManager pm = getPackageManager(); 
     ComponentName compName = 
       new ComponentName(getApplicationContext(), 
         BroadcastServiceReceiver.class); 
     pm.setComponentEnabledSetting(
       compName, 
       PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);} 


     } 

     @Override 
     public void onSharedPreferenceChanged(SharedPreferences 
     sharedPreferences, 
     String key) { 
     // TODO Auto-generated method stub 
     savePrefs("CHECKBOX", cb.isChecked()); 
     if (cb.isChecked()); 


     } 

     } 

ответ

Смежные вопросы