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.
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.
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".
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.
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 ... ).
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.
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.
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 :
Encore merci de votre aide
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; } }
Cordialement.
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é.
J'ai trouvé le code ci-dessous pour le listener, mais je ne vois pas dutout comment l'implémenter dans windev :
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
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; } }
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 ?
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; }
Encore merci de votre aide.
Cordialement.
Personne ne peut me venir en aide ?
Meme Pcsoft ne peut rien pour moi
Cordialement.
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager