title: queryIntentActivities() includes private Activity in results
body: <p>I've an Activity in one of my apps that has an Intent filter, but is still marked as private, i.e. <code>android:exported=false</code>:</p>
  
  <pre><code>    &lt;activity android:exported="false" android:name=".facebook.PostToFacebookActivity" android:icon="@drawable/facebook_icon" android:label="@string/facebook_built_in"&gt;
          &lt;intent-filter&gt;
              &lt;action android:name="android.intent.action.SEND" /&gt;
              &lt;category android:name="android.intent.category.DEFAULT" /&gt;
              &lt;data android:mimeType="text/plain" /&gt;
          &lt;/intent-filter&gt;
      &lt;/activity&gt;
  </code></pre>
  
  <p>(The Activity is for internal use only; part of my app allows the user to choose from a list of all Activities that can send text somewhere, and this allows me to add a couple of app-internal options to the overall list easily.)</p>
  
  <p>However, when I use <code>queryIntentActivites()</code> from a <em>different</em> app, my "private" activity is still returned:</p>
  
  <pre><code>// Returned list includes the above activity, even though it's declared private.
  List&lt;ResolveInfo&gt; infoList = pm.queryIntentActivities(
          myIntent,
          PackageManager.MATCH_DEFAULT_ONLY | 
          PackageManager.GET_INTENT_FILTERS
  );
  </code></pre>
  
  <p>The basic <em>security</em> seems to work fine, as if I try to start the Activity from the other app, I get a security exception. But it seems odd that asking for Activities for an Intent would give you a list including Activities that you're not allowed to start.</p>
  
  <p>I'd have thought that if an Activity was set not to export, it wouldn't even appear in the <code>queryIntentActivities()</code> results. That's the behaviour I want, anyway. Is there a flag I can use to say "don't show me private Activities", or an easy way of filtering the results to get rid of Activities I'm not allowed to start?</p>