Starting March 27, 2025, we recommend using android-latest-release
instead of aosp-main
to build and contribute to AOSP. For more information, see Changes to AOSP.
Maintain hotspots between driving sessions
Stay organized with collections
Save and categorize content based on your preferences.
This page describes how you can set up users to maintain hotspots between
driving sessions, similar to the Wi-Fi driving experience in AAOS.
public class CarSettings {
...
@SystemApi
public static final class Global {
...
/**
* Enables persistent tethering when set to {@code "true"}.
*
* <p>When enabled, tethering is started when the car is started given
* that the hotspot was enabled at shutdown and all tethering sessions
* will remain on even if no devices are connected to it.
*
* <p>When disabled, hotspot will turn off automatically if no devices
* are connected and will no longer persist through drives.
*
* @hide
*/
@SystemApi
public static final String ENABLE_PERSISTENT_TETHERING =
"android.car.ENABLE_PERSISTENT_TETHERING";
}
}
To persist tethering, use ENABLE_PERSISTENT_TETHERING
through the
Settings API,
which can also be used to query.
Permissions
Use of the CarWifiManager API is restricted. This new permission is created to
guard access.
public boolean canControlPersistApSettings() { ... }
Protection levels for this permission are:
New permission |
Permission |
Protection level |
Yes |
READ_PERSIST_TETHERING_SETTINGS |
Signature | Privileged |
The persist behavior defaults to not supported. A resource overlay
(config_enablePersistTetheringCapabilities
) is configured to block the
ability to persist tethering. To intentionally persist tethering, set the
value to true
to enable the feature on top of the user preference
opt-in since other system apps with the WRITE_SECURE_SETTINGS
permission can
also control this setting.
The following API determines if the behavior is enabled. Call this API before
you change ENABLE_PERSISTENT_TETHERING
.
/**
* CarWifiManager provides API to allow for applications to perform Wi-Fi specific
* operations.
*
* @hide
*/
@SystemApi
public final class CarWifiManager extends CarManagerBase {
/**
* Returns {@code true} if the persist tethering settings are able to be
* changed.
*
* @hide
*/
@SystemApi
@RequiresPermission(Car.PERMISSION_READ_PERSIST_TETHERING_SETTINGS)
public boolean canControlPersistApSettings() { ... }
}
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-06-26 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-26 UTC."],[],[],null,["# Maintain hotspots between driving sessions\n\nThis page describes how you can set up users to maintain hotspots between\ndriving sessions, similar to the Wi-Fi driving experience in AAOS. \n\n public class CarSettings {\n ...\n\n @SystemApi\n public static final class Global {\n ...\n\n /**\n * Enables persistent tethering when set to {@code \"true\"}.\n *\n * \u003cp\u003eWhen enabled, tethering is started when the car is started given\n * that the hotspot was enabled at shutdown and all tethering sessions\n * will remain on even if no devices are connected to it.\n *\n * \u003cp\u003eWhen disabled, hotspot will turn off automatically if no devices\n * are connected and will no longer persist through drives.\n *\n * @hide\n */\n @SystemApi\n public static final String ENABLE_PERSISTENT_TETHERING =\n \"android.car.ENABLE_PERSISTENT_TETHERING\";\n }\n }\n\nTo persist tethering, use `ENABLE_PERSISTENT_TETHERING` through the\n[Settings API](https://developer.android.com/reference/android/provider/Settings.Global#public-methods),\nwhich can also be used to query.\n\n### Permissions\n\nUse of the CarWifiManager API is restricted. This new permission is created to\nguard access. \n\n public boolean canControlPersistApSettings() { ... }\n\nProtection levels for this permission are:\n\n| New permission | Permission | Protection level |\n|----------------|-----------------------------------|-------------------------|\n| Yes | `READ_PERSIST_TETHERING_SETTINGS` | Signature \\| Privileged |\n\nThe persist behavior defaults to *not supported.* A resource overlay\n([`config_enablePersistTetheringCapabilities`](https://cs.android.com/android/platform/superproject/+/android-latest-release:packages/services/Car/service/res/values/config.xml;l=644)) is configured to block the\nability to persist tethering. To intentionally persist tethering, set the\nvalue to `true` to enable the feature on top of the user preference\nopt-in since other system apps with the `WRITE_SECURE_SETTINGS` permission can\nalso control this setting.\n\nThe following API determines if the behavior is enabled. Call this API before\nyou change `ENABLE_PERSISTENT_TETHERING`. \n\n /**\n * CarWifiManager provides API to allow for applications to perform Wi-Fi specific\n * operations.\n *\n * @hide\n */\n @SystemApi\n public final class CarWifiManager extends CarManagerBase {\n /**\n * Returns {@code true} if the persist tethering settings are able to be\n * changed.\n *\n * @hide\n */\n @SystemApi\n @RequiresPermission(Car.PERMISSION_READ_PERSIST_TETHERING_SETTINGS)\n public boolean canControlPersistApSettings() { ... }\n }"]]