Android Manifest Changes - YerdySDK/yerdy-android GitHub Wiki

NOTE: Some of these Manifest changes you may have already applied in previous steps. They are all listed here for easier modification of the Android manifest.

Required Permissions

These permissions are required for basic functionality of the Yerdy SDK

<manifest>    
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <application ...></application>
</manifest>

Yerdy optionally can validate against the Google Licensing Validation Library validating download. We keep track of this data but we do not prevent the application from continue to execute on failed validation.

<manifest>
    <uses-permission android:name="com.android.vending.CHECK_LICENSE" />

    <application ...></application>
</manifest>

Services

These are required for the SDK to communicate with the Yerdy servers

<manifest>
    <application ...>
        <service android:name="com.yerdy.services.launch.YRDLaunchService"/>
        <service android:name="com.yerdy.services.messaging.YRDMessagingService"/>
        <service android:name="com.yerdy.services.messaging.YRDMessageReportService"/>
        <service android:name="com.yerdy.services.purchases.YRDReportIAPService"/>
        <service android:name="com.yerdy.services.purchases.YRDReportVirtualPurchaseService"/>
        <service android:name="com.yerdy.services.core.YRDCounterService"/>
        <receiver android:name="com.yerdy.services.push.YRDLocalReceiver"/>
    </application>
</manifest>

Google Cloud Messaging Permissions and Services

These permissions are used to allow Google Cloud Messaging (Google Push Messaging) to fully function enhancing the Yerdy feature set Getting Your GCM API Key

<manifest>
    <permission android:name="[Your Package Name].permission.C2D_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="[Your Package Name].permission.C2D_MESSAGE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.VIBRATE"/>
    <application ...>
        <receiver
            android:name="com.yerdy.services.push.gcm.GCMBroadcastRecieverEx"
            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" />
                <!-- Must match package on OS level 10-15 -->
                <category android:name="[Your Package Name]" />
            </intent-filter>
        </receiver>
        <service android:name="com.yerdy.services.push.gcm.GCMIntentService" />
        <meta-data android:name="Yerdy_GCMSenderId" android:value="gcm:[SenderID]"/>
    </application>
</manifest>

Amazon Device Messaging Permissions and Services

These permissions are used to allow Amazon Device Messaging to fully function enhancing the Yerdy feature set Getting Your Amazon API Keys

<manifest>
	<permission android:name="[Your Package Name].permission.RECEIVE_ADM_MESSAGE" android:protectionLevel="signature" />
	<uses-permission android:name="[Your Package Name].permission.RECEIVE_ADM_MESSAGE" />
	<uses-permission android:name="com.amazon.device.messaging.permission.RECEIVE" />
	<uses-permission android:name="android.permission.WAKE_LOCK" />
    <application ...>
        <amazon:enable-feature android:name="com.amazon.device.messaging" android:required="false"/>
        <service android:name="com.yerdy.services.push.adm.ADMIntentService" android:exported="false" />
        <receiver android:name="com.yerdy.services.push.adm.ADMIntentService$ADMBroadcastReciever"
            android:permission="com.amazon.device.messaging.permission.SEND" >

            <!-- To interact with ADM, your app must listen for the following intents. -->
            <intent-filter>
                <action android:name="com.amazon.device.messaging.intent.REGISTRATION" />
                <action android:name="com.amazon.device.messaging.intent.RECEIVE" />
                <!-- Replace the name in the category tag with your app's package name. -->
                <category android:name="[Your package name]" />
            </intent-filter>
        </receiver>
    </application>
</manifest>

You also need to add the Amazon XML namespace to the root manifest tag.

<manifest ... xmlns:amazon="http://schemas.amazon.com/apk/res/android">
⚠️ **GitHub.com Fallback** ⚠️