The extension OBJECT LIST bug with last version Android API

Welcome to our brand new Clickteam Community Hub! We hope you will enjoy using the new features, which we will be further expanding in the coming months.

A few features including Passport are unavailable initially whilst we monitor stability of the new platform, we hope to bring these online very soon. Small issues will crop up following the import from our old system, including some message formatting, translation accuracy and other things.

Thank you for your patience whilst we've worked on this and we look forward to more exciting community developments soon!

Clickteam.
  • Since API update 33 and Android version 14, the LIST extension (kclist.mfx) no longer allows files to be saved (function: save the file to ExternalStorageDirectory$( "Android Object")). This does nothing, nor does it allow loading. The "read external storage" and "write external storage" permissions are nevertheless checked.

    Problem with mfx or problem with the permissions?

    When I loaded the update of my application on my phone via Google Play, after uninstalling it, no authorization request was displayed for "write and read external storage"...

    Edited once, last by Lecherbault (October 20, 2023 at 2:59 PM).

  • Since API update 33 and Android version 14, the LIST extension (kclist.mfx) no longer allows files to be saved (function: save the file to ExternalStorageDirectory$( "Android Object")). This does nothing, nor does it allow loading. The "read external storage" and "write external storage" permissions are nevertheless checked.

    please read this Please login to see this link.

    Regards,


    Fernando Vivolo

    ... new things are coming ...

  • Ok but my application was working before the update. How should I proceed? I only have a simple list to save...

    In Android Object are now the scoped version for the different folders available for each application, similar to public storage, using external storage are not allowed anymore (this for new devices from 10+).

    So you have 2 approaches one keep this code for lower than or equal to android 9 then for 10+ use scoped storage.

    Note:

    Quote

    Scoped storage was introduced in Android 10 (API level 29) and became mandatory for all new apps starting in Android 11 (API level 30). Before Android 10, apps had more freedom to access and manage files on the device's external storage.

    Prior to Android 10, there was no scoped storage concept. Instead, apps had broad access to the device's external storage, and they could read and write files without the same level of restrictions imposed by scoped storage.

    So, on devices running Android versions lower than 10, you won't encounter scoped storage restrictions. However, if your app targets Android 10 (API level 29) or higher, you will need to adapt your file access and storage strategies to comply with scoped storage rules.

    Regards,


    Fernando Vivolo

    ... new things are coming ...

  • Voici ce que rapporte Bard IA:

    L'autorisation de stockage limitée est une nouvelle fonctionnalité introduite dans Android 11. Elle permet aux applications d'accéder à un espace de stockage dédié, qui est isolé du reste du stockage de l'appareil. Cela permet de protéger les données des applications contre les applications malveillantes.

    Pour utiliser le stockage limité dans votre application, vous devez suivre ces étapes :

    Dans votre fichier AndroidManifest.xml, ajoutez l'autorisation READ_EXTERNAL_STORAGE ou WRITE_EXTERNAL_STORAGE pour votre application.
    Dans votre code, utilisez l'API FileProvider pour créer un fournisseur de fichiers pour votre application.
    Dans votre code, utilisez l'API Context.getExternalFilesDir() pour obtenir un pointeur vers le dossier de stockage limité de votre application.
    Voici un exemple de code pour utiliser le stockage limité :

    // Ajoutez l'autorisation READ_EXTERNAL_STORAGE ou WRITE_EXTERNAL_STORAGE dans votre fichier AndroidManifest.xml.
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    // Créez un fournisseur de fichiers pour votre application.
    public class MyFileProvider extends FileProvider {

    @Override
    public File getExternalFilesDir(Context context, String type) {
    // Retourne le dossier de stockage limité de votre application.
    return context.getExternalFilesDir(type);
    }
    }

    // Obtenez un pointeur vers le dossier de stockage limité de votre application.
    File file = context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);

    // Ecrivez un fichier dans le dossier de stockage limité de votre application.
    FileOutputStream fos = new FileOutputStream(file);
    fos.write("Hello, world!".getBytes());
    fos.close();

    // Lisez le fichier du dossier de stockage limité de votre application.
    FileInputStream fis = new FileInputStream(file);
    byte[] bytes = new byte[(int) file.length()];
    fis.read(bytes);
    fis.close();

    // Afficher le contenu du fichier.
    System.out.println(new String(bytes));

    Une fois que vous avez effectué ces étapes, votre application devrait pouvoir accéder et écrire dans le stockage limité.

    Pour vérifier que votre application a accès au stockage limité, vous pouvez utiliser l'outil adb shell pour afficher les autorisations de votre application.

    adb shell dumpsys package YOUR_PACKAGE_NAME
    Si votre application a accès au stockage limité, vous devriez voir la ligne suivante dans la sortie de l'outil :

    permissions:
    read_external_storage: granted
    write_external_storage: granted
    Si votre application n'a pas accès au stockage limité, vous devriez voir la ligne suivante dans la sortie de l'outil :

    permissions:
    read_external_storage: denied
    write_external_storage: denied
    Si vous rencontrez toujours des problèmes pour accéder au stockage limité, vous pouvez consulter la documentation d'Android sur le stockage limité.

    Voici quelques conseils pour faire en sorte que votre fichier texte soit sauvegardé et lu sur le smartphone de vos utilisateurs :

    Utilisez un nom de fichier unique pour votre fichier texte. Cela permettra à votre application de trouver facilement le fichier.
    Sauvegardez le fichier dans un dossier de stockage limité. Cela garantira que le fichier est protégé contre les applications malveillantes.
    Utilisez un encodeur et un décodeur pour coder et décoder le contenu de votre fichier texte. Cela aidera à protéger le contenu du fichier contre les modifications non autorisées.
    J'espère que cela vous aidera à résoudre votre problème.

    Edited 3 times, last by Lecherbault (October 20, 2023 at 7:57 PM).

  • Ok but my application was working before the update. How should I proceed? I only have a simple list to save...

    This is Google's Latest Nonsense. Not, a Fusion issue.
    It actually was in effect for awhile now.
    External Storage has been replaced with Scoped Storage ( makes android worse ).
    Also, scoped storage is Inside the app in most cases and if your customer removes the app. They remove any stored files inside.
    Which for Verizon Samsung Android Users, they can not see the files they create with their default browser in their devices.
    So, you will need to make a browser inside of your app to view files saved inside of the scoped storage of your app.
    This does not seem to be a Samsung Device issue with scoped storage, just a VERIZON Samsung Device issues as Verizon
    has their own Android Version for Samsung Devices.

    Edited 2 times, last by VBEinc (October 21, 2023 at 3:23 AM).

  • Concretely, how do I do it with MMF? It's starting to get difficult to maintain an application. My application has 100,000 downloads to date; and today it is no longer able to function. I have a simple .txt file to save (list). How do I do it with MMF?

    Edited 2 times, last by Lecherbault (October 21, 2023 at 8:32 AM).

  • Concretely, how do I do it with MMF? It's starting to get difficult to maintain an application. My application has 100,000 downloads to date; and today it is no longer able to function. I have a simple .txt file to save (list). How do I do it with MMF?

    Can you share how you save this file, so we know what with dealing with?

    because using a scopedstorage is simple as you using externalstorage


    PublicScopedStorageDirectory$( "Android object", "downloads" ) + "/" + "makefolder/picturecopy.jpg"

    Regards,


    Fernando Vivolo

    ... new things are coming ...

  • Can you share how you save this file, so we know what with dealing with?

    because using a scopedstorage is simple as you using externalstorage


    PublicScopedStorageDirectory$( "Android object", "downloads" ) + "/" + "makefolder/picturecopy.jpg"

    i have "PublicStorageDirectory$( ...)" in "Android Object", but i don't see "PublicScopedStorageDirectory$( ...)"... I want to save a simple file.txt (about kcfile.mfx ans saving file) to load it in another page. The file does exist on my smartphone, but I cannot recover it with the program... Should I declare the "write_external_storage" and "read_external_storage" permissions? I am a little lost...

  • i have "PublicStorageDirectory$( ...)" in "Android Object", but i don't see "PublicScopedStorageDirectory$( ...)"... I want to save a simple file.txt (about kcfile.mfx ans saving file) to load it in another page. The file does exist on my smartphone, but I cannot recover it with the program... Should I declare the "write_external_storage" and "read_external_storage" permissions? I am a little lost...


    Please let us know what fusion version you are in.

    Regards,


    Fernando Vivolo

    ... new things are coming ...

  • Try 295.8 that was released yesterday. If you're using the French version of Fusion I think the Android object was outdated in 295.7 (I saw it and fixed it a couple of hours before releasing the build).

    Thank you Yves. I will load version 295.8. Would I need to check the "read_external_storage", "write_external_storage" and "manage_external_storage" permissions?
    Merci Yves. Je vais charger la version 295.8. Aurais-je besoin de cocher les autorisations "read_external_storage", "write_external_storage" et "manage_external_storage"?

  • Thank you Yves. I will load version 295.8. Would I need to check the "read_external_storage", "write_external_storage" and "manage_external_storage" permissions?
    Merci Yves. Je vais charger la version 295.8. Aurais-je besoin de cocher les autorisations "read_external_storage", "write_external_storage" et "manage_external_storage"?

    I'll let Fernando answer that.

  • La sauvegarde de mon fichier se fait correctement avec la version 295.8.

    Mais maintenant Google Console écrit: "D'après la déclaration d'identifiant publicitaire de la Play Console, votre appli utilise un identifiant publicitaire. Un fichier manifeste dans vos artefacts actifs n'inclut pas l'autorisation com.google.android.gms.permission.AD_ID."

    Où est cette autorisation?

    *************

    My file is saved correctly with version 295.8.

    But now Google Console writes: "According to the Play Console advertising ID declaration, your app uses an advertising ID. A manifest file in your active artifacts does not include the com.google.android.gms permission. permission.AD_ID."

    Where is this authorization?

  • It's in the properties of the Admob object.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!