0
votes

Comment réparer cette utilisation dangereuse d'un récepteur nullable de matrice de type?

C'est une application WhatsApp History Saver. Jusqu'à Android 9 C'est bien, mais quand j'ai essayé de l'utiliser sur Android 10, il se bloque avec la trace de pile ci-dessous: xxx pré>

VideOfragment.kt P>

    private fun loadStories() {
        if (!storagePermissionGranted()) {
            toast(getString(R.string.message_permissions_required))
            stopRefreshing()
            return
        }

        val dir = File(K.WHATSAPP_STORIES)
        if (!dir.exists())
            dir.mkdirs()

        doAsync {
            val files = dir.listFiles { _, s ->
                s.endsWith(".mp4") || s.endsWith(".gif") }

            uiThread {

                if (files.isNotEmpty()) {
                    hasStories()

                    for (file in files.sortedBy { it.lastModified() }.reversed()) {
                        val story = Story(K.TYPE_VIDEO, file.absolutePath)
                        adapter.addStory(story)
                    }

                } else {
                    noStories()
                }

                stopRefreshing()
            }

        }

    }


0 commentaires

3 Réponses :


0
votes

Changer si (fichiers.Isnotempty ()) {à si (fichiers? .Isempty ()! = false) {


3 commentaires

Fichiers? .Isempty ()! = FALSE est vrai si Fichiers est NULL , alors je vais lancer au Files.sorted ... .


@Alexey mon mauvais, devrait être? .Isnotempty () == vrai


Après avoir utilisé ce si (fichiers? .isnotempty () == true) { 2020-08-07 15: 11: 02.865 28678-28811 / com.shaikjaleel.wsave E / Perf: échec de l'obtention de fichier Liste com.shaikjaleel.wsave 20: 02.86-07 15: 11: 02.865 / com.shaikjaleel.wsave E / Perf: getFoldersize (): exception_1 = java.lang.nullpointException: tentative d'obtenir la longueur de Null Array Now app s'ouvre bien, mais il ne synchronise pas les fichiers du répertoire



0
votes

Je ne suis pas sûr de savoir pourquoi ce

Utilisation non sécurisée d'un récepteur nullable de type tableau ?

est juste un avertissement au lieu d'une erreur. J'assume aussi la ligne 84 dans le message d'erreur est xxx

si oui, je la réécris comme xxx

ou xxx

mais je pense que le premier est plus propre.


2 commentaires

Oui, je sais que c'est juste un avertissement. Mais lorsque vous venez de faire cette application compatible avec l'API 29 Android 10 applaises d'applications avec le journal d'erreur ci-dessus. Tout va bien jusqu'à Android 9 API 28. Si je fais que l'application Changements ci-dessous ne change pas, il est installé, mais plus tard, il ne montre pas les fichiers de répertoires. (Il reste toujours nul) signifie aucun fichier


si (fichiers? .isnotempty () ?: FAUX) Ajout de cette question et lisez soigneusement les journaux C'était le problème avec: Android.System.errnoException: Open Échec: EACCE (autorisation refusée) alors j'ai ajouté Cette permission dans Android: DemandleGacyexternalStorage = "vrai" dans Manifest Le problème est corrigé maintenant merci à tout le monde