IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windev Mobile Discussion :

Sms Java plus de 160 caractères


Sujet :

Windev Mobile

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 125
    Points : 121
    Points
    121
    Par défaut Sms Java plus de 160 caractères
    Bonjour,
    Afin de contourner la limitation de 160 caractères de la fonction SMSEnvoi, je suis à la recherche d'un code java (ou autre), qui me permettrait d'envoyer des sms long, à partir d'un terminal android.

    Si quelqu'un peut m'aider.
    Cordialement.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    Par défaut
    Bonjour

    C'est un problème assez complexe.

    Le SDK propose un mécanisme pour le faire, avec une découpe de gros messages en petits SMS, mais en fait il faut ensuite gérer l'émission et la réception des SMS et de leur bouts.

    Ce que j'ai fait, c'est un thread persistant avec une file d'attente qui n'envoie un bout que lorsque l'acquittement de l'envoi est reçu.

    Par contre :
    - j'ai fait le code il y a deux ans : je ne me souviens plus de tous les détails
    - je ne peux pas le partager car pas assez bien isolé dans un composant

    Pour le SMS Multi parts, on utilise "divideMessage" de la classe "SMSManager".

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 125
    Points : 121
    Points
    121
    Par défaut
    Bonjour,

    Merci de ta réponse.

    Je pensais qu'en passant directement par du code java, on pouvait contourner la limitation de 160 caractères de windev.
    Apparemment, la problématique reste exactement la même s'il faut découper le sms en plusieurs morceaux.

    Dans ce cas, ce n'est pas plus intéressant que de passer par la fonction smsenvoi() de windev.
    Cordialement.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    Par défaut
    Sauf que le SMSManager, outre la découpe, gère l'envoi des morceaux.... et leur remise en bout à bout ... enfin, c'est ce que je crois me rappeler.

    Tu peux faire SMSEnvoie, mais il faudra gérer la découpe et la recomposition toi-même (c'est ce que j'avais envisagé à un moment ... ).

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 125
    Points : 121
    Points
    121
    Par défaut
    Merci de ta réponse.

    Dans ce cas, cela peut être une solution.
    Existe il une api, qui me permette de l'intégrer à mon appli windev ?
    Cordialement.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    Par défaut
    Citation Envoyé par Pascal26120 Voir le message
    Existe il une api, qui me permette de l'intégrer à mon appli windev ?
    Malheureusement non, c'est enfoui dans un projet et je n'ai pas les ressources nécessaires (en temps) pour faire du support sur ce code .... j'en suis le premier désolé, car je préfère également trouver des APIs.

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 125
    Points : 121
    Points
    121
    Par défaut
    Bon, ca n'a pas l'air simple dutout.
    Je vois comment découper le message, mais pas dutout comment le reconstituer chez le destinataire. Vu qu'il reçoit le message dans sont appli sms.
    Cordialement.

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 125
    Points : 121
    Points
    121
    Par défaut
    Bon,
    J'ai avancé dans mon dev
    J'arrive bien à envoyer des long sms avec la fonction sendMultipartTextMessage de smsmanager et le message arrive bien en un seul morceau.
    Par contre, le problème est que j'ai toujours un retour à vrai, meme si le message n'est pas envoyé (mauvais numéro, pas de sim, etc)

    Mon code java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.telephony.SmsManager;
    import java.util.ArrayList;
     
    public static boolean sendLongSms(String recipient,String message)
    {
    	try {
    		SmsManager smsManager = SmsManager.getDefault();
    		ArrayList<String> msgArray = smsManager.divideMessage(message);
    		smsManager.sendMultipartTextMessage(recipient, null,msgArray, null, null);
    		return true;
    	} catch (Exception e) {
    		return false;	
    	}
    }
    Encore merci de votre aide
    Cordialement.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    Par défaut
    Deux trucs dont je me rappelle:
    - ne pas oublier de modifier le manifeste et de déclarer l'activity comme recepteur de sms renpriorité max pour court circuiter l'application de reception classique des sms
    - s' abonner au cr d'envoi et les tracker : il faut brancher un listener ; le retour positif que tu vois veut seulement dire que tu as demandé l'envoi du sms ; c'est le listener qui te dira si c'est ok ou non ; j'ai mis un compteur dans le listener qui vérifie cela.

    Il y a plusieurs niveaux de listener: pour l'envoi effectif et un autre pour la reception côté abonné.

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 125
    Points : 121
    Points
    121
    Par défaut
    J'ai trouvé le code ci-dessous pour le listener, mais je ne vois pas dutout comment l'implémenter dans windev :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    public class sentPendingIntents extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        switch (getResultCode()) {
        case Activity.RESULT_OK:
            Toast.makeText(context,
                    "SMS Sent" + intent.getIntExtra("object", 0),
                    Toast.LENGTH_SHORT).show();
     
            break;
        case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
            Toast.makeText(context, "SMS generic failure", Toast.LENGTH_SHORT)
                    .show();
     
            break;
        case SmsManager.RESULT_ERROR_NO_SERVICE:
            Toast.makeText(context, "SMS no service", Toast.LENGTH_SHORT)
                    .show();
     
            break;
        case SmsManager.RESULT_ERROR_NULL_PDU:
            Toast.makeText(context, "SMS null PDU", Toast.LENGTH_SHORT).show();
            break;
        case SmsManager.RESULT_ERROR_RADIO_OFF:
            Toast.makeText(context, "SMS radio off", Toast.LENGTH_SHORT).show();
            break;
        }
    }
    Sachant que ma procédure actuelle est comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.telephony.SmsManager;
    import java.util.ArrayList;
    import android.content.BroadcastReceiver;
    import android.app.PendingIntent;
    import android.content.Intent;
     
    public static boolean sendLongSms(String recipient,String message)
    {
    	ArrayList<PendingIntent> sentPendingIntents = new ArrayList<PendingIntent>();
    	SmsManager smsManager = SmsManager.getDefault();
    	ArrayList<String> msgArray = smsManager.divideMessage(message);
    	smsManager.sendMultipartTextMessage(recipient,null,msgArray,sentPendingIntents,null);
    	return true;
    }
    Je patauge dans la semoule avec java. Si quelqu'un peut me dire comment faire avec windev pour que la procédure sendLongSms() me retourne juste si le message a été envoyé ou pas ?
    Encore merci de votre aide.
    Cordialement.

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 125
    Points : 121
    Points
    121
    Par défaut
    Personne ne peut me venir en aide ?
    Meme Pcsoft ne peut rien pour moi
    Cordialement.

  12. #12
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    La solution que tu envisages de mettre en place s'oriente plus sur JAVA que WinDev Mobile, demandes conseil sur le forum dédié à JAVA, tu auras surement plus de réponses : http://www.developpez.net/forums/f6/java/

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

Discussions similaires

  1. [WM18] Envoi de Sms de + de 160 caractères (Andoid)
    Par fhwn75 dans le forum Windev Mobile
    Réponses: 0
    Dernier message: 17/05/2013, 09h09
  2. SQL de plus de 255 caractères dans un recordset
    Par acama dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 05/01/2006, 15h50
  3. JDBC : requete de plus de 4000 caractères
    Par Endymion222 dans le forum JDBC
    Réponses: 1
    Dernier message: 01/12/2005, 17h00
  4. [SQL] Problème de requête SQL de plus de 8060 caractères ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 06/04/2005, 15h07
  5. [Java][char] Reconnaissance de caractères
    Par ZeKiD dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 09/04/2004, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo