2013-05-13 7 views
1

J'ai reçu la logique pour désactiver/activer le récepteur de diffusion de here.Impossible de désactiver le récepteur de diffusion

@Override 
    public void onCheckedChanged(CompoundButton v, boolean checked) { 
     // TODO Auto-generated method stub 

     if (v == disableBlock) { 
      manageBlockSetting(checked); 
     } 
    } 

private void manageBlockSetting(boolean disable) { 
     Log.e(tag, "Disable : " + disable); 
     int flag = disable ? PackageManager.COMPONENT_ENABLED_STATE_DISABLED 
       : PackageManager.COMPONENT_ENABLED_STATE_ENABLED; 
     ComponentName component = new ComponentName(SettingActivity.this, PhoneCallReceiver.class); 

     getApplication().getPackageManager().setComponentEnabledSetting(component, flag, PackageManager.DONT_KILL_APP); 
     editSharedPreferences(StoreConstantValue.SETTING_DISABLE_BLOCK, disable); 
} 

Et Manifest.xml

<receiver android:name="com.vsmart.unocaller.blockingservice.PhoneCallReceiver" 
      android:enabled="true" > 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
      </intent-filter> 
     </receiver> 

Quand je déployables avec android:enabled="false"

Je peux l'activer une fois. Mais quand je veux désactiver. Rien ne se passe, je ne peux pas le désactiver. Il bloque toujours les appels entrants.

Mon appareil est Samsung Galaxy S2 avec Android 2.3.3

Toute aide? Merci

Répondre

1

Au lieu de déclarer le destinataire dans le manifeste, vous pouvez essayer de l'enregistrer/désinscrire du code. Par exemple

private class MyPhoneStateListener extends PhoneStateListener { 
    @Override 
    public void onCallStateChanged(int state, String incomingNumber) { 
     super.onCallStateChanged(state, incomingNumber); 

    } 
} 


private MyPhoneStateListener phoneStateListener = new MyPhoneStateListener(); 

Pour activer

 telephonyManager.listen(phoneStateListener, LISTEN_CALL_STATE); 

Et pour désactiver

telephonyManager.listen(phoneStateListener, 
      PhoneStateListener.LISTEN_NONE); 

 TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 
+0

Merci, pour votre solution. Je vais essayer ça. – SaintTail

Questions connexes