2017-06-22 2 views
2

私はブロードキャスト受信機を無効にする際に問題に直面しています。ブロードキャスト受信機は、着信呼および着信呼を受信する。 私の場合、スイッチがオンのときに、スイッチがオフのときに受信機がデータを受信するはずです。受信機はデータの受信を停止する必要があります。着信コールの受信を停止するには、ブロードキャストレシーバを無効にするにはどうすればよいですか?

 switches.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { 

//    sharedPreferences = getApplicationContext().getSharedPreferences("enableApp", Context.MODE_PRIVATE); 
//    SharedPreferences.Editor editor = sharedPreferences.edit(); 
//    editor.putBoolean(getString(R.string.enable), isChecked); 
//    editor.commit(); 


       if(isChecked) 
       { 

        Toast.makeText(getApplicationContext(), "Enabled", Toast.LENGTH_SHORT).show(); 
       } 
       else 
       { 
        PackageManager pm = DashBoardActivity.this.getPackageManager(); 
        ComponentName componentName = new ComponentName(DashBoardActivity.this, CallReceiver.class); 
        pm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
          PackageManager.DONT_KILL_APP); 
        Toast.makeText(getApplicationContext(), "cancelled", Toast.LENGTH_LONG).show(); 
        Toast.makeText(getApplicationContext(), "Disabled", Toast.LENGTH_SHORT).show(); 


       } 
      } 
     }); 

これは私が試したコードです。これは、パッケージマネージャを使用してブロードキャストレシーバを無効にしようとしました。

The broadcast receiver registered in manifestfile 
    <receiver android:name=".receiver.CallReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
      </intent-filter> 
     </receiver> 

レシーバを無効にしたいのですが、レシーバを無効にするにはどうすればよいですか?

+0

、以下のコードは、あなたの問題を解決することができ、これを試してください: - https://stackoverflow.com/questions/6529276/android-how-to-unregister-受信機で作成されたマニフェスト – santoXme

+0

受信機を無効にしたときにあなたのトーストがどのように表示されますか? –

+0

私はその答えを試みました。しかし、私の問題を解決しませんでした。 –

答えて

1

あなたはここから助けを得ることができ

switches.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { 

      sharedPreferences = getApplicationContext().getSharedPreferences("enableApp", Context.MODE_PRIVATE); 
      SharedPreferences.Editor editor = sharedPreferences.edit(); 
      editor.putBoolean(getString(R.string.enable), isChecked); 
      editor.commit(); 


      if(isChecked) 
      { 
       PackageManager pm = DashBoardActivity.this.getPackageManager(); 
       ComponentName componentName = new ComponentName(DashBoardActivity.this, CallReceiver.class); 
       int status = getApplicationContext().getPackageManager().getComponentEnabledSetting(componentName); 
       pm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 
         PackageManager.DONT_KILL_APP); 
       Log.e("Broadcast status",status + ""); 
       Toast.makeText(getApplicationContext(), "Enabled", Toast.LENGTH_SHORT).show(); 


      } 
      else 
      { 


       PackageManager pm = DashBoardActivity.this.getPackageManager(); 
       ComponentName componentName = new ComponentName(DashBoardActivity.this, CallReceiver.class); 
       int status = getApplicationContext().getPackageManager().getComponentEnabledSetting(componentName); 
       pm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
         PackageManager.DONT_KILL_APP); 
       Log.e("Broadcast status",status + ""); 
       Toast.makeText(getApplicationContext(), "cancelled", Toast.LENGTH_LONG).show(); 
       Toast.makeText(getApplicationContext(), "Disabled", Toast.LENGTH_SHORT).show(); 


      } 
     } 
    }); 
関連する問題