Index: src/bp-core/bp-core-filters.php
===================================================================
--- src/bp-core/bp-core-filters.php
+++ src/bp-core/bp-core-filters.php
@@ -69,6 +69,25 @@
 add_filter( 'comments_open', 'bp_comments_open', 10, 2 );
 
 /**
+ * Fixes parsing of 'true' and 'false' strings into booleans when using wp_parse_str().
+ *
+ * @since BuddyPress (2.2.0)
+ *
+ * @param  array $r The array to check for 'true' / 'false' strings
+ * @return array
+ */
+function bp_core_parse_array_values_to_boolean( $r = array() ) {
+	foreach( (array) $r as $key => $value ) {
+		if ( is_string( $value ) && ( 'true' === $value || 'false' === $value ) ) {
+			$r[$key] = filter_var( $value, FILTER_VALIDATE_BOOLEAN );
+		}
+	}
+
+	return $r;
+}
+add_filter( 'wp_parse_str', 'bp_core_parse_array_values_to_boolean' );
+
+/**
  * Prevent specific pages (eg 'Activate') from showing on page listings.
  *
  * @uses bp_is_active() checks if a BuddyPress component is active.
Index: tests/phpunit/testcases/core/functions.php
===================================================================
--- tests/phpunit/testcases/core/functions.php
+++ tests/phpunit/testcases/core/functions.php
@@ -614,4 +614,15 @@
 			date_default_timezone_set( $tz_backup );
 		}
 	}
+
+	/**
+	 * @group wp_parse_str
+	 */
+	public function test_wp_parse_str_strings_as_booleans() {
+		// use a string; wp_parse_str() is used
+		$r = wp_parse_args( 'this_should_be_bool_false=false&this_should_be_bool_true=true', array() );
+
+		$this->assertFalse( $r['this_should_be_bool_false'] );
+		$this->assertTrue(  $r['this_should_be_bool_true'] );
+	}
 }
