Parcourir la carte SD
Résolu/Fermé
lamouchetsetse
Messages postés
112
Date d'inscription
samedi 2 août 2014
Statut
Membre
Dernière intervention
21 septembre 2021
-
Modifié le 26 juil. 2021 à 09:49
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 - 20 août 2021 à 06:42
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 - 20 août 2021 à 06:42
A voir également:
- /Storage/emulated/0/android
- Carte d'identité - Accueil - Services publics
- Pile carte mere - Guide
- Blocage agriculteur carte en temps réel - Accueil - Transports & Cartes
- Changer carte graphique - Guide
- Débloquer carte sim sans code puk - Guide
6 réponses
lamouchetsetse
Messages postés
112
Date d'inscription
samedi 2 août 2014
Statut
Membre
Dernière intervention
21 septembre 2021
2
Modifié le 25 juil. 2021 à 19:36
Modifié le 25 juil. 2021 à 19:36
Bon en fait, je me suit rendu compte que sur l’émulateur d'android studio ça fonctionne, c'est sur mon tel que ça bloc. Peu être un problème d'autorisation.
Juste pour info
Juste pour info
racine_Sd.getAbsolutePath()sur l'émulateur retourne
/storage/sdcard
lamouchetsetse
Messages postés
112
Date d'inscription
samedi 2 août 2014
Statut
Membre
Dernière intervention
21 septembre 2021
2
26 juil. 2021 à 18:48
26 juil. 2021 à 18:48
Bonjour Bruno, je suis la version 10 justement. Après avoir fais d'autres essais, lorsque je test le contenu du répertoire de mon application (/storage/emulated/0/Android/data/fr.testfile/files) avec listFile.length, mon tableau n'est plus null mais = 0 alors que j'y ai mis 3 photos pour mes test en faisant un copier coller depuis le répertoire DCIM.
Ceci dis, il est vrai que lorsque que l'on installe une nouvelle application et que cette dernière doit accéder à certains répertoires, android nous demande si l'on autorise l'application à accéder au dossier et fichier en question.
Donc comment faire dans le cas ou je souhaite accéder aux photos de la carte sd ou même sur l'appareil lui même?
Peut etre modifier le CHMOD et ou ajouter l'application à un groupe d'utilisateur?
Ceci dis, il est vrai que lorsque que l'on installe une nouvelle application et que cette dernière doit accéder à certains répertoires, android nous demande si l'on autorise l'application à accéder au dossier et fichier en question.
Donc comment faire dans le cas ou je souhaite accéder aux photos de la carte sd ou même sur l'appareil lui même?
Peut etre modifier le CHMOD et ou ajouter l'application à un groupe d'utilisateur?
BunoCS
Messages postés
15501
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
20 janvier 2025
3 913
27 juil. 2021 à 09:04
27 juil. 2021 à 09:04
Hello,
Voici un très bon article sur l'accès aux fichiers.
https://medium.com/androiddevelopers/scope-storage-myths-ca6a97d7ff37
C'est en Anglais, certes, mais le meilleur que j'ai trouvé pour l'instant qui explique les changements avec les dernières versions d'Android
Voici un très bon article sur l'accès aux fichiers.
https://medium.com/androiddevelopers/scope-storage-myths-ca6a97d7ff37
C'est en Anglais, certes, mais le meilleur que j'ai trouvé pour l'instant qui explique les changements avec les dernières versions d'Android
lamouchetsetse
Messages postés
112
Date d'inscription
samedi 2 août 2014
Statut
Membre
Dernière intervention
21 septembre 2021
2
>
BunoCS
Messages postés
15501
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
20 janvier 2025
27 juil. 2021 à 21:28
27 juil. 2021 à 21:28
Merci Bruno je vais m'y pancher des que possible. Je ferais un retour dans la semaine, le temps de faire quelques tests
lamouchetsetse
Messages postés
112
Date d'inscription
samedi 2 août 2014
Statut
Membre
Dernière intervention
21 septembre 2021
2
26 juil. 2021 à 20:20
26 juil. 2021 à 20:20
Bien j'ai trouvé une piste ici:
https://developer.android.com/training/camera/photobasics.html#java
il semble que la methode
https://developer.android.com/training/camera/photobasics.html#java
il semble que la methode
getExternalFilesDir(repertoire)fonctionne
lamouchetsetse
Messages postés
112
Date d'inscription
samedi 2 août 2014
Statut
Membre
Dernière intervention
21 septembre 2021
2
7 août 2021 à 16:47
7 août 2021 à 16:47
Bien voila malgré tout les tuto que j'ai pu trouver, je ne parviens pas à accéder au fichier de la carte SD ni même de la mémoire interne. en revanche j'ai une tablette sous android 7 ou tout fonctionne sans problème. Si quelqu'un sait comment accéder aux répertoires sur android 10 et 11, je suis preneur. Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lamouchetsetse
Messages postés
112
Date d'inscription
samedi 2 août 2014
Statut
Membre
Dernière intervention
21 septembre 2021
2
20 août 2021 à 06:42
20 août 2021 à 06:42
Bien j'ai trouvé la solution, si d'autre passent par là en aillant le même souci, voici comment faire:
Premièrement, il faut que votre application soit autorisé à accéder aux dossiers. Pour cela, soit vous allez dans les paramètres du téléphone pour donner manuellement les autorisation nécessaire a votre application, mais c'est pas top, soit il faut demander l'autorisation à l'utilisateur comme ceci:
Pour les autorisations, je me suis inspiré de ce tuto: https://blog.rolandl.fr/2016-03-06-les-permissions-sous-android-3-slash-6-demander-une-permission-1-slash-2.html
et pour naviguer dans vos dossiers soit vous le faites via la File soit vous passez par l'application qui gère vos dossier ou photos comme la galerie. J'ai trouvé un tres bon tuto à ce sujet ici:
https://www.youtube.com/watch?v=M9JUdmx5OW4&ab_channel=Emds
voila, merci et à bientot.
Premièrement, il faut que votre application soit autorisé à accéder aux dossiers. Pour cela, soit vous allez dans les paramètres du téléphone pour donner manuellement les autorisation nécessaire a votre application, mais c'est pas top, soit il faut demander l'autorisation à l'utilisateur comme ceci:
package fr.testfile; import android.Manifest; import android.appwidget.AppWidgetProviderInfo; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Color; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.provider.Settings; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.os.Environment; import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import com.google.android.material.snackbar.Snackbar; import java.io.File; public class TestFileMain extends AppCompatActivity { public static final int PICK_IMAGE = 1; private AppWidgetProviderInfo Android; private LinearLayout linear_layout, activity; /** * on verifie si l'utilisateur à accepté ou no l'autorisation */ @RequiresApi(api = Build.VERSION_CODES.M) @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == 2) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { // si l'autorisation à été accodée par l'utilisateur, on on fait ce qu'on à faire; } else if (shouldShowRequestPermissionRationale(permissions[0]) == false) { refus_permissions_utilisateur(); } else { expliquer(); } } super.onRequestPermissionsResult(requestCode, permissions, grantResults); } @RequiresApi(api = Build.VERSION_CODES.M) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LayoutInflater inflater = getLayoutInflater(); LinearLayout activity = (LinearLayout) inflater.inflate(R.layout.test_file_linearlayout_activity_main, null); ImageView images = (ImageView) activity.findViewById(R.id.image_view); String carte_SD = new String(Environment.getExternalStorageState()); String separator = File.separator; linear_layout = activity.findViewById(R.id.linear_layout); //setContentView(activity); //linear_layout = findViewById(R.id.linear_layout); /** * demande autorisation acces dossier sensible */ if(ActivityCompat.checkSelfPermission(this,Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { // on test si la permission à deja été demandéeà l'utilisateur if(shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE) == true) { //si elle à deja été demandée, on explique pourquoi l'autorisation est nécésaire expliquer(); } else { //sinon on demande l'autorisation demander_la_permission(); } } else { // on à l'autorisation on peu donc naviguer dans les dossiers } File intern_dcim = getFilesDir()/*new File(separator)*/; File liste_intern[] = intern_dcim.listFiles(); if(carte_SD.equals(Environment.MEDIA_MOUNTED)) { File racine_Sd = Environment.getExternalStorageDirectory().getAbsoluteFile(), dossier_application = getExternalFilesDir(null), racine_phone = getFilesDir() /*new File(separator)*/, dcim = getExternalFilesDir(racine_Sd.getAbsolutePath()+"/DCIM/Camera") /*new File(racine_Sd.getAbsolutePath()+"/DCIM/Camera")*/, shanice = getExternalFilesDir(dossier_application.getAbsolutePath()+"/shanice.jpg"); //new File(dossier_application.getAbsolutePath()+"/shanice.jpg"); File[] liste_racine_sd = racine_Sd.listFiles(), liste_racine_phone = racine_phone.listFiles(), liste_dossier_application = dossier_application.listFiles(), list_dcim = dcim.listFiles(); } else { Log.i("TAG", "-------------------------------------------------------------------------------------------------------------------------"); Log.i("TAG", "Pas de carte SD"); Log.i("TAG", "-------------------------------------------------------------------------------------------------------------------------"); } setContentView(activity); // pour que snackBar fonctionne il faut bien mettre l'activité inflater "activity" et non "R.layout.monLayout" } @RequiresApi(api = Build.VERSION_CODES.M) private void demander_la_permission() { requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 2); } private void expliquer() { Snackbar customSnackBar = Snackbar.make(linear_layout, "Permission nécéssaire pour acceder aux images",Snackbar.LENGTH_INDEFINITE); customSnackBar.setAction("Parametrer", new View.OnClickListener() { @RequiresApi(api = Build.VERSION_CODES.M) @Override public void onClick(View v) { //demander l'autorisation demander_la_permission(); }}); customSnackBar.setActionTextColor(Color.YELLOW); View sbView = customSnackBar.getView(); sbView.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.purple_200)); customSnackBar.show(); } private void refus_permissions_utilisateur() { Snackbar.make(linear_layout, "Cette Fonction nécéssite une autorisation pour accéder à vos images", Snackbar.LENGTH_LONG).setAction("Parametres", new View.OnClickListener() { @Override public void onClick(View view) { final Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); final Uri uri = Uri.fromParts("package", getPackageName(), null); intent.setData(uri); startActivity(intent); } }).show(); } }
Pour les autorisations, je me suis inspiré de ce tuto: https://blog.rolandl.fr/2016-03-06-les-permissions-sous-android-3-slash-6-demander-une-permission-1-slash-2.html
et pour naviguer dans vos dossiers soit vous le faites via la File soit vous passez par l'application qui gère vos dossier ou photos comme la galerie. J'ai trouvé un tres bon tuto à ce sujet ici:
https://www.youtube.com/watch?v=M9JUdmx5OW4&ab_channel=Emds
voila, merci et à bientot.
nadellen
Messages postés
12291
Date d'inscription
mercredi 1 mai 2013
Statut
Membre
Dernière intervention
7 janvier 2024
6 693
24 juil. 2021 à 20:53
24 juil. 2021 à 20:53
bonsoir je n'y connais rien en programation donc c'est mort
moi quand je veux savoir ce qu'il y a sur la carte, ou copier, supprimer, gérer des dossiers ou fichiers je la mets dans le lecteur adequat du pc et c'est tout...
pourquoi faire compliqué quand on peut faire simple lol
bon j'avoue, si ça fonctionne c'est que quelqu'un un jour a écrit des lignes de codes...
moi quand je veux savoir ce qu'il y a sur la carte, ou copier, supprimer, gérer des dossiers ou fichiers je la mets dans le lecteur adequat du pc et c'est tout...
pourquoi faire compliqué quand on peut faire simple lol
bon j'avoue, si ça fonctionne c'est que quelqu'un un jour a écrit des lignes de codes...
26 juil. 2021 à 09:49
C'est ce que j'allais dire. Tu testes sur quelle version d'Android ? Depuis 10, l'accès à la carte SD est très fortement limité/sécurisé.