Erreur d'accès à la carte SD du Samsung Galaxy Note 3 KitKat (4.4.x)
Depuis Samsung mise à jour de la Note 3 4.4.x, je suis l'exception suivante lors de l'écriture sur la carte SD:
java.io.IOException: open failed: EACCES (Permission denied)
at java.io.File.createNewFile(File.java:946)
at java.io.File.createTempFile(File.java:1011)
Mon application dispose de l'autorisation nécessaire pour écrire:
<manifest ...>
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
:
<application ... >
:
</application>
</manifest>
Le code qui crée le crash ressemble à ceci:
tempFile = File.createTempFile("anMoney", null, destinationFile.getParentFile());
destionatioFile
points d'un fichier sur la Carte SD, de sorte que son fichier parent est le dossier.
L'erreur semble être le cas sur la Note 3 appareils et autres Samsung ou non-Samsung appareils fonctionnent très bien. Donc, ce sent comme un Note 3 bug, mais est-il une solution de contournement que je pouvais peut-être faire?
- S'il vous plaît montrer le code source qui est à l'origine de cette erreur.
- J'ai mis à jour le post avec l'appel de la plante.
- Notez que
WRITE_EXTERNAL_STORAGE
a rien à voir avec une quelconque "carte SD". De stockage externe n'a pas été mis en œuvre comme un peu amovible de stockage sur la plupart des appareils réalisés depuis 2011. Donc, quand vous dites que "destionatioFile points d'un fichier sur la Carte SD, de sorte que son parent fichier est dans le dossier", ne vous signifient littéralement certaines de stockage amovibles, ou voulez-vous dire quelque chose sur officiel de stockage externe? - C'est le réel de la carte SD. Les utilisateurs ont la possibilité de saisir dans un chemin, et l'erreur qui se passe pour ceux qui tapez le chemin d'accès au réel SD.
- C'est Samsung réponse: :Cette erreur peut se produire si votre carte sd est toujours bloqué comme un périphérique usb. assurez-vous que vous n'utilisez pas votre téléphone comme un périphérique de stockage usb. déconnectez votre appareil de l'ordinateur et essayez à nouveau. aussi, vous pourriez avoir à ajouter de l'autorisation suivante : <uses-permission android:name="android.la permission.MOUNT_UNMOUNT_FILESYSTEMS" />
- Je n'ai jamais entendu parler de cette autorisation.
Vous devez vous connecter pour publier un commentaire.
C'est une erreur qui semble être confiné à quelques modèles de Samsung. c'est à dire la Note 3 (N9005).
La media_rw autorisation est manquant dans /system/etc/security/permissions.xml
Vous aurez besoin d'être enraciné à fixer
Cela pourrait être prévu comportement fondé sur une interprétation stricte de Android de stockage externe spécifications:
Si vous autorisez les utilisateurs à entrer un chemin d'accès eux-mêmes, il est probable qu'ils continueront de sélectionner quelque chose en dehors de votre application package-répertoire spécifique. Dans ce cas, le fichier en écriture/création/suppression échoue.
Il existe de nombreux articles parlant de ce problème, comme Google et Samsung maintenant ne pas permettre à des applications tierces pour écrire sur la carte sd, à moins qu'ils écrivent à leurs chemin désigné .
Voici quelques liens à ce sujet:
http://lifehacker.com/android-kitkat-blocks-some-access-to-micro-sd-cards-1524997895
http://www.androidpolice.com/2014/02/17/external-blues-google-has-brought-big-changes-to-sd-cards-in-kitkat-and-even-samsung-may-be-implementing-them/
http://www.androidcentral.com/kitkat-sdcard-changes
D'accès de stockage amovibles n'a jamais été officiellement pris en charge par le kit SDK d'Android antérieures à Android 4.4, bien que de nombreux développeurs élu ignorer que.
Android 4.4 ajout d'un soutien limité pour les applications d'avoir accès à un stockage amovible, par l'intermédiaire des méthodes comme
getExternalFilesDirs()
(notez le pluriel). Dans le même temps, il ya des rapports que certains de l'autre façon pour les développeurs de travailler avec stockage amovibles sont maintenant verrouillés. Depuis que je ne travaille pas avec stockage amovible, je n'ai pas tenté de reproduire ces résultats.MediaStore
, de nombreuses applications n'ont pas besoin d'un accès direct à la de stockage amovible.