Me gustaría mostrar la configuración de sincronización para una cuenta de AccountManager / SyncAdapter , e incluso la cuenta es creada por la aplicación que intenta mostrarla (las autoridades de contenido también coincidirían). Pero, ¿cómo iniciar indirectamente UserAndAccountDashboardActivity con un Intent ? La página de configuración que equivale a Settings.EXTRA_AUTHORITIES (correo electrónico) incluso parece ser un nivel más profundo.
Esta Intent funciona en el sistema operativo Android, pero en el sistema operativo Harmony me muestra WifiSettingsActivity .
protected void showSyncSettings(@NonNull String authority) { Intent intent = new Intent(); intent.setAction(Settings.ACTION_SYNC_SETTINGS); intent.putExtra(Settings.EXTRA_AUTHORITIES, new String[] {authority}); try { this.startActivity(intent); } catch (ActivityNotFoundException e) { Log.e(LOG_TAG, e.getMessage()); } } Este problema es ACTION_SYNC_SETTINGS , y UserAndAccountDashboardActivity es casi lo mismo:
En algunos casos, es posible que no exista una Actividad coincidente, así que asegúrese de protegerse contra esto.
E/ActivityTaskManager: START {act=android.settings.SYNC_SETTINGS flg=0x10000000 hwFlg=0x10 cmp=com.android.settings/.HWSettings} result: 3 Lo que he intentado hasta ahora es iniciar UserAndAccountDashboardActivity directamente:
Intent intent = new Intent(); intent.setClassName("com.android.settings", "com.android.settings.Settings$UserAndAccountDashboardActivity"); startActivity(intent); Lo que sugiere que no se puede iniciar UserAndAccountDashboardActivity directamente:
W/ActivityTaskManager: Denegación de permiso:
Intent { cmp=com.android.settings/.Settings$UserAndAccountDashboardActivity (has extras) }deProcessRecord{e07293d 8294:com.acme.debug/u0a208} (pid=8294, uid=10208)no exportado desde uid 1000.
Al iniciarlo con adb shell am , tampoco hace mucho:
HWWGR:/ $ am start -n com.android.settings/com.android.settings.Settings -e :android:show_fragment com.android.settings.Settings$UserAndAccountDashboardActivity Starting: Intent { cmp=com.android.settings/.Settings (has extras) }Esta parece ser la página de configuración principal, desde donde el usuario todavía tiene que desplazarse hacia abajo 2-3 pantallas:
intent.setClassName("com.android.settings", "com.android.settings.HWSettings"); Y puedo iniciar la mayoría de las otras subpáginas de Settings / extends HWSettings directamente:
BluetoothSettingsActivity • WirelessSettingsActivity • TetherSettingsActivity • VpnSettingsActivity • DateTimeSettingsActivity • WifiSettingsActivity • LocalePickerActivity • UserDictionarySettingsActivity • SoundSettingsActivity • DisplaySettingsActivity • DeviceInfoSettingsActivity • ManageApplicationsActivity • StorageUseActivity • DevelopmentSettingsActivity • AccessibilitySettingsActivity • CaptioningSettingsActivity • LocationSettingsActivity • RunningServicesActivity • PowerUsageSummaryActivity • CryptKeeperSettingsActivity • DeviceAdminSettingsActivity • DataUsageSummaryActivity • AdvancedWifiSettingsActivity • TextToSpeechSettingsActivity • WifiDisplaySettingsActivity • DreamSettingsActivity • UserSettingsActivity • NotificationAccessSettingsActivity • TrustedCredentialsSettingsActivity • PrintSettingsActivity
Incluso hay más subpáginas, que se pueden iniciar directamente:
HWWGR:/ $ dumpsys package | grep -Eo "^[[:space:]]+[0-9a-f]+[[:space:]]+com.android.settings/[^[:space:]]+" | grep -oE "[^[:space:]]+$" | grep Settings\\$ Esto también proporciona algunas subclases específicas del proveedor, p. la actividad del panel de StorageDashboardActivity .
Pero, ¿cómo tendría que parecerse el Intent , que abre la UserAndAccountDashboardActivity deseada directa o indirectamente? También probé Intent com.android.settings/.SubSettings , pero tampoco se puede iniciar:
HWWGR:/ $ am start -n com.android.settings/com.android.settings.SubSettings Starting: Intent { cmp=com.android.settings/.SubSettings } Security exception: Permission Denial: starting Intent { flg=0x10000000 cmp=com.android.settings/.SubSettings } from null (pid=28606, uid=2000) not exported from uid 1000