“Impossible de faire un chmod” avertissement dans KitKat lors de la tentative de openOrCreateDatabase()

Je reçois ce journal avertir message (sur Nexus 4 stock 4.4):

Failed to chmod(/storage/emulated/0/Android/data/com.myapp/mydb.db): libcore.io.ErrnoException: chmod failed: EPERM (Operation not permitted)

lors de l'appel:

SQLiteOpenHelper.getReadableDatabase()

Le message se produit si la base de données existe déjà ou pas.

Le message ne se produit pas lorsque sur le Galaxy Nexus de course de stock 4.3.

Pourquoi est-ce qui se passe et c'est quelque chose qui peut être ignoré en toute sécurité?

EDIT: j'ai soulevé un rapport de bug: https://code.google.com/p/android/issues/detail?id=64345

La fonctionnalité de base de données de votre application de fonctionner après cette erreur? Généralement, les émules de stockage est une drôle de bête, comme il est censé imiter la non-propriété de la propriété d'un système de fichiers FAT, sur le dessus de l'un d'Unix. Deux réflexions me viennent à l'esprit: d'abord que c'est une tentative de modification de l'autorisation de bits sur un fichier lorsque le émulé de stockage ne prend pas en charge, ou la seconde, que les émules de stockage est "de manière inattendue" l'appui de la propriété des fichiers, et vous avez une version obsolète de la file de gauche à partir d'une précédente installation de votre programme sous un autre UID.
Il serait très intéressant de voir la sortie de adb shell "ls -l /storage/emulated/0/Android/data/com.myapp/mydb.db"
Oui, la base de données fonctionne bien après ce message de journal. Quand j'ai essayer la commande, il devient clair que le chemin d'accès n'existe pas. Le chemin de base doit être "/storage/sdcard0" ou "/storage/emulated/legacy". Ressemble KitKat est en supposant 4.3 émulé stockage des chemins???
Je n'ai pas regardé dans le détail, mais il est possible que ce qui est monté et où pourrait être différente pour l'utilisateur unix ID de la BAD s'exécute, et l'utilisateur de l'application s'exécute. L'exécution d'un outil de travail sur votre appareil? (c'est à dire, a le bug qui a récemment brisé il été résolu?) Si oui, vous pouvez l'utiliser à partir de la bad pour obtenir un shell comme l'app id d'utilisateur, puis voir si le chemin d'accès n'existe pour l'application de l'utilisateur
C'est l'explication de pourquoi votre enquête n'a pas été révélant rien de significatif, mais non, ce n'est pas une solution.

OriginalL'auteur Mark | 2013-12-07