# Titanium.App.Android

> A module used to access Android application resources.

- Source: https://titaniumsdk.com/docs/sdk/Titanium.App.Android
- Titanium SDK version: 14.0.0
- Kind: module
- Platforms: Android
- Since: Titanium SDK 1.5
- Extends: Titanium.Module
- Inheritance: Titanium.Module > Titanium.Proxy

For more information, refer to the official documentation on the Android Developer website about
[application resources](https://developer.android.com/guide/topics/resources/index.html).

## Example: Custom String Resource

Custom Android resources may be placed in `platform/android` in the project root.
For example, to utilize a custom localization file, create and populate
`platform/android/res/values/mystrings.xml` with the following data.

``` xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="mystring">testing 1 2 3</string>
</resources>
```

In Javascript, this can be accessed as follows.

``` js
var activity = Ti.Android.currentActivity;
var R = Ti.App.Android.R;

var mystring = activity.getString(R.string.mystring);
Ti.API.debug("mystring = " + mystring);
```

## Example: Change Android icon at runtime

Add these `<activity-alias>` nodes into the tiapp.xml `<application>` block:

``` xml
<activity-alias android:enabled="true" android:name=".default" android:targetActivity=".TestActivity" android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity-alias>
<activity-alias android:icon="@mipmap/ic_launcher" android:name=".red" android:enabled="false" android:targetActivity=".TestActivity" android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity-alias>
```

Change the `android:targetActivity` to point at your main activity, `android:name` is used inside the JavaScript code
to switch between the alias nodes and `android:icon` will be the new icon.

In Javascript, this can be accessed as follows.

``` js
const win = Ti.UI.createWindow({layout: "vertical"});

const btn1 = Ti.UI.createButton({title: "switch to red"});
const btn2 = Ti.UI.createButton({title: "switch to default"});

btn1.addEventListener("click", function() {
  Ti.App.Android.changeIcon({
    from: "default",
    to: "red"
  });
});
btn2.addEventListener("click", function() {
  Ti.App.Android.changeIcon({
    from: "red",
    to: "default"
  });
});

win.add([btn1, btn2]);
win.open();
```

## Properties

### appVersionCode

- Type: Number
- Platforms: Android
- Since: Titanium SDK 3.3.0
- Permission: read-only

The version number of the application.

### appVersionName

- Type: String
- Platforms: Android
- Since: Titanium SDK 3.3.0
- Permission: read-only

The version name of the application.

### launchIntent

- Type: Titanium.Android.Intent
- Platforms: Android
- Since: Titanium SDK 3.3.0
- Permission: read-only

Return the intent that was used to launch the application.

This intent will not change for the lifetime of the application. Its [action](https://titaniumsdk.com/docs/sdk/Titanium.Android.Intent.md#action)
is typically set to "android.intent.action.MAIN" when launched via the app list screen.

This launch intent can be used to resume the app while backgrounded via the
[startActivity()](https://titaniumsdk.com/docs/sdk/Titanium.Android.Activity.md#startActivity) method or via a notification.

When the app is launched via a data intent such as a URL, shortcut, notification, etc. then that intent
is provided by the [Ti.Android.rootActivity](https://titaniumsdk.com/docs/sdk/Titanium.Android.md#rootActivity) object's
[intent](https://titaniumsdk.com/docs/sdk/Titanium.Android.Activity.md#intent) property instead. That intent will initially be set to the
launch intent, but will change when a ["newintent"](https://titaniumsdk.com/docs/sdk/Titanium.Android.Activity.md#newintent) event has been fired.
You should always read the root activity's intent instead of the launch intent for data.

### R

- Type: Titanium.Android.R
- Platforms: Android
- Permission: read-only

The `R` namespace for application resources.

The properties and sub-properties of this object relate directly to the
native application resources `R` class, and thus have the same syntax.
For more information, refer to the official documentation on the
Android Developer website about
[accessing application resources](https://developer.android.com/guide/topics/resources/accessing-resources.html).

For example, if the file `platform/android/res/drawable/icon.png`
exists in the project, it can be accessed using its resource name,
as follows.

``` js
var resid = Titanium.App.Android.R.drawable.icon;
```

To access system-wide resources, rather than application resources, use
[Titanium.Android.R](https://titaniumsdk.com/docs/sdk/Titanium.Android.R.md) instead.

## Methods

### changeIcon

- Platforms: Android
- Since: Titanium SDK 14.0.0

Changes the Android app icon at runtime.

You have to add `<activity-alias>` nodes for every icon to the tiapp.xml and use `changeIcon()` to switch from one
to another. Check the `Change Android icon at runtime` example for more details. The app has to keep track of
the current icon state in order to set the from/to parameters.

One alias must have an `<intent-filter>` with the `MAIN` action and the `LAUNCHER` category and must not
set `android:enabled="false"`. The build then removes the launcher entry of the main activity. If no
alias fulfills this, the main activity keeps its launcher entry.

Parameters:

- `options` (ChangeIconOptions): Dictionary with the `from` and `to` alias names.

### clearUserCache

- Platforms: Android
- Since: Titanium SDK 13.1.0

Clears app data and cache. This will close the app.

## Events

### shortcutitemclick

- Platforms: Android
- Since: Titanium SDK 7.5.0

Fired when a [Titanium.UI.ShortcutItem](https://titaniumsdk.com/docs/sdk/Titanium.UI.ShortcutItem.md) is clicked.

Event properties:

- `id` (String): Identifier of the clicked shortcut item.

## Inherited members

7 members are inherited. Each is documented on the type that declares it.

- [Titanium.Proxy](https://titaniumsdk.com/docs/sdk/Titanium.Proxy.md): `addEventListener`, `apiName`, `applyProperties`, `bubbleParent`, `fireEvent`, `lifecycleContainer`, `removeEventListener`

---

- This corpus documents Titanium SDK 14.0.0. Anything here that does not name a version describes 14.0.0.
- Titanium is maintained by TiDev. The Appcelerator toolchain is retired: there is no `appc` CLI, no Appcelerator Studio and no hosted build service. The supported CLI is `titanium` on npm, invoked as `ti`.

