Android: problème de chaîne vide pour la colonne « adresse » pour le fournisseur de contenu sms

StackOverflow https://stackoverflow.com/questions/8812763

  •  26-10-2019
  •  | 
  •  

Question

Je travaille sur une application Android qui a lu le SMS de fournisseur de contenu. L'application fonctionne très bien et fin sms lecture du fournisseur de contenu. Mais quelque temps (très rare) le rendement de la colonne « adresse » null le message sms.

Voici un exemple de code Qu'est-ce que j'utilise:

String whereClause = "_id > " + String.valueOf(Database.getLastSmsId(this));
        Cursor cursor = getContentResolver().query(smsUri, null, whereClause, null, null);
        if(cursor.moveToFirst()) {
            do {
                int id = cursor.getInt(cursor.getColumnIndex("_id"));
            String protocol = cursor.getString(cursor.getColumnIndex("protocol"));
            String body = cursor.getString(cursor.getColumnIndex("body"));

            String address = cursor.getString(cursor.getColumnIndex("address")); // <----- Here is the problem
            // address returns as null string

            String date = cursor.getString(cursor.getColumnIndex("date"));

                Log.d(Constants.TAG, "SMS event received. address="+address);
            } while(cursor.moveToNext());
    }

Je reçois ce problème sur Motorola Android v2.3.5 Driod. S'il vous plaît conseiller.

Ali

Était-ce utile?

La solution

Je trouve le problème. Le système d'exploitation android enregistrer le message en tant que projet de fournisseur de contenu SMS, si commencer à écrire et puis fermez l'application SMS (en raison d'un appel entrant ou toute autre raison). Ceci génère une nouvelle entrée dans la base de données SMS avec la valeur nulle dans la colonne « adresse ».

Salman

Autres conseils

Ceci est un comportement normal. Trouvé dans la documentation SmsMessage :

Renvoie l'adresse d'origine (expéditeur) de ce message SMS dans la chaîne forme ou nulle en cas d'indisponibilité

Si vos pauses app à cause d'un NPE plus tard, vous devez insérer un chèque nul et définir l'adresse à une chaîne vide.

Un conseil:. Une question devrait demander quelque chose et vous devez fournir une trace de la pile si vous avez une erreur

Cela peut se produire en cas de numéro masqué.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top