# Class: com.pnfsoftware.jeb.core.units.code.android.ApkManifestHelper

This helper class facilitates access to the data contained in an Android APK Manifest. In particular, the `readAttributeXxx` methods allow easy retrieval of attribute values by tag names, throughout the entire document.

## Constructor: ApkManifestHelper
- parameter: `apk`, type: `com.pnfsoftware.jeb.core.units.code.android.IApkUnit`

Description: This convenience constructor can be used to create a helper from an APK unit. A Manifest [XML unit](IXmlUnit) must exist under the APK unit.
parameter: apk: APK unit

## Constructor: ApkManifestHelper
- parameter: `xml`, type: `com.pnfsoftware.jeb.core.units.IXmlUnit`

Description: Create a manifest helper around the provided manifest unit.
parameter: xml: manifest XML unit

## Constructor: ApkManifestHelper
- parameter: `doc`, type: `org.w3c.dom.Document`

Description: Create a manifest helper around the provided low\-level XML document object.
parameter: doc: manifest XML document

## Method: getActivities
- return type: `java.util.List<java.lang.String>`

Description: Get activity class names.
return: activity class names

## Method: getActivityDescriptions
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.code.android.ApkManifestHelper.ActivityDescription>`

Description: Get activity descriptions.
return: activity descriptions

## Method: getApplicationAttribute
- parameter: `attributeName`, type: `java.lang.String`
- return type: `java.lang.String`

Description: Get an attribute value from the application element.
parameter: attributeName: simple attribute name
return: the attribute value, or null if none exists

## Method: getApplicationComponentFactory
- return type: `java.lang.String`

Description: Get the application component factory class name.
return: the component factory class name, or null if none is declared

## Method: getApplicationDescription
- return type: `com.pnfsoftware.jeb.core.units.code.android.ApkManifestHelper.ApplicationDescription`

Description: Build an application description.
return: null if the manifest does not have an Application element

## Method: getApplicationName
- return type: `java.lang.String`

Description: Get the application class name.
return: the application class name, or null if none is declared

## Method: getEndPointDescriptions
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.code.android.ApkManifestHelper.EndPointDescription>`

Description: Get descriptions for all endpoint types.
return: endpoint descriptions

## Method: getIntendedSystemType
- return type: `com.pnfsoftware.jeb.core.units.code.android.ApkManifestHelper.AndroidSystemType`

Description: Infer the intended Android system type.
return: the intended Android system type

## Method: getMainActivity
- return type: `java.lang.String`

Description: Get the main activity class name.
return: the main activity class name, or null if none was found

## Method: getPackageName
- return type: `java.lang.String`

Description: Get the manifest package name.
return: the package name, or null if none is declared

## Method: getPermissions
- return type: `java.util.List<java.lang.String>`

Description: Get permissions requested by the application.
return: requested permission names

## Method: getProviderDescriptions
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.code.android.ApkManifestHelper.ProviderDescription>`

Description: Get provider descriptions.
return: provider descriptions

## Method: getProviders
- return type: `java.util.List<java.lang.String>`

Description: Get provider class names.
return: provider class names

## Method: getReceiverDescriptions
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.code.android.ApkManifestHelper.ReceiverDescription>`

Description: Get receiver descriptions.
return: receiver descriptions

## Method: getReceivers
- return type: `java.util.List<java.lang.String>`

Description: Get receiver class names.
return: receiver class names

## Method: getSdkVersion
- return type: `int[]`

Description: Retrieve the minimal and target Android version numbers to run the app.
return: a tuple \(minSdkVersion, targetSdkVersion\)

## Method: getServiceDescriptions
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.code.android.ApkManifestHelper.ServiceDescription>`

Description: Get service descriptions.
return: service descriptions

## Method: getServices
- return type: `java.util.List<java.lang.String>`

Description: Get service class names.
return: service class names

## Method: getXmlManifestElement
- return type: `org.w3c.dom.Element`

Description: This low\-level method offers access to the `org.w3c.dom.Element` holding the Manifest root. Use this method to retrieve any tag or attribute stored in the manifest.
return: the manifest root element

## Method: hasApplication
- return type: `boolean`

Description: Determine whether the manifest declares an application element.
return: true if an application element exists

## Method: isDebuggable
- return type: `boolean`

Description: Determine whether the application is marked debuggable.
return: true if the manifest declares a debuggable application

## Protected Method: prepare
- parameter: `doc`, type: `org.w3c.dom.Document`

Description: This implementation checks that the input XML resource is an actual Android Manifest.

## Static Method: canParse
- parameter: `apk`, type: `com.pnfsoftware.jeb.core.units.code.android.IApkUnit`
- return type: `boolean`

Description: Determine whether an APK unit has a manifest XML unit.
parameter: apk: APK unit
return: true if a manifest can be parsed

