1 votes

Configuration d'un nouveau téléphone pour un enfant : interaction entre le lien familial et les comptes multiples

J'ai un OnePlus 5 sur lequel j'ai installé LineageOS 18.1 avec Google Apps.

Je souhaite que ce soit le téléphone de mon enfant, qui est mineur et dont le compte est limité par Google Family Link. (Je ne suis pas particulièrement amoureux de Family Link ; il est simplement fourni automatiquement avec l'honnêteté lors de l'enregistrement du compte Google de l'enfant, c'est-à-dire ne pas mentir sur son âge. La limitation du temps d'écran est la seule fonctionnalité que je trouve réellement utile).

J'ai également installé Magisk v23 pour Rooter le téléphone. Je réalise qu'avec suffisamment de détermination, mon enfant pourrait potentiellement contourner Family Link en utilisant Root et par exemple adb, et cela ne me dérange pas.

J'ai utilisé mon propre compte Google pour la configuration initiale, mais j'aimerais éventuellement transférer les applications et les données de mon enfant depuis un appareil précédent.

Ma première idée a été d'utiliser la fonction "utilisateurs multiples". J'ai créé un compte pour l'enfant sur le téléphone, et j'allais utiliser Titanium Backup pour restaurer les sauvegardes des applications et des données du téléphone précédent.

Cependant, je commence à avoir des doutes. Est-ce une bonne façon d'aborder la question ? Par exemple, si je continue à être le "propriétaire de l'appareil", cet appareil ne va-t-il pas polluer le partage et l'historique de ma localisation ?

Ai-je bien compris qu'il n'y a aucun moyen de changer le propriétaire (c'est-à-dire de promouvoir l'enfant de "utilisateur" à "propriétaire" et de me rétrograder simultanément de "propriétaire" à "utilisateur") ?

Serait-il préférable, dans l'environnement du propriétaire de l'appareil, de supprimer mon compte Google et d'ajouter celui de l'enfant ?

Je voudrais éviter les longues expériences si possible, mais je répondrai à ma propre question si cela devait arriver.

Ma principale question spécifique est la suivante : quelles seraient les conséquences de ces deux approches ?

  1. l'enfant continue comme utilisateur ; je suis propriétaire
  2. ajouter le compte google de l'enfant au profil du propriétaire de l'appareil ; supprimer le mien

Mise à jour : ajouter kid en tant qu'utilisateur n'est pas simple ; apparemment (et logiquement) il y a un tout nouvel espace de noms de montage, donc le répertoire TitaniumBackup que j'ai copié dans le répertoire /sdcard du compte principal n'est pas visible, et même un shell adb élevé n'a pas accès à /storage/emulated/10 (qui, je suppose, est l'endroit où se trouve le nouvel espace de stockage). Je n'ai pas pu m'embêter à contourner ce problème, alors j'ai supprimé l'utilisateur de l'enfant.

J'ai ensuite essayé d'ajouter le compte de l'enfant à côté du mien, mais cela ne fonctionne pas car il est géré par le lien familial ; je dois d'abord supprimer mon compte. J'ai fait cela, et lorsque j'ai essayé d'ajouter le compte de l'enfant, je suis entré dans une boucle sans fin où il est dit qu'il va installer le gestionnaire de lien familial, je clique sur suivant, et il m'informe que cette étape est nécessaire ; répéter ad nauseam. I pensez à le problème est peut-être qu'il ne passe pas le contrôle de SafetyNet, car logcat a des lignes comme

06-16 15:49:05.915 11187 11187 I BaseTask: ScheduleSafetyNetJobTask started. [CONTEXT service_id=42 ]
06-16 15:49:05.916 11187 12931 I KidsJobScheduler: schedule job DEVICE_SETUP_SAFETY_NET [CONTEXT service_id=42 ]
06-16 15:49:05.918  1444  3734 E EdXposed-Bridge: java.lang.ClassCastException: java.lang.String cannot be cast to android.content.Intent
06-16 15:49:05.918  1444  3734 E EdXposed-Bridge:       at com.aviraxp.adblocker.continued.hook.h$a.beforeHookedMethod(ShortcutHook.java:2)
06-16 15:49:05.918  1444  3734 E EdXposed-Bridge:       at de.robv.android.xposed.MethodHooker.handleHookedMethod(MethodHooker.java:61)
06-16 15:49:05.918  1444  3734 E EdXposed-Bridge:       at EdHooker_d6cb3615b07510db932c119335b0668763709397.hook(Unknown Source:171)
06-16 15:49:05.918  1444  3734 E EdXposed-Bridge:       at com.android.server.am.ActivityManagerService.broadcastIntentWithFeature(ActivityManagerService.java:16728)
06-16 15:49:05.918  1444  3734 E EdXposed-Bridge:       at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2283)
06-16 15:49:05.918  1444  3734 E EdXposed-Bridge:       at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2867)
06-16 15:49:05.918  1444  3734 E EdXposed-Bridge:       at android.os.Binder.execTransactInternal(Binder.java:1154)
06-16 15:49:05.918  1444  3734 E EdXposed-Bridge:       at android.os.Binder.execTransact(Binder.java:1123)
06-16 15:49:05.919  1444  3734 E EdXposed-Bridge: java.lang.ClassCastException: java.lang.String cannot be cast to android.content.Intent
06-16 15:49:05.919  1444  3734 E EdXposed-Bridge:       at com.aviraxp.adblocker.continued.hook.h$a.beforeHookedMethod(ShortcutHook.java:2)
06-16 15:49:05.919  1444  3734 E EdXposed-Bridge:       at de.robv.android.xposed.MethodHooker.handleHookedMethod(MethodHooker.java:61)
06-16 15:49:05.919  1444  3734 E EdXposed-Bridge:       at EdHooker_1d32fd428893610d3914110116abed3745926464.hook(Unknown Source:185)
06-16 15:49:05.919  1444  3734 E EdXposed-Bridge:       at com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:15914)
06-16 15:49:05.919  1444  3734 E EdXposed-Bridge:       at java.lang.reflect.Method.invoke(Native Method)
06-16 15:49:05.919  1444  3734 E EdXposed-Bridge:       at de.robv.android.xposed.MethodHooker.handleHookedMethod(MethodHooker.java:81)
06-16 15:49:05.919  1444  3734 E EdXposed-Bridge:       at EdHooker_d6cb3615b07510db932c119335b0668763709397.hook(Unknown Source:171)
06-16 15:49:05.919  1444  3734 E EdXposed-Bridge:       at com.android.server.am.ActivityManagerService.broadcastIntentWithFeature(ActivityManagerService.java:16728)
06-16 15:49:05.919  1444  3734 E EdXposed-Bridge:       at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2283)
06-16 15:49:05.919  1444  3734 E EdXposed-Bridge:       at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2867)
06-16 15:49:05.919  1444  3734 E EdXposed-Bridge:       at android.os.Binder.execTransactInternal(Binder.java:1154)
06-16 15:49:05.919  1444  3734 E EdXposed-Bridge:       at android.os.Binder.execTransact(Binder.java:1123)
06-16 15:49:05.921 11187 12930 I BaseTask: ScheduleSafetyNetJobTask finished (5 ms). [CONTEXT service_id=42 ]
06-16 15:49:05.928  1444  3734 W ActivityTaskManager: Tried to set launchTime (0) < mLastActivityLaunchTime (1954917)
06-16 15:49:05.938 10959 10959 W DeviceAdminAdd: Unable to set profile owner post-setup, no default supervisorprofile owner defined
06-16 15:49:05.993 11187 11187 I BaseTask: ScheduleSafetyNetJobTask started. [CONTEXT service_id=42 ]
06-16 15:49:05.994 11187 12931 I KidsJobScheduler: schedule job DEVICE_SETUP_SAFETY_NET [CONTEXT service_id=42 ]
06-16 15:49:05.996 11187 11187 W System.err: java.lang.Exception: Result is true
06-16 15:49:05.996 11187 11187 W System.err:    at m.cqr.c(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:6)
06-16 15:49:05.996 11187 11187 W System.err:    at m.cqv.j(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:0)
06-16 15:49:05.996 11187 11187 W System.err:    at com.google.android.gms.kids.setup.fragment.KidSetupFragment.cm(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:0)
06-16 15:49:05.996 11187 11187 W System.err:    at com.google.android.gms.kids.setup.fragment.ActivateProfileOwnerFragment.onActivityResult(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:6)
06-16 15:49:05.996 11187 11187 W System.err:    at com.google.android.chimera.FragmentProxy.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:49:05.996 11187 11187 W System.err:    at fd.ht(:com.google.android.gms@212116046@21.21.16 (150400-378233385):6)
06-16 15:49:05.996 11187 11187 W System.err:    at aes.g(:com.google.android.gms@212116046@21.21.16 (150400-378233385):6)
06-16 15:49:05.996 11187 11187 W System.err:    at eic.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:49:05.996 11187 11187 W System.err:    at eih.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:49:05.996 11187 11187 W System.err:    at edb.support_onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:49:05.996 11187 11187 W System.err:    at edg.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:49:05.996 11187 11187 W System.err:    at edg.public_onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:49:05.997 11187 11187 W System.err:    at rie.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):4)
06-16 15:49:05.997 11187 11187 W System.err:    at android.app.Activity.dispatchActivityResult(Activity.java:8310)
06-16 15:49:05.997 11187 11187 W System.err:    at android.app.ActivityThread.deliverResults(ActivityThread.java:5002)
06-16 15:49:05.997 11187 11187 W System.err:    at android.app.ActivityThread.handleSendResult(ActivityThread.java:5050)
06-16 15:49:05.997 11187 11187 W System.err:    at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
06-16 15:49:05.997 11187 11187 W System.err:    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
06-16 15:49:05.997 11187 11187 W System.err:    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
06-16 15:49:05.997 11187 11187 W System.err:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
06-16 15:49:05.997 11187 11187 W System.err:    at android.os.Handler.dispatchMessage(Handler.java:106)
06-16 15:49:05.997 11187 11187 W System.err:    at android.os.Looper.loop(Looper.java:223)
06-16 15:49:05.997 11187 11187 W System.err:    at android.app.ActivityThread.main(ActivityThread.java:7660)
06-16 15:49:05.997 11187 11187 W System.err:    at java.lang.reflect.Method.invoke(Native Method)
06-16 15:49:05.997 11187 11187 W System.err:    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
06-16 15:49:05.997 11187 11187 W System.err:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge: java.lang.ClassCastException: java.lang.String cannot be cast to android.content.Intent
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at com.aviraxp.adblocker.continued.hook.h$a.beforeHookedMethod(ShortcutHook.java:2)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at de.robv.android.xposed.MethodHooker.handleHookedMethod(MethodHooker.java:61)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at EdHooker_d6cb3615b07510db932c119335b0668763709397.hook(Unknown Source:171)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at com.android.server.am.ActivityManagerService.broadcastIntentWithFeature(ActivityManagerService.java:16728)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2283)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2867)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at android.os.Binder.execTransactInternal(Binder.java:1154)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at android.os.Binder.execTransact(Binder.java:1123)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge: java.lang.ClassCastException: java.lang.String cannot be cast to android.content.Intent
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at com.aviraxp.adblocker.continued.hook.h$a.beforeHookedMethod(ShortcutHook.java:2)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at de.robv.android.xposed.MethodHooker.handleHookedMethod(MethodHooker.java:61)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at EdHooker_1d32fd428893610d3914110116abed3745926464.hook(Unknown Source:185)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:15914)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at java.lang.reflect.Method.invoke(Native Method)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at de.robv.android.xposed.MethodHooker.handleHookedMethod(MethodHooker.java:81)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at EdHooker_d6cb3615b07510db932c119335b0668763709397.hook(Unknown Source:171)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at com.android.server.am.ActivityManagerService.broadcastIntentWithFeature(ActivityManagerService.java:16728)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2283)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2867)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at android.os.Binder.execTransactInternal(Binder.java:1154)
06-16 15:49:05.999  1444  4198 E EdXposed-Bridge:       at android.os.Binder.execTransact(Binder.java:1123)
06-16 15:49:06.003 11187 12930 I BaseTask: ScheduleSafetyNetJobTask finished (9 ms). [CONTEXT service_id=42 ]

J'ai désactivé EdXposed, ce qui me laisse avec

06-16 15:58:55.797  6486  6486 W DeviceAdminAdd: Unable to set profile owner post-setup, no default supervisorprofile owner defined
06-16 15:58:55.852  6269  6269 I BaseTask: ScheduleSafetyNetJobTask started. [CONTEXT service_id=42 ]
06-16 15:58:55.853  6269  6634 I KidsJobScheduler: schedule job DEVICE_SETUP_SAFETY_NET [CONTEXT service_id=42 ]
06-16 15:58:55.855  6269  6269 W System.err: java.lang.Exception: Result is true
06-16 15:58:55.855  6269  6269 W System.err:    at m.cqr.c(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:6)
06-16 15:58:55.855  6269  6269 W System.err:    at m.cqv.j(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:0)
06-16 15:58:55.855  6269  6269 W System.err:    at com.google.android.gms.kids.setup.fragment.KidSetupFragment.cm(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:0)
06-16 15:58:55.855  6269  6269 W System.err:    at com.google.android.gms.kids.setup.fragment.ActivateProfileOwnerFragment.onActivityResult(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:6)
06-16 15:58:55.855  6269  6269 W System.err:    at com.google.android.chimera.FragmentProxy.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:58:55.855  6269  6269 W System.err:    at fd.ht(:com.google.android.gms@212116046@21.21.16 (150400-378233385):6)
06-16 15:58:55.855  6269  6269 W System.err:    at aes.g(:com.google.android.gms@212116046@21.21.16 (150400-378233385):6)
06-16 15:58:55.855  6269  6269 W System.err:    at eic.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:58:55.855  6269  6269 W System.err:    at eih.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:58:55.855  6269  6269 W System.err:    at edb.support_onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:58:55.855  6269  6269 W System.err:    at edg.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:58:55.856  6269  6269 W System.err:    at edg.public_onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:58:55.856  6269  6269 W System.err:    at rie.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):4)
06-16 15:58:55.856  6269  6269 W System.err:    at android.app.Activity.dispatchActivityResult(Activity.java:8310)
06-16 15:58:55.856  6269  6269 W System.err:    at android.app.ActivityThread.deliverResults(ActivityThread.java:5002)
06-16 15:58:55.856  6269  6269 W System.err:    at android.app.ActivityThread.handleSendResult(ActivityThread.java:5050)
06-16 15:58:55.856  6269  6269 W System.err:    at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
06-16 15:58:55.856  6269  6269 W System.err:    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
06-16 15:58:55.856  6269  6269 W System.err:    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
06-16 15:58:55.856  6269  6269 W System.err:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
06-16 15:58:55.856  6269  6269 W System.err:    at android.os.Handler.dispatchMessage(Handler.java:106)
06-16 15:58:55.856  6269  6269 W System.err:    at android.os.Looper.loop(Looper.java:223)
06-16 15:58:55.856  6269  6269 W System.err:    at android.app.ActivityThread.main(ActivityThread.java:7660)
06-16 15:58:55.856  6269  6269 W System.err:    at java.lang.reflect.Method.invoke(Native Method)
06-16 15:58:55.856  6269  6269 W System.err:    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
06-16 15:58:55.856  6269  6269 W System.err:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
06-16 15:58:55.858  6269  6618 I BaseTask: ScheduleSafetyNetJobTask finished (6 ms). [CONTEXT service_id=42 ]
06-16 15:58:55.952  1395  2506 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4

Je vais maintenant désactiver tous les modules Magisk un par un pour voir si je peux éventuellement passer cette étape.

Mise à jour 2 : le problème de la boucle "activer le gestionnaire de liens familiaux" n'est peut-être pas du tout lié à Magisk. Il a été signalé à Google, notamment à l'adresse suivante https://support.google.com/googleplay/thread/15850322/activation-family-link-manager-error-message-loop?hl=en y https://support.google.com/googleplay/forum/AAAA8CVOtD88XvbDIUaPF0/?hl=en&gpf=%23!topic%2Fplay%2F8XvbDIUaPF0 . Pour au moins une personne, des astuces comme faire manuellement de l'application Family Link un administrateur de périphérique dans "Paramètres -> Sécurité -> Administrateur de périphérique" ainsi que "Paramètres -> Gestionnaire d'applications -> Réinitialiser les préférences de l'application" ont aidé, mais "il semble que le Family Link Manager s'attende à pouvoir ouvrir l'application de paramètres sur une page spécifique, qui ne semble pas exister sur tous les appareils. Cela se produit également sur le Xiaomi MiPad... https://xiaomi.eu/community/threads/first-xiaomi-eu-rom-released-for-mipad-4.46337/

La configuration manuelle de l'application en tant qu'administrateur de périphérique ne vous permet pas de passer ce contrôle", ce que je peux confirmer.

Mise à jour 3 : J'ai passé la boucle "Ensuite, vous allez activer Family Link" en convertissant manuellement com.google.android.apps.kids.familylinkhelper y com.google.android.apps.kids.familylinkmanager dans les applications du système. Avec Magisk, /system/app est un tmpfs accessible en écriture (c'est-à-dire non persistant) ; j'ai remonté / (qui est le vrai tmpfs). /system/app est allumée) rw en utilisant mount -n / -o rw,remount puis l'a monté dans un répertoire : mkdir /mnt/root; mount --bind / /mnt/root . J'ai copié les deux APKs de mes sauvegardes Titanium à /mnt/root/system/app Puis j'ai redémarré et l'installation de Family Link a pu se faire.

Maintenant, voyons comment restaurer toutes les applications à partir de la sauvegarde.

1voto

Gady Points 1473

J'ai une réponse partielle :

  • Il est apparemment impossible d'ajouter deux comptes Google au même profil d'utilisateur Android si l'un des comptes est destiné à un mineur (et donc sous la supervision de Family Link).
  • La fonction d'utilisateurs multiples est relativement complexe et brise des hypothèses telles que "je peux accéder à tous les fichiers via le shell adb si nécessaire".
  • Pour changer le propriétaire de l'appareil, il faut d'abord supprimer tous les comptes Google du profil du propriétaire, puis ajouter le compte Google du nouveau propriétaire.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X