<!-- content for http://king370.blogspot.com/2013/02/implementing-android-push-notifications.html -->

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  android:versionCode="1"
  android:versionName="1.0" package="com.urbanairship.push.sample">

  <!-- minSdkVersion sets runtime compatibility ("will run on API level 4") -->
  <!-- targetSdkVersion should be set to the latest version tested, to disable compatibility modes
  ("was tested with API level 9 features") -->
  <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="9"/>
    
  <!-- REQUIRED PERMISSIONS (for Urban Airship GCM) -->
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.VIBRATE"/>
  
  <!-- GCM requires a Google account. -->
  <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  <!-- Keeps the processor from sleeping when a message is received. -->
  <uses-permission android:name="android.permission.WAKE_LOCK" />

  <!-- This app has permission to register with GCM and receive message -->
  <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

  <!-- MODIFICATION REQUIRED - Replace "com.urbanairship.push.sample" with your package name -->
  <permission android:name="com.urbanairship.push.sample.permission.C2D_MESSAGE" android:protectionLevel="signature" />
  <uses-permission android:name="com.urbanairship.push.sample.permission.C2D_MESSAGE" />
  <!-- The two elements above ensure that only this application can receive the messages and registration result -->
  <!-- END Urban Airship Required Permissions -->

  <!-- OPTIONAL Urban Airship Settings -->
  <!-- REQUIRED FOR LOCATION -->
  <!-- Use ACCESS_COARSE_LOCATION if GPS access is not necessary -->
  <!-- uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /-->
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

  <!--  OPTIONAL - This permission is only necessary if your app has multiple processes -->
  <!--  <uses-permission android:name="android.permission.BROADCAST_STICKY" /> -->
  <!-- END OPTIONAL Urban Airship Settings -->

  <application android:label="@string/app_name"
    android:icon="@drawable/icon"
    android:name="com.urbanairship.push.sample.MyApplication"
    android:debuggable="true"
    android:allowClearUserData="true"
    android:enabled="true">

    <activity android:name="com.urbanairship.push.sample.MainActivity"
      android:label="@string/app_name">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

    <activity android:name="com.urbanairship.push.sample.PushPreferencesActivity" />
    <activity android:name="com.urbanairship.push.sample.LocationActivity" />

    <!-- REQUIRED for Urban Airship GCM-->
    <receiver android:name="com.urbanairship.CoreReceiver" />
    <receiver android:name="com.urbanairship.push.GCMPushReceiver"
      android:permission="com.google.android.c2dm.permission.SEND">       
      <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
        
        <!-- MODIFICATION REQUIRED - Use your package name as the category -->
        <category android:name="com.urbanairship.push.sample" />
      </intent-filter>
    </receiver>

    <service android:name="com.urbanairship.push.PushService" android:label="Push Notification Service" />
    <service android:name="com.urbanairship.push.PushWorkerService" android:label="Push Notification Worker Service" />
    <service android:name="com.urbanairship.analytics.EventService" android:label="Event Service" />

    <!-- This is required for persisting preferences related to push and location -->
    <!-- MODIFICATION REQUIRED - Use your package name + ".urbanairship.provider" in the android:authorities -->
    <provider android:name="com.urbanairship.UrbanAirshipProvider"
      android:authorities="YOUR_PACKAGE_NAME.urbanairship.provider"
      android:exported="false"
      android:multiprocess="true" />
    <!-- END OF REQUIRED ITEMS -->

    <!-- OPTIONAL (for segments support) -->
    <service android:name="com.urbanairship.location.LocationService" android:label="Segments Service"/>

    <!-- OPTIONAL, if you want to receive push, push opened and registration completed intents -->
    <!-- Replace the receiver below with your package and class name -->
    <receiver android:name="com.urbanairship.push.sample.IntentReceiver" />
  </application>
</manifest>