comment faire la différence entre l'interne et à l'externe carte SD chemin dans android
Dans l'application android, j'ai besoin de le faire:
If(removable SdCard is present){
String path=get the path of removable Sdcard() ;
//using this path we will create some files in sdcard
} else{
//display error message
}
Pour cela, nous avons utilisé le code:
If (Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED)){
String path= Environment.getExternalStorageDirectory().getPath();
}
Le code ci-dessus échoue dans quelques uns des derniers mobiles android. Merci de nous aider sur ce point.
Ci-dessous sont les détails de ce que nous avons essayé:
- Dans android mobiles ayant des OS d'ICS et JellyBean, le chemin exact de l'amovibles sdcard varie en raison de fabricant de l'appareil.
Voir le tableau ci-dessous
Tested Devices OS version removable sdcard path internal sd path
Samsung galaxy s2 4.0.4 /mnt/sdcard/external_sd /mnt/sdcard
Samsung S Advance 4.1.2 /storage/extSdCard /storage/sdcard0
Samsung Galaxy s3 4.0.4 /mnt/extSdCard /mnt/sdcard
Samsung Galaxy Note 4.0.4 /mnt/sdcard/external_sd /mnt/sdcard
Lors de l'exécution du code ci-dessus dans ces appareils nous avons obtenu:
-
L'API android de l'Environnement.getExternalStorageDirectory().getPath() renvoie uniquement le dd interne de chemin
-
Aussi les API de l'Environnement.getExternalStorageState() retourne l'Environnement.MEDIA_MOUNTED dans les dispositifs ci-dessus, même si la carte sd est retirée.
-
Plus de l'API de l'Environnement.isExternalStorageRemovable() renvoie toujours false pour les dispositifs ci-dessus amovible carte sd est présente ou non.
Nous avons cherché dans google et essayé de certaines fonctions-ils donné.Il ne donne que la liste des chemins d'accès stockage qui sont montés sur l'appareil.Mais il n'est pas indiquer si le removale sdcard est présent ou pas.
La fonction que j'ai essayé d'obtenir le chemin de stockage:
private static String getMountedPaths(){
String sdcardPath = "";
Runtime runtime = Runtime.getRuntime();
Process proc = null;
try {
proc = runtime.exec("mount");
} catch (IOException e1) {
e1.printStackTrace();
}
InputStream is = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
String line;
BufferedReader br = new BufferedReader(isr);
try {
while ((line = br.readLine()) != null) {
if (line.contains("secure")) continue;
if (line.contains("asec")) continue;
if (line.contains("fat")) {//TF card
String columns[] = line.split(" ");
if (columns != null && columns.length > 1) {
mount.add(columns[1]);
sdcardPath=columns[1];
}
} else if (line.contains("fuse")) {//internal storage
String columns[] = line.split(" ");
if (columns != null && columns.length > 1) {
mount.add(columns[1]);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
return sdcardPath;
}
Est-il de toute autre fonction mieux que ci-dessus pour obtenir la liste des chemins d'accès stockage dans android ?
également aider à résoudre le problème ci-dessus .
vérifier le lien ici. j'ai utilisé le même code que ci-dessus stackoverflow.com/questions/16637935/...
La "poursuite de l'API de l'Environnement.isExternalStorageRemovable() renvoie toujours false pour les dispositifs ci-dessus amovible carte sd est présente ou non."......Que voulez-vous dire ?
OriginalL'auteur Praveen | 2013-05-22
Vous devez vous connecter pour publier un commentaire.
Pour obtenir la carte SD interne
Pour obtenir la carte SD externe
OriginalL'auteur Vaishali Sutariya