Italian Invio SMS non funziona con nuovo cellulare

toro1950

Active Member
Licensed User
B4X:
Sub butsms_Click
Dim d As PhoneSms
d.Send(Nrtel,testo)
end sub
Buongiorno, con questo semplice codice inviavo ed invio sms con due cellulari di qualche anno, ora ho acquistato un cellulare nuovo
a mia moglie, un motorola g85 5G, installata l'app appena si invia l'sms l'app esce, sich!
Android era il 14 e questa mattina si è aggionato al 15 ma il risultato non cambia, sono disperato, qualcuno ne sa qualcosa.
Chiaramente se invio un sms tramite l'app del cellulare questo viene inviato, non è che si possa inviare un sms tramite l'app come sull'iphone?
 

Sagenut

Expert
Licensed User
Longtime User
Questioni di sicurezza di Google.
Puoi utilizzare questo codice
B4X:
     Dim In As Intent
    In.Initialize(In.ACTION_VIEW, "sms:" & number)
    In.PutExtra("sms_body", "this is the body")
    StartActivity(In)
Che però mi pare di capire che farà apparire l'app degli SMS di sistema con tutto pronto..... Ma Invia lo devi cliccare tu.
 

LucaMs

Expert
Licensed User
Longtime User
Pare che con Android 15 ci siano nuove restrizioni, potresti inviare un SMS in quel modo solo se la tua app fosse quella predefinita per l'invio di SMS su quello smartphone.
Come alternativa, potresti usare un Intent per aprire l'app di default per l'invio, impostando automaticamente i campi necessari ma richiederebbe l'intervento finale dell'utente, che dovrebbe effettuare l'invio concretamente:
B4X:
Dim Intent1 As Intent
Intent1.Initialize(Intent1.ACTION_VIEW, "sms:" & NumeroDiTel)
Intent1.PutExtra("sms_body", testo)
StartActivity(Intent1)
 

LucaMs

Expert
Licensed User
Longtime User
Questioni di sicurezza di Google.
Puoi utilizzare questo codice
B4X:
     Dim In As Intent
    In.Initialize(In.ACTION_VIEW, "sms:" & number)
    In.PutExtra("sms_body", "this is the body")
    StartActivity(In)
Che però mi pare di capire che farà apparire l'app degli SMS di sistema con tutto pronto..... Ma Invia lo devi cliccare tu.
scopa, settebello e denari 😂 (stesso istante).
 

toro1950

Active Member
Licensed User
Grazie siete Grandi!!!!!, come al solito sempre pronti ad aiutare.
Ora visto il messaggio non viene inviato dalla mia App ma
dall'app del cellulare ho eliminato dal Manifest
AddPermission(android.permission.SEND_SMS)
e dalla sub B4XPage_Created
If rp.Check(rp.PERMISSION_SEND_SMS) = False Then
rp.CheckAndRequest(rp.PERMISSION_SEND_SMS)
End If
Penso di avere fatto bene oppure ho sbagliato?
 

Sagenut

Expert
Licensed User
Longtime User
Io credo che tu abbia fatto bene.
Ma la verifica finale è solo una:
Gli SMS partono e arrivano?
 

LucaMs

Expert
Licensed User
Longtime User
Grazie siete Grandi!!!!!, come al solito sempre pronti ad aiutare.
Ora visto il messaggio non viene inviato dalla mia App ma
dall'app del cellulare ho eliminato dal Manifest
AddPermission(android.permission.SEND_SMS)
e dalla sub B4XPage_Created
If rp.Check(rp.PERMISSION_SEND_SMS) = False Then
rp.CheckAndRequest(rp.PERMISSION_SEND_SMS)
End If
Penso di avere fatto bene oppure ho sbagliato?
Hai fatto bene, se usi l'Intent non serve quel permesso.
 

Sagenut

Expert
Licensed User
Longtime User
A voler esagerare dovresti verificare da quale versione di Android c'è questa limitazione e utilizzare il tuo invio integrato nelle versioni precedenti che lo consentono e questa modalità nelle versioni più recenti.
In questo caso dovresti lasciare i permessi.
Ma credo sia più facile uniformare tutto al metodo della app di sistema, se per te non è un problema dover dare conferma per inviare l'sms.
 

Sagenut

Expert
Licensed User
Longtime User
Non volevo correggerti, anche perché i due post concordano, è solo... l'ennesima concidenza, ho visto (è arrivato) il tuo post dopo il mio invio 😄
Mica siamo in concorrenza. ;)
 

sirjo66

Well-Known Member
Licensed User
Longtime User
Per inviare SMS (sia lunghi che corti) io uso questa routine:

B4X:
Sub SendLargeSms(Destination As String, Message As String)

    Dim r As Reflector
    r.Target = r.RunStaticMethod("android.telephony.SmsManager", "getDefault", Null, Null)
    Dim parts As Object
    parts = r.RunMethod2("divideMessage", Message, "java.lang.String")
    r.RunMethod4("sendMultipartTextMessage", _
        Array As Object(Destination, Null, parts, Null, Null), _
        Array As String("java.lang.String", "java.lang.String", _
        "java.util.ArrayList", "java.util.ArrayList", "java.util.ArrayList"))

End Sub

Ovviamente nel manifest devi avere
AddPermission(android.permission.SEND_SMS)
e devi anche chiedere il permesso, ma questo penso già lo sai
 

toro1950

Active Member
Licensed User
Ti ringrazio sirjo66 ma preferisco usare l'app del cellulare, in questo modo anche se è fastidioso confermare l'invio Google play
non pone nesun problema altrimenti fa storie per chidere l'autorizzazione.
 
Top