xonecode 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/README.md +167 -0
  2. package/dist/agent/authEnDisco.js +56 -0
  3. package/dist/agent/authEnDisco.js.map +1 -0
  4. package/dist/agent/configEnDisco.js +109 -0
  5. package/dist/agent/configEnDisco.js.map +1 -0
  6. package/dist/agent/crearProyecto.js +34 -0
  7. package/dist/agent/crearProyecto.js.map +1 -0
  8. package/dist/agent/entorno.js +124 -0
  9. package/dist/agent/entorno.js.map +1 -0
  10. package/dist/agent/guionizado.js +53 -0
  11. package/dist/agent/guionizado.js.map +1 -0
  12. package/dist/agent/instantanea.js +129 -0
  13. package/dist/agent/instantanea.js.map +1 -0
  14. package/dist/agent/interrupts.js +83 -0
  15. package/dist/agent/interrupts.js.map +1 -0
  16. package/dist/agent/mensajes.js +24 -0
  17. package/dist/agent/mensajes.js.map +1 -0
  18. package/dist/agent/modelos.js +42 -0
  19. package/dist/agent/modelos.js.map +1 -0
  20. package/dist/agent/normalizar.js +20 -0
  21. package/dist/agent/normalizar.js.map +1 -0
  22. package/dist/agent/perfiles.js +103 -0
  23. package/dist/agent/perfiles.js.map +1 -0
  24. package/dist/agent/proyecto.js +107 -0
  25. package/dist/agent/proyecto.js.map +1 -0
  26. package/dist/agent/puente.js +142 -0
  27. package/dist/agent/puente.js.map +1 -0
  28. package/dist/agent/resumenDeTool.js +48 -0
  29. package/dist/agent/resumenDeTool.js.map +1 -0
  30. package/dist/agent/skills.js +65 -0
  31. package/dist/agent/skills.js.map +1 -0
  32. package/dist/agent/textoDeTool.js +113 -0
  33. package/dist/agent/textoDeTool.js.map +1 -0
  34. package/dist/agent/turnoReal.js +173 -0
  35. package/dist/agent/turnoReal.js.map +1 -0
  36. package/dist/agent/verificador.js +65 -0
  37. package/dist/agent/verificador.js.map +1 -0
  38. package/dist/agent/xoneAgent.js +106 -0
  39. package/dist/agent/xoneAgent.js.map +1 -0
  40. package/dist/bin.js +9 -0
  41. package/dist/bin.js.map +1 -0
  42. package/dist/cli/aprobar.js +82 -0
  43. package/dist/cli/aprobar.js.map +1 -0
  44. package/dist/cli/config.js +133 -0
  45. package/dist/cli/config.js.map +1 -0
  46. package/dist/cli/consola.js +346 -0
  47. package/dist/cli/consola.js.map +1 -0
  48. package/dist/cli/describe.js +53 -0
  49. package/dist/cli/describe.js.map +1 -0
  50. package/dist/cli/doctor.js +45 -0
  51. package/dist/cli/doctor.js.map +1 -0
  52. package/dist/cli/main.js +520 -0
  53. package/dist/cli/main.js.map +1 -0
  54. package/dist/cli/markdown.js +90 -0
  55. package/dist/cli/markdown.js.map +1 -0
  56. package/dist/cli/run.js +164 -0
  57. package/dist/cli/run.js.map +1 -0
  58. package/dist/cli/spinner.js +89 -0
  59. package/dist/cli/spinner.js.map +1 -0
  60. package/dist/cli/stdio.js +193 -0
  61. package/dist/cli/stdio.js.map +1 -0
  62. package/dist/cli/tema.js +40 -0
  63. package/dist/cli/tema.js.map +1 -0
  64. package/dist/cli/verify.js +62 -0
  65. package/dist/cli/verify.js.map +1 -0
  66. package/dist/core/bitacora.js +30 -0
  67. package/dist/core/bitacora.js.map +1 -0
  68. package/dist/core/config.js +236 -0
  69. package/dist/core/config.js.map +1 -0
  70. package/dist/core/contextos.js +56 -0
  71. package/dist/core/contextos.js.map +1 -0
  72. package/dist/core/deps.js +51 -0
  73. package/dist/core/deps.js.map +1 -0
  74. package/dist/core/diff.js +79 -0
  75. package/dist/core/diff.js.map +1 -0
  76. package/dist/core/esqueleto.js +366 -0
  77. package/dist/core/esqueleto.js.map +1 -0
  78. package/dist/core/events.js +2 -0
  79. package/dist/core/events.js.map +1 -0
  80. package/dist/core/modelos.js +85 -0
  81. package/dist/core/modelos.js.map +1 -0
  82. package/dist/core/notify.js +106 -0
  83. package/dist/core/notify.js.map +1 -0
  84. package/dist/core/ports.js +114 -0
  85. package/dist/core/ports.js.map +1 -0
  86. package/dist/core/turno.js +127 -0
  87. package/dist/core/turno.js.map +1 -0
  88. package/dist/vendor/hitl.js +103 -0
  89. package/dist/vendor/hitl.js.map +1 -0
  90. package/dist/vendor/skillLoaders/catalog.js +74 -0
  91. package/dist/vendor/skillLoaders/catalog.js.map +1 -0
  92. package/dist/vendor/tokenTracking.js +58 -0
  93. package/dist/vendor/tokenTracking.js.map +1 -0
  94. package/package.json +41 -0
  95. package/skills/xone-debugging/SKILL.md +52 -0
  96. package/skills/xone-debugging/references/faq.md +561 -0
  97. package/skills/xone-debugging/references/troubleshooting-y-glosario.md +429 -0
  98. package/skills/xone-development/SKILL.md +105 -0
  99. package/skills/xone-development/references/anti-patrones.md +94 -0
  100. package/skills/xone-development/references/css/atributos-por-categoria.md +509 -0
  101. package/skills/xone-development/references/css/buenas-practicas-y-parser.md +419 -0
  102. package/skills/xone-development/references/css/dinamicos-cascada-y-componentes.md +550 -0
  103. package/skills/xone-development/references/css/patrones-material-y-temas.md +1140 -0
  104. package/skills/xone-development/references/css/propiedades-y-herencia.md +885 -0
  105. package/skills/xone-development/references/css/selectores-unidades-colores.md +840 -0
  106. package/skills/xone-development/references/datos/appdata-referencia-ampliada.md +457 -0
  107. package/skills/xone-development/references/datos/appdata.md +611 -0
  108. package/skills/xone-development/references/datos/http-sqlmanager-y-crypto.md +720 -0
  109. package/skills/xone-development/references/datos/http.md +366 -0
  110. package/skills/xone-development/references/datos/oauth2-y-replica.md +156 -0
  111. package/skills/xone-development/references/device/biometria-imagedrawing-y-otros.md +544 -0
  112. package/skills/xone-development/references/device/objetos-de-dispositivo.md +583 -0
  113. package/skills/xone-development/references/device/systemsettings-referencia-ampliada.md +396 -0
  114. package/skills/xone-development/references/device/systemsettings-y-permisos.md +342 -0
  115. package/skills/xone-development/references/fundamentos/conceptos-clave.md +695 -0
  116. package/skills/xone-development/references/fundamentos/configuracion-app-xml-ini-mappings.md +668 -0
  117. package/skills/xone-development/references/fundamentos/errores-comunes.md +312 -0
  118. package/skills/xone-development/references/fundamentos/navegacion-convenciones-y-primer-proyecto.md +576 -0
  119. package/skills/xone-development/references/fundamentos/plataforma-y-anatomia-de-proyecto.md +387 -0
  120. package/skills/xone-development/references/indice-completo.md +77 -0
  121. package/skills/xone-development/references/javascript/coleccion-error-y-usuario.md +260 -0
  122. package/skills/xone-development/references/javascript/debugging-y-best-practices.md +245 -0
  123. package/skills/xone-development/references/javascript/metodos-de-los-controles.md +556 -0
  124. package/skills/xone-development/references/javascript/metodos-nativos-de-la-vista.md +114 -0
  125. package/skills/xone-development/references/javascript/motor-js-y-contexto-de-ejecucion.md +319 -0
  126. package/skills/xone-development/references/javascript/objeto-ai-llm-en-dispositivo.md +358 -0
  127. package/skills/xone-development/references/javascript/objetos-creables-a-m.md +527 -0
  128. package/skills/xone-development/references/javascript/objetos-creables-n-z.md +385 -0
  129. package/skills/xone-development/references/javascript/patrones-criticos-seguridad-y-rendimiento.md +595 -0
  130. package/skills/xone-development/references/javascript/patrones-de-navegacion-datos-y-codigo.md +751 -0
  131. package/skills/xone-development/references/javascript/patrones-de-ui-voz-integracion-y-seguridad.md +701 -0
  132. package/skills/xone-development/references/javascript/plantillas-y-funciones-utilitarias.md +647 -0
  133. package/skills/xone-development/references/javascript/self-y-dataobject.md +449 -0
  134. package/skills/xone-development/references/javascript/singletons-globales.md +361 -0
  135. package/skills/xone-development/references/javascript/ui-catalogo-de-metodos.md +464 -0
  136. package/skills/xone-development/references/javascript/ui-gps-camara-y-multimedia.md +506 -0
  137. package/skills/xone-development/references/javascript/ui-navegacion-mensajes-y-vista.md +422 -0
  138. package/skills/xone-development/references/resumen-js-datos-dispositivo.md +80 -0
  139. package/skills/xone-development/references/resumen-xml-y-css.md +74 -0
  140. package/skills/xone-development/references/tipos-de-prop.md +28 -0
  141. package/skills/xone-development/references/xml-ui/asfilter-visibilidad-eventos-y-macros.md +576 -0
  142. package/skills/xone-development/references/xml-ui/atributos-coll-group-frame.md +235 -0
  143. package/skills/xone-development/references/xml-ui/atributos-method-macro-script-event-app.md +244 -0
  144. package/skills/xone-development/references/xml-ui/atributos-prop.md +439 -0
  145. package/skills/xone-development/references/xml-ui/contents-y-macros.md +392 -0
  146. package/skills/xone-development/references/xml-ui/errores-comunes-xml.md +245 -0
  147. package/skills/xone-development/references/xml-ui/estructura-y-nodo-coll.md +326 -0
  148. package/skills/xone-development/references/xml-ui/eventos-ciclo-de-vida-e-interaccion.md +704 -0
  149. package/skills/xone-development/references/xml-ui/eventos-sistema-login-y-personalizados.md +944 -0
  150. package/skills/xone-development/references/xml-ui/layouts-herencia-y-buenas-practicas.md +618 -0
  151. package/skills/xone-development/references/xml-ui/mapas.md +685 -0
  152. package/skills/xone-development/references/xml-ui/mappings-y-colecciones-separadas.md +148 -0
  153. package/skills/xone-development/references/xml-ui/nodos-group-y-frame.md +666 -0
  154. package/skills/xone-development/references/xml-ui/patrones-de-pantalla.md +643 -0
  155. package/skills/xone-development/references/xml-ui/prop-atributos-y-condiciones.md +298 -0
  156. package/skills/xone-development/references/xml-ui/prop-tipos-basicos.md +493 -0
  157. package/skills/xone-development/references/xml-ui/prop-tipos-combos-y-controles.md +664 -0
  158. package/skills/xone-development/references/xml-ui/prop-tipos-listas-y-mapas.md +412 -0
  159. package/skills/xone-plan-builder/SKILL.md +183 -0
  160. package/skills/xone-plan-builder/agents/openai.yaml +5 -0
  161. package/skills/xone-plan-builder/references/TASKS-FORMAT.md +132 -0
  162. package/skills/xone-project-generator/SKILL.md +111 -0
  163. package/skills/xone-project-generator/references/canonical-sizes.md +292 -0
  164. package/skills/xone-project-generator/references/colecciones-base.md +16 -0
  165. package/skills/xone-project-generator/references/convenciones-de-nombres.md +16 -0
  166. package/skills/xone-project-generator/references/ejemplos-por-sector-y-prohibiciones.md +140 -0
  167. package/skills/xone-project-generator/references/fase-3-estilos-css.md +597 -0
  168. package/skills/xone-project-generator/references/fase-6-colecciones.md +762 -0
  169. package/skills/xone-project-generator/references/fase-7-asfilter-e-integraciones.md +142 -0
  170. package/skills/xone-project-generator/references/fase-7-entidades-y-estructura-de-pantalla.md +494 -0
  171. package/skills/xone-project-generator/references/fase-7-plantilla-consola.md +477 -0
  172. package/skills/xone-project-generator/references/fase-7-plantillas-de-pantalla.md +302 -0
  173. package/skills/xone-project-generator/references/fase-7-viewmodes-graficos-y-listas.md +681 -0
  174. package/skills/xone-project-generator/references/fase-7-viewmodes-mapa-y-calendario.md +479 -0
  175. package/skills/xone-project-generator/references/fases-0-2-analisis-y-modelo-de-datos.md +350 -0
  176. package/skills/xone-project-generator/references/fases-10-12-readmes-y-validacion.md +194 -0
  177. package/skills/xone-project-generator/references/fases-4-5-estructura-y-configuracion.md +587 -0
  178. package/skills/xone-project-generator/references/fases-8-9-eventos-y-javascript.md +861 -0
  179. package/skills/xone-project-generator/references/flujo-de-generacion.md +67 -0
  180. package/skills/xone-project-generator/references/plantillas-estandar.md +98 -0
  181. package/skills/xone-project-generator/references/tamanos-canonicos.md +49 -0
  182. package/skills/xone-review/SKILL.md +189 -0
  183. package/skills/xone-spec-builder/SKILL.md +235 -0
  184. package/skills/xone-spec-builder/agents/openai.yaml +5 -0
  185. package/skills/xone-spec-builder/references/ADR-FORMAT.md +55 -0
  186. package/skills/xone-spec-builder/references/CONTEXT-FORMAT.md +42 -0
  187. package/skills/xone-spec-builder/references/PLAN-FORMAT.md +120 -0
@@ -0,0 +1,396 @@
1
+ # XOne — systemSettings: referencia ampliada
2
+
3
+ > Fuente: `xone/v2/xone-project-generator/references/xone-javascript-patterns-d-createobject.md` §2.12.16b. Referencia de la skill; el índice está en [../../SKILL.md](../../SKILL.md).
4
+
5
+ Contenido: segunda redacción del corpus para systemSettings, más extensa que la anterior
6
+
7
+ ---
8
+
9
+ #### 2.12.16b systemSettings - Configuración y Estado del Sistema
10
+
11
+ `systemSettings` es un **singleton global** (no requiere instanciacion). Solo Android salvo indicacion.
12
+
13
+ ##### Pantalla y brillo
14
+
15
+ ```javascript
16
+ systemSettings.setBrightness(75); // 0-100 (se clampa)
17
+ let nBrillo = systemSettings.getBrightness(); // 0-100 (no 0-1)
18
+ systemSettings.setBrightnessMode("automatic"); // Brillo automático
19
+ systemSettings.setBrightnessMode("manual"); // Brillo manual
20
+ let sModoBrillo = systemSettings.getBrightnessMode(); // "manual" o "automatic"
21
+
22
+ // Color de la barra de estado (status bar)
23
+ let ventana = ui.getView(self);
24
+ ventana.setStatusBarColor("#00FF00"); // Color RRGGBB
25
+ ventana.setStatusBarColor(null); // Restaurar color por defecto
26
+ ```
27
+
28
+ ##### Red y conectividad
29
+
30
+ ```javascript
31
+ let bAvion = systemSettings.isAirplaneMode(); // true si modo avion activo
32
+ let bDatosMov = systemSettings.isMobileDataEnabled(); // Puede mentir en algunos dispositivos
33
+ let bHttp = systemSettings.isClearTextTrafficAllowed(); // true si HTTP sin cifrar esta permitido
34
+
35
+ // Hora de red (NTP)
36
+ let fecha = systemSettings.getNetworkTime();
37
+ // Con servidor NTP personalizado:
38
+ // let fecha = systemSettings.getNetworkTime({ ntpServer: "time.google.com" });
39
+ ui.showToast(fecha.toString());
40
+
41
+ // Proveedores de localización disponibles
42
+ let bLocalizacion = systemSettings.hasLocationFeature();
43
+ let bRedLoc = systemSettings.hasNetworkLocationFeature();
44
+ let bGpsLoc = systemSettings.hasGpsLocationFeature();
45
+ ```
46
+
47
+ ##### Batería y optimizaciones
48
+
49
+ ```javascript
50
+ // Comprobar si la app esta exenta de optimizaciones de bateria
51
+ let bExenta = systemSettings.isIgnoringBatteryOptimizations();
52
+
53
+ // Pedir al usuario que exima la app (muestra dialogo del sistema)
54
+ if (!systemSettings.isIgnoringBatteryOptimizations()) {
55
+ systemSettings.requestIgnoreBatteryOptimizations(true);
56
+ }
57
+
58
+ // Optimizaciones especificas de fabricante (Xiaomi, Huawei, etc.)
59
+ // No se puede consultar el estado, solo solicitar la exencion
60
+ systemSettings.requestIgnoreSpecialBatteryOptimizations();
61
+ ```
62
+
63
+ ##### Permisos en runtime
64
+
65
+ ```javascript
66
+ // Consultar permisos declarados/concedidos/no concedidos
67
+ let aTodos = systemSettings.getDeclaredPermissions(); // array de strings
68
+ let aConcedidos = systemSettings.getGrantedPermissions();
69
+ let aNoConcedidos= systemSettings.getNotGrantedPermissions();
70
+
71
+ // Comprobar un permiso concreto (nombre corto XOne o nombre completo Android)
72
+ let bCamara = systemSettings.isPermissionGranted("camera");
73
+ let bBateria= systemSettings.isPermissionGranted("android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS");
74
+
75
+ // Solicitar permisos en runtime
76
+ let future = systemSettings.requestPermissions({
77
+ requestMessage: "Por favor habilite estos permisos para usar la aplicación",
78
+ mandatory : false, // false = puede continuar sin concederlos
79
+ permissions : ["bluetooth"] // nombres cortos XOne
80
+ });
81
+ let bConcedidos = future.get(); // bloquea hasta respuesta del usuario
82
+
83
+ // Revocar permisos (Android >= 13)
84
+ systemSettings.revokePermissions("microphone", "camera", "phone");
85
+
86
+ // Permiso de almacenamiento externo completo (Android >= 11)
87
+ let futureStorage = systemSettings.requestExternalStoragePermission();
88
+ let bStorage = futureStorage.get();
89
+
90
+ // Permiso overlay (dibujar sobre otras apps): consultar antes de solicitar
91
+ let bOverlay = systemSettings.hasOverlayPermission();
92
+ if (!bOverlay) {
93
+ let futureOverlay = systemSettings.requestOverlayPermission();
94
+ bOverlay = futureOverlay.get();
95
+ }
96
+
97
+ // Permiso alarmas exactas
98
+ let futureAlarm = systemSettings.requestScheduleExactAlarmPermission();
99
+ let bAlarm = futureAlarm.get();
100
+
101
+ // Auto-revocacion de permisos (Android apaga permisos de apps sin uso)
102
+ let bAutoRevoke = systemSettings.isPermissionAutoRevokeEnabled();
103
+ if (bAutoRevoke) {
104
+ systemSettings.requestDisablePermissionAutoRevoke();
105
+ }
106
+
107
+ // Comprobar si tiene gestion completa de almacenamiento externo
108
+ let bManager = systemSettings.isExternalStorageManager();
109
+ let bManagerPath = systemSettings.isExternalStorageManager("/sdcard/");
110
+ ```
111
+
112
+ ##### Memoria y rendimiento
113
+
114
+ ```javascript
115
+ // Nivel de memoria actual del dispositivo
116
+ let sLevel = systemSettings.getMemoryLevel();
117
+ // Valores posibles:
118
+ // "background" -> Uso muy ligero, app prescindible
119
+ // "moderate" -> Uso moderado, app prescindible
120
+ // "ui_hidden" -> Uso ligero, limpiar algunos recursos
121
+ // "running_moderate" -> Uso moderado, app visible
122
+ // "running_low" -> Uso alto, app visible
123
+ // "running_critical" -> Uso muy alto, app visible
124
+ // "complete" -> Dispositivo casi sin memoria
125
+
126
+ // Patron comun: solo actuar en niveles criticos
127
+ try {
128
+ let sNivel = systemSettings.getMemoryLevel();
129
+ if (sNivel === "running_low" || sNivel === "running_critical" || sNivel === "complete") {
130
+ ui.showToast("El dispositivo se esta quedando sin memoria");
131
+ }
132
+ } catch(err) {
133
+ // Puede no estar disponible en todas las versiones
134
+ }
135
+
136
+ // Memoria de la JVM (en bytes)
137
+ let nMax = systemSettings.getMaxMemory();
138
+ let nFree = systemSettings.getFreeMemory();
139
+ let sMsg = "Max: " + Math.round(nMax / 1024 / 1024) + " MB"
140
+ + " | Libre: " + Math.round(nFree / 1024 / 1024) + " MB";
141
+
142
+ // RAM física del dispositivo (en bytes)
143
+ let nRamTotal = systemSettings.getTotalMemory(); // RAM física total instalada
144
+ let nRamLibre = systemSettings.getAvailableMemory(); // RAM física disponible ahora
145
+
146
+ // Espacio en disco (en bytes) — comprobar antes de descargas/exportaciones grandes
147
+ let nDiscoLibre = systemSettings.getInternalFreeSpace(); // libre en almacenamiento interno (app + BD)
148
+ let nDiscoTotal = systemSettings.getInternalTotalSpace(); // total del almacenamiento interno
149
+ let nExtLibre = systemSettings.getExternalFreeSpace(); // libre en almacenamiento externo (0 si no está montado)
150
+ let nExtTotal = systemSettings.getExternalTotalSpace(); // total del almacenamiento externo
151
+
152
+ let nMbLibres = Math.round(systemSettings.getInternalFreeSpace() / 1024 / 1024);
153
+ if (nMbLibres < 100) {
154
+ ui.showToast("Quedan solo " + nMbLibres + " MB libres en disco");
155
+ }
156
+
157
+ // Forzar garbage collector (solicitud, no garantiza ejecución inmediata)
158
+ systemSettings.garbageCollect();
159
+
160
+ // Limpiar cache de todas las apps (requiere permiso de sistema)
161
+ systemSettings.clearAllAppsCache();
162
+
163
+ // Borrar todos los datos de la app (equivale a "Borrar datos" en ajustes)
164
+ systemSettings.clearApplicationData();
165
+
166
+ // Limpiar caches internas del framework
167
+ systemSettings.clearJavascriptCache();
168
+ systemSettings.clearBitmapCache();
169
+
170
+ // Compactar los .dex cacheados del motor JS (optimización del arranque tras muchos scripts nuevos)
171
+ systemSettings.mergeJavascriptCache();
172
+ ```
173
+
174
+ ##### Información del dispositivo y hardware
175
+
176
+ ```javascript
177
+ // IDs de hardware
178
+ let ids = systemSettings.getHardwareIds();
179
+ // ids.deviceIdCount -> número de IDs de dispositivo
180
+ // ids.deviceId0, ids.deviceId1, ... -> IMEI u otros IDs
181
+ // ids.wifiMacAddress -> MAC WiFi (puede ser null)
182
+ // ids.androidId -> Android ID unico por instalacion
183
+
184
+ // Device ID propio del framework XOne
185
+ let sDeviceId = systemSettings.getDeviceId();
186
+ systemSettings.setDeviceId("nuevo_id"); // Solo para casos especiales
187
+
188
+ // Tiempo encendido del dispositivo
189
+ let uptime = systemSettings.getDeviceUptime();
190
+ // uptime.ms, uptime.days, uptime.hours, uptime.minutes
191
+
192
+ // Features del hardware disponibles (array de strings tipo "android.hardware.camera")
193
+ let aFeatures = systemSettings.getFeatures();
194
+
195
+ // Teclado fisico
196
+ let bTeclado = systemSettings.hasHardwareKeyboard(); // Tiene teclado fisico
197
+ let bQwerty = systemSettings.hasQwertyKeyboard(); // Es estilo QWERTY
198
+ let b12Teclas = systemSettings.hasTwelveKeysKeyboard();// Es estilo 12 teclas
199
+ // Devuelven true si tiene el hardware, independientemente de si usa el virtual
200
+
201
+ // Arquitectura del proceso
202
+ let b64Bit = systemSettings.is64Bit(); // true en Android M+ con proceso 64 bits
203
+
204
+ // Nombres de la app
205
+ let sPackage = systemSettings.getPackageName(); // ej: "com.empresa.app"
206
+ let sSharedUserId= systemSettings.getSharedUserId();
207
+ ```
208
+
209
+ ##### Versiones de SO y de la app
210
+
211
+ ```javascript
212
+ let nApiLevel = systemSettings.getApiLevel(); // API level del SO (Build.VERSION.SDK_INT)
213
+ let sAndroidVer = systemSettings.getAndroidVersion(); // Versión Android (Build.VERSION.RELEASE, ej: "14")
214
+ let nTargetSdk = systemSettings.getTargetSdkVersion(); // targetSdk declarado por el APK
215
+ let nMinSdk = systemSettings.getMinSdkVersion(); // minSdk del APK (Android >= 7 / API 24, lanza si menor)
216
+ let nVersionCode = systemSettings.getVersionCode(); // versionCode entero del APK instalado
217
+ ```
218
+
219
+ ##### Proceso del sistema
220
+
221
+ ```javascript
222
+ let nPid = systemSettings.getPid(); // ID del proceso actual (Process.myPid)
223
+ let nUid = systemSettings.getUid(); // UID Linux del proceso (Process.myUid)
224
+ let nTid = systemSettings.getTid(); // ID del hilo actual (Process.myTid)
225
+ let nPriority = systemSettings.getThreadPriority(); // Prioridad nice del hilo actual
226
+
227
+ // Matar un proceso por PID (uso avanzado: tareas de mantenimiento, reinicios programáticos)
228
+ systemSettings.killProcess(nPid);
229
+ ```
230
+
231
+ ##### Seguridad del dispositivo
232
+
233
+ ```javascript
234
+ // Dispositivo con PIN/patron/password de bloqueo configurado.
235
+ // Si la app es Device Owner/Profile Owner consulta DevicePolicyManager;
236
+ // si no, usa KeyguardManager.isDeviceSecure().
237
+ let bSecured = systemSettings.isPasswordSecured();
238
+ ```
239
+
240
+ ##### Rutas del sistema de ficheros
241
+
242
+ ```javascript
243
+ let sExternal = systemSettings.getExternalStoragePath();
244
+ let sGaleria = systemSettings.getGalleryPath();
245
+ let sDocumentos = systemSettings.getDocumentsPath();
246
+ let sMusica = systemSettings.getMusicPath();
247
+ let sDescargas = systemSettings.getDownloadsPath();
248
+ let sCapturas = systemSettings.getScreenshotsPath();
249
+ let sTonos = systemSettings.getRingtonesPath();
250
+ let sAlarmas = systemSettings.getAlarmsPath();
251
+ ```
252
+
253
+ ##### Wallpaper
254
+
255
+ ```javascript
256
+ systemSettings.setWallpaper("wallpaper.png"); // Fichero en carpeta de la app
257
+ systemSettings.getWallpaper(appData.getAppPath() + "files/wallpaper_guardado.png");
258
+ // getWallpaper guarda el wallpaper actual en la ruta indicada
259
+ ```
260
+
261
+ ##### Acceso directo en pantalla de inicio (Pin Shortcut)
262
+
263
+ ```javascript
264
+ systemSettings.addPinShortcut({
265
+ id : 1000,
266
+ label: "Nombre del acceso directo",
267
+ icon : "icono.png", // Fichero PNG en carpeta de la app
268
+ extras: { // Datos extra que recibira la app al pulsar
269
+ parametro1: "valor1",
270
+ parametro2: "valor2"
271
+ }
272
+ });
273
+ ```
274
+
275
+ ##### Estado de la app y restricciones
276
+
277
+ ```javascript
278
+ let bRestringida = systemSettings.isBackgroundRestricted(); // Ejecución en background restringida
279
+ let bDatosRestr = systemSettings.isBackgroundDataDisabled(); // Datos en background restringidos
280
+ let bInactiva = systemSettings.isAppInactive(); // App marcada como inactiva por el SO
281
+ let sRestriction = systemSettings.getAppRestrictionStatus(); // Estado de restriccion de la app
282
+ systemSettings.showAppSettingsWindow(); // Abre los ajustes de la app en el sistema (devuelve el propio systemSettings, encadenable)
283
+
284
+ // Actualizacion desde Google Play
285
+ // Devuelve true si hay actualizacion pendiente (y lanza el dialogo de actualizacion)
286
+ // Detener el script si devuelve true para no continuar con la app desactualizada
287
+ // Parametro opcional: "immediate" (obligatoria) o "flexible" (se puede posponer)
288
+ let bUpdate = systemSettings.checkMarketUpdate();
289
+ // let bUpdate = systemSettings.checkMarketUpdate("flexible");
290
+ if (bUpdate) {
291
+ return; // Detener ejecución hasta que el usuario actualice
292
+ }
293
+ ```
294
+
295
+ ##### Perfil de trabajo y MDM
296
+
297
+ ```javascript
298
+ let bWorkProfile = systemSettings.isRunningInWorkProfile(); // MDM con perfil de trabajo XOne
299
+ let bDeviceOwner = systemSettings.isRunningWithDeviceOwner(); // MDM en modo kiosko XOne
300
+ let bHayMdm = systemSettings.isRunningInMdm(); // Cualquier MDM activo
301
+ let bIntune = systemSettings.isRunningInMdm("com.microsoft.windowsintune.companyportal");
302
+ let bXoneMdm = systemSettings.isRunningInMdm("com.xone.live.services");
303
+ // isRunningInMdm acepta el package name del MDM a comprobar
304
+ ```
305
+
306
+ ##### XOneLive: widgets y configuración
307
+
308
+ ```javascript
309
+ // Widgets de la barra de notificaciones
310
+ systemSettings.enableReplicatorWidget();
311
+ systemSettings.disableReplicatorWidget();
312
+ systemSettings.enableLiveWidget();
313
+ systemSettings.disableLiveWidget();
314
+
315
+ // Configuración actual de XOneLive (objeto JS con todos los parametros)
316
+ let jsConfig = systemSettings.getLiveConfig();
317
+ ```
318
+
319
+ ##### Depuracion e integridad
320
+
321
+ ```javascript
322
+ // Integridad del dispositivo (detecta root, emuladores, manipulacion)
323
+ let bIntegro = systemSettings.isDeviceIntegrityOk();
324
+
325
+ // Token de integridad de Google Play (para verificar en servidor)
326
+ let sToken = systemSettings.getIntegrityToken("nonce_unico_por_peticion");
327
+
328
+ // Depurador conectado (util para detectar manipulacion en produccion)
329
+ let bDebugger = systemSettings.isDebuggerConnected();
330
+
331
+ // Activar/desactivar modo debug del framework en tiempo de ejecución
332
+ let bDebugMode = !appData.isDebugMode();
333
+ appData.setDebugMode(bDebugMode);
334
+ ```
335
+
336
+ ##### Accesibilidad
337
+
338
+ ```javascript
339
+ let bAccesibilidad = systemSettings.isAccessibilityEnabled();
340
+ let bTalkBack = systemSettings.isTouchExplorationEnabled(); // TalkBack activo
341
+ let bAutoStart = systemSettings.isAutoStartEnabled(); // App en autoarranque
342
+ ```
343
+
344
+ ##### Ajustes del sistema (propiedades directas)
345
+
346
+ ```javascript
347
+ // AUTO_TIME: hora automática de red
348
+ // Solo se puede escribir en Android < 4.2 (SDK < 17). En versiones superiores es de solo lectura.
349
+ let nSdkVersion = appData.getGlobalMacro("##DEVICE_OSSDKCODE##");
350
+ if (nSdkVersion < 17) {
351
+ systemSettings.AUTO_TIME = 1; // Forzar hora automática
352
+ } else {
353
+ let nAutoTime = systemSettings.AUTO_TIME; // Solo lectura
354
+ // Equivalente: systemSettings.isNetworkAutoTimeEnabled()
355
+ }
356
+ ```
357
+
358
+ ##### Certificados (solo Android < 11)
359
+
360
+ ```javascript
361
+ systemSettings.installCertificate({
362
+ name: "Nombre descriptivo del certificado",
363
+ file: "certificado.pem" // Fichero en carpeta de la app
364
+ });
365
+ ```
366
+
367
+ ##### Intune (Microsoft Intune MDM)
368
+
369
+ ```javascript
370
+ let bIntune = systemSettings.isIntuneCompilation(); // App compilada con soporte Intune
371
+ let sPinRequired = systemSettings.isIntunePinRequired(); // PIN de Intune requerido
372
+ let sIntuneId = systemSettings.getIntuneId(); // ID del dispositivo en Intune
373
+ let bOutdated = systemSettings.isIntuneAgentOutdated(); // Agente Intune desactualizado
374
+ let sMsg = systemSettings.getIntuneAgentOutdatedMessage(); // Mensaje de actualizacion
375
+ ```
376
+
377
+ ##### Firebase Analytics
378
+
379
+ Sólo funciona en flavors compilados con Firebase Analytics. En builds sin Analytics ambos métodos devuelven `false` y registran un aviso en log.
380
+
381
+ ```javascript
382
+ // Activar / desactivar Analytics en runtime (cumplir RGPD/opt-out del usuario)
383
+ systemSettings.setAnalyticsEnabled(true);
384
+ systemSettings.setAnalyticsEnabled(false);
385
+
386
+ // Registrar evento personalizado:
387
+ // - La clave "eventTag" del objeto es el nombre del evento Firebase
388
+ // - El resto de claves se envían como parámetros del evento
389
+ systemSettings.logAnalyticsEvent({
390
+ eventTag : "purchase_completed",
391
+ sku : "item_001",
392
+ amount : 9.99,
393
+ currency : "EUR"
394
+ });
395
+ ```
396
+