Why does accepting Calendar invites open a browser? Can I prevent it?
There is very little you can do! The calendar application is wired up to trigger a open intent to the web browser to accept the invites, its written up in the package's manifest.

&lt;activity android:name="GoogleCalendarUriIntentFilter" android:label="@string/app_label"
    android:theme="@android:style/Theme.NoDisplay"
    android:configChanges="orientation|keyboardHidden"&gt;

    &lt;intent-filter
       android:priority="50"&gt;
       &lt;action android:name="android.intent.action.VIEW" /&gt;
       &lt;category android:name="android.intent.category.DEFAULT" /&gt;
       &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
       &lt;data android:scheme="http" android:host="www.google.com" android:pathPrefix="/calendar/event" /&gt;
       &lt;data android:scheme="https" android:host="www.google.com" android:pathPrefix="/calendar/event" /&gt;
       &lt;data android:scheme="http" android:host="www.google.com" android:pathPattern="/calendar/hosted/.*/event" /&gt;
       &lt;data android:scheme="https" android:host="www.google.com" android:pathPattern="/calendar/hosted/.*/event" /&gt;
    &lt;/intent-filter&gt;
&lt;/activity&gt;


Source: packages/apps/Calendar/src/com/android/calendar/GoogleCalendarUriIntentFilter.java