2011-04-02 4 views
0

J'écris un service système Android sous plate-forme/frameworks/base, il est lancé par SystemServer et fonctionne comme un service système comme Activity Manager et Content Manager. Le service peut accéder et modifier les fichiers créés par l'utilisateur system avec succès, par exemple, /data/data/com.android.providers.settings/databases/settings.db.Le service système Android ne peut pas accéder aux données utilisateur

Toutefois, le service n'est pas en mesure d'accéder au fichier de données appartenant aux applications utilisateur. Par exemple, /data/data/com.android.providers.contacts/databases/contacts2.db appartient à l'utilisateur app_7, lorsqu'il tente de modifier le fichier, il lève une exception FileNotFoundException. Je me demande pourquoi un service système ne peut pas modifier les données utilisateur ou est-il possible de le faire?

Merci beaucoup.

Répondre

1

Vraisemblablement, le service système s'exécute en tant que compte non superutilisateur. C'est généralement une bonne chose du point de vue de la sécurité.

Si vous souhaitez accéder aux contacts, vous pouvez essayer de le faire comme toute autre application SDK, via le fournisseur de contenu ContactsContract.

+0

Le contacts2.db est juste un exemple, je dois faire face à de nombreux autres fichiers créés par l'application de l'utilisateur, y at-il un moyen de le faire? – ZelluX

+0

@ZelluX: Vous créez un firmware personnalisé. StackOverflow n'a jamais été une bonne ressource pour cela. http://source.android.com contient des liens vers Google Groupes qui pourraient s'avérer plus utiles. – CommonsWare

+0

Merci pour vos conseils, je vais vérifier – ZelluX

Questions connexes