diff --git a/fmapp2/src/com/caf/fmradio/FMRadio.java b/fmapp2/src/com/caf/fmradio/FMRadio.java
index 4c9ac20..5ab8276 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadio.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadio.java
@@ -3248,7 +3248,7 @@
             };
             IntentFilter iFilter = new IntentFilter();
             iFilter.addAction(Settings.ACTION_FM_SETTING);
-            registerReceiver(mFmSettingReceiver, iFilter);
+            registerReceiver(mFmSettingReceiver, iFilter, Context.RECEIVER_EXPORTED);
         }
     }
 
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index 0b06f3b..4807355 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -494,7 +494,7 @@
              iFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
              iFilter.addAction(Intent.ACTION_MEDIA_EJECT);
              iFilter.addDataScheme("file");
-             registerReceiver(mSdcardUnmountReceiver, iFilter);
+             registerReceiver(mSdcardUnmountReceiver, iFilter, Context.RECEIVER_EXPORTED);
          }
      }
 
@@ -522,7 +522,7 @@
            };
            IntentFilter iFilter = new IntentFilter();
            iFilter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
-           registerReceiver(mAirplaneModeChanged, iFilter);
+           registerReceiver(mAirplaneModeChanged, iFilter, Context.RECEIVER_EXPORTED);
        }
    }
 
@@ -555,7 +555,7 @@
             };
             IntentFilter iFilter = new IntentFilter();
             iFilter.addAction(Intent.ACTION_USER_SWITCHED);
-            registerReceiver(mRegisterUserSwitched, iFilter);
+            registerReceiver(mRegisterUserSwitched, iFilter, Context.RECEIVER_EXPORTED);
        }
    }
 
@@ -656,7 +656,7 @@
             iFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
             iFilter.addAction(BluetoothA2dp.ACTION_ACTIVE_DEVICE_CHANGED);
             iFilter.addCategory(Intent.CATEGORY_DEFAULT);
-            registerReceiver(mHeadsetReceiver, iFilter);
+            registerReceiver(mHeadsetReceiver, iFilter, Context.RECEIVER_EXPORTED);
         }
     }
 
@@ -678,7 +678,7 @@
                 }
             };
             IntentFilter intentFilter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);
-            registerReceiver(mAudioBecomeNoisyListener, intentFilter);
+            registerReceiver(mAudioBecomeNoisyListener, intentFilter, Context.RECEIVER_EXPORTED);
         }
     }
 
@@ -709,7 +709,7 @@
             };
             IntentFilter commandFilter = new IntentFilter();
             commandFilter.addAction("com.android.music.musicservicecommand");
-            registerReceiver(mMusicCommandListener, commandFilter);
+            registerReceiver(mMusicCommandListener, commandFilter, Context.RECEIVER_EXPORTED);
         }
     }
     public void registerSleepExpired() {
@@ -723,7 +723,7 @@
                 }
             };
             IntentFilter intentFilter = new IntentFilter(SLEEP_EXPIRED_ACTION);
-            registerReceiver(mSleepExpiredListener, intentFilter);
+            registerReceiver(mSleepExpiredListener, intentFilter, Context.RECEIVER_EXPORTED);
         }
     }
     public void registerRecordTimeout() {
@@ -737,7 +737,7 @@
                 }
             };
             IntentFilter intentFilter = new IntentFilter(RECORD_EXPIRED_ACTION);
-            registerReceiver(mRecordTimeoutListener, intentFilter);
+            registerReceiver(mRecordTimeoutListener, intentFilter, Context.RECEIVER_EXPORTED);
         }
     }
     public void registerDelayedServiceStop() {
@@ -754,7 +754,7 @@
                 }
             };
             IntentFilter intentFilter = new IntentFilter(SERVICE_DELAYED_STOP_ACTION);
-            registerReceiver(mDelayedServiceStopListener, intentFilter);
+            registerReceiver(mDelayedServiceStopListener, intentFilter, Context.RECEIVER_EXPORTED);
         }
     }
 
@@ -1680,7 +1680,7 @@
             IntentFilter iFilter = new IntentFilter();
             iFilter.addAction(Intent.ACTION_SCREEN_ON);
             iFilter.addAction(Intent.ACTION_SCREEN_OFF);
-            registerReceiver(mScreenOnOffReceiver, iFilter);
+            registerReceiver(mScreenOnOffReceiver, iFilter, Context.RECEIVER_EXPORTED);
         }
     }
 
diff --git a/fmapp2/src/com/caf/fmradio/FMStats.java b/fmapp2/src/com/caf/fmradio/FMStats.java
index 9fe4cb2..063326d 100644
--- a/fmapp2/src/com/caf/fmradio/FMStats.java
+++ b/fmapp2/src/com/caf/fmradio/FMStats.java
@@ -3737,7 +3737,7 @@
                }
            };
            IntentFilter intentFilter = new IntentFilter(BAND_SWEEP_START_DELAY_TIMEOUT);
-           registerReceiver(mBandSweepDelayExprdListener, intentFilter);
+           registerReceiver(mBandSweepDelayExprdListener, intentFilter, Context.RECEIVER_EXPORTED);
         }
     }
 
@@ -3754,7 +3754,7 @@
                }
            };
            IntentFilter intentFilter = new IntentFilter(BAND_SWEEP_DWELL_DELAY_TIMEOUT);
-           registerReceiver(mBandSweepDwellExprdListener, intentFilter);
+           registerReceiver(mBandSweepDwellExprdListener, intentFilter, Context.RECEIVER_EXPORTED);
         }
     }
 
