diff options
author | Vinit Deshpande <vinitd@google.com> | 2014-11-06 17:58:11 -0800 |
---|---|---|
committer | Vinit Deshpande <vinitd@google.com> | 2014-11-12 10:47:55 -0800 |
commit | cc9395f7b604c626e8c45021b52dad3abff9bd18 (patch) | |
tree | bd740a7e02df8d77fc8ad3324d5cb8d36bc0262b /service/java/com | |
parent | f93f774c884d2fcbeadaf575a3b3fa065da2e3d0 (diff) | |
download | android_frameworks_opt_net_wifi-cc9395f7b604c626e8c45021b52dad3abff9bd18.tar.gz android_frameworks_opt_net_wifi-cc9395f7b604c626e8c45021b52dad3abff9bd18.tar.bz2 android_frameworks_opt_net_wifi-cc9395f7b604c626e8c45021b52dad3abff9bd18.zip |
Don't allow SCAN_REQUEST broadcast to launch apps
This change sets the package to Wifi package for all the timer
broadcasts it schedules. This way, the alarm manager won't wake
up any other apps.
Bug: 17611296
Change-Id: I248695b2c4763c799b730a236945e91757dfde16
Diffstat (limited to 'service/java/com')
-rw-r--r-- | service/java/com/android/server/wifi/WifiStateMachine.java | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java index f02248413..ca0a18943 100644 --- a/service/java/com/android/server/wifi/WifiStateMachine.java +++ b/service/java/com/android/server/wifi/WifiStateMachine.java @@ -900,11 +900,8 @@ public class WifiStateMachine extends StateMachine { } mAlarmManager = (AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE); - Intent scanIntent = new Intent(ACTION_START_SCAN, null); - mScanIntent = PendingIntent.getBroadcast(mContext, SCAN_REQUEST, scanIntent, 0); - - Intent batchedIntent = new Intent(ACTION_REFRESH_BATCHED_SCAN, null); - mBatchedScanIntervalIntent = PendingIntent.getBroadcast(mContext, 0, batchedIntent, 0); + mScanIntent = getPrivateBroadcast(ACTION_START_SCAN, SCAN_REQUEST); + mBatchedScanIntervalIntent = getPrivateBroadcast(ACTION_REFRESH_BATCHED_SCAN, 0); mDefaultFrameworkScanIntervalMs = mContext.getResources().getInteger( R.integer.config_wifi_framework_scan_interval); @@ -1054,6 +1051,14 @@ public class WifiStateMachine extends StateMachine { mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL); } + + PendingIntent getPrivateBroadcast(String action, int requestCode) { + Intent intent = new Intent(action, null); + intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); + intent.setPackage(this.getClass().getPackage().getName()); + return PendingIntent.getBroadcast(mContext, requestCode, intent, 0); + } + private int mVerboseLoggingLevel = 0; int getVerboseLoggingLevel() { @@ -5341,6 +5346,7 @@ public class WifiStateMachine extends StateMachine { /* send regular delayed shut down */ Intent driverStopIntent = new Intent(ACTION_DELAYED_DRIVER_STOP, null); + driverStopIntent.setPackage(this.getClass().getPackage().getName()); driverStopIntent.putExtra(DELAYED_STOP_COUNTER, mDelayedStopCounter); mDriverStopIntent = PendingIntent.getBroadcast(mContext, DRIVER_STOP_REQUEST, driverStopIntent, |