Maison  >  Article  >  Impossible de créer des répertoires ou des fichiers pour mon application même si je dispose des autorisations

Impossible de créer des répertoires ou des fichiers pour mon application même si je dispose des autorisations

王林
王林avant
2024-02-22 13:28:14340parcourir

L'éditeur PHP Strawberry répondra aux questions courantes en programmation Java : même si vous disposez d'autorisations, vous ne pouvez pas créer de répertoire ou de fichier pour l'application. Ce problème peut survenir dans les paramètres d'autorisation du système d'exploitation, les erreurs de chemin de fichier, les fichiers déjà existants, etc. En vérifiant le chemin du fichier, en vérifiant les autorisations du système d'exploitation et en vous assurant que le fichier n'existe pas, vous pouvez résoudre ce problème et vous assurer que le programme fonctionne normalement. Si vous rencontrez une situation similaire, vous pouvez également essayer les méthodes ci-dessus pour voir si elles peuvent résoudre votre problème.

Contenu de la question

J'ai une application que j'ai créée il y a quelques années. Récemment, je viens de le recompiler avec très peu de modifications afin de pouvoir modifier le SDK cible tout en le répertoriant dans le Play Store.

Il s'avère que cela casse fondamentalement l'application sur certains téléphones (y compris le mien). Avant le téléchargement, je l'ai testé sur un autre téléphone et cela a bien fonctionné (version Android 8.1.0). Mon téléphone fonctionne sous Android 11 (ne fonctionne pas).

Le problème semble provenir de la possibilité de créer et de lire des fichiers dans le stockage interne, alors que l'objectif de l'application est de conserver un seul fichier.

C'est la fonction que j'essaie de créer un répertoire. Ceci est juste une fonction de test que j'appelle en création, elle ne fait pas partie de l'application originale :

public static void AttemptDirCreate(){
    String dirname = Environment.getExternalStorageDirectory().toString() + "/this_is_a_test";
    File dir = new File(dirname);

    System.err.println("Attempting to create directory: '" + dirname + "'");

    boolean make_result = false;
    if (!dir.exists()) {
        try {
            make_result = dir.mkdir();
        }
        catch (SecurityException se) {
            System.err.println("ERROR. Could not make dir. Reason: " + se.getMessage());
        }
    }

    if (make_result){
        System.err.println("MKDir result is true");
    }
    else {
        System.err.println("MKDir result is false");
    }

    if (dir.exists()){
        System.err.println("Dir has been created");
    }
    else {
        System.err.println("Was unable to create dir");
    }

}

Le problème est que le répertoire n'est pas créé et aucune exception n'est levée. Lorsque j'accède aux informations sur l'application, je vois les autorisations pour les fichiers et les médias.

Le chemin d'accès au répertoire que vous essayez de créer est : '/storage/emulated/0/this_is_a_test'

Pour autant que je sache, c'est le bon chemin. L'application m'a demandé l'autorisation lors de sa première installation.

Alors pourquoi ne peut-il pas créer le répertoire ? Comment identifier le problème et le résoudre ?

Juste pour clarifier, cette même fonctionnalité fonctionne exactement sur Android 8.1.0, mais pas sur Android 11. Je ne sais pas quelle est la limite.

Solution de contournement

Vous ne pouvez pas créer de fichiers et de répertoires à la racine du stockage externe sur les appareils Android 11+.

Utilisez plutôt l’un des annuaires publics existants.

Comme DCIM, photos, documents...

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer