Configure fullscreen
To ensure the best SmartApp experience on Point Smart, we recommend displaying the interface in fullscreen mode, without the system navigation bar. This configuration must be done directly in your Android application code and included in the distributed APK.
Follow the steps below to implement fullscreen mode in your application.
Configure the AndroidManifest in your APK
Assign the fullscreen theme to each Activity that should be displayed in fullscreen — for example, the main activity and the rest of the screens in the flow:
xml
<activity android:name=".MainActivity" android:exported="true" android:theme="@style/Theme.Fullscreen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".AnotherActivity" android:theme="@style/Theme.Fullscreen" />
Define your fullscreen theme
In your app styles file (for example res/values/themes.xml), add a style that hides the title bar and enables fullscreen mode:
xml
<style name="Theme.Fullscreen" parent="Theme.MaterialComponents.DayNight.NoActionBar"> <!-- No ActionBar --> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> <!-- Fullscreen --> <item name="android:windowFullscreen">true</item> </style>
Hide the system UI
The bottom navigation bar stays hidden only while the user navigates inside your SmartApp. When moving to the checkout screen (Mercado Pago’s native payments app), the system will show the bar again automatically.
To hide the system bars while navigating in the SmartApp, implement immersive UI logic in a base class (BaseActivity) and make each Activity in the project extend it. This ensures consistent behavior across the flow.
In the example below, immersive mode is re-applied when the window regains focus (for example, after returning from another system screen).
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
open class BaseActivity : AppCompatActivity() {
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
if (hasFocus) hideSystemUI()
}
@Suppress("DEPRECATION")
private fun hideSystemUI() {
window.decorView.systemUiVisibility = (
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
or View.SYSTEM_UI_FLAG_FULLSCREEN
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
)
}
}
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
public class BaseActivity extends AppCompatActivity {
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
hideSystemUI();
}
}
@SuppressWarnings("deprecation")
private void hideSystemUI() {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
);
}
}
Next, make your screens extend BaseActivity instead of AppCompatActivity directly.
With the AndroidManifest, the Theme.Fullscreen theme, and inheritance from BaseActivity applied, your SmartApp fullscreen configuration will be ready. Simply build the APK and validate the behavior on the Point Smart terminal.
