Je bodge un chemin vers les mms
This commit is contained in:
parent
8c5fa6a49f
commit
7b12c3bb45
|
@ -55,6 +55,8 @@ dependencies {
|
|||
implementation 'com.journeyapps:zxing-android-embedded:3.5.0'
|
||||
implementation 'com.google.zxing:core:3.3.1'
|
||||
implementation 'com.cpiz.bubbleview:bubbleview:1.0.2'
|
||||
implementation 'com.klinkerapps:android-smsmms:4.3.0'
|
||||
implementation 'org.apache.httpcomponents:httpcore:4.4.1'
|
||||
}
|
||||
|
||||
dokka {
|
||||
|
|
|
@ -2,13 +2,21 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="xyz.johnny.norntalk">
|
||||
|
||||
<uses-permission android:name="android.permission.RECEIVE_SMS" />
|
||||
<uses-permission android:name="android.permission.SEND_SMS" />
|
||||
<uses-permission android:name="android.permission.READ_SMS" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_MMS" />
|
||||
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
<uses-permission android:name="android.permission.SEND_SMS"/>
|
||||
<uses-permission android:name="android.permission.READ_SMS" />
|
||||
<uses-permission android:name="android.permission.WRITE_SMS"/>
|
||||
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
|
||||
<uses-permission android:name="android.permission.RECEIVE_MMS"/>
|
||||
<uses-permission android:name="android.permission.VIBRATE"/>
|
||||
<uses-permission android:name="android.provider.Telephony.SMS_RECEIVED" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||
|
||||
<application
|
||||
android:allowBackup="false"
|
||||
|
@ -65,12 +73,17 @@
|
|||
|
||||
<receiver
|
||||
android:name=".messages.NornSentReceiver"
|
||||
android:enabled="true"/>
|
||||
android:taskAffinity="xyz.johnny.norntalk.SMS_SENT"/>
|
||||
|
||||
<receiver
|
||||
android:name=".messages.NornDeliveredReceiver"
|
||||
android:enabled="true"/>
|
||||
android:taskAffinity="xyz.johnny.norntalk.SMS_DELIVERED"/>
|
||||
|
||||
<receiver
|
||||
android:name=".messages.NornMMSSentReceiver"
|
||||
android:taskAffinity="com.klinker.android.messaging.MMS_SENT"/>
|
||||
|
||||
<service android:name="com.android.mms.transaction.TransactionService"/>
|
||||
|
||||
<service android:name=".messages.NornMessageService"
|
||||
android:enabled="true"
|
||||
|
|
|
@ -1,17 +1,8 @@
|
|||
package xyz.johnny.norntalk.messages
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import com.klinker.android.send_message.MmsReceivedReceiver
|
||||
|
||||
/**
|
||||
* Classe recevant les MMS.
|
||||
* Non implémentée mais nécessaire pour pouvoir définir l'application comme application SMS
|
||||
*/
|
||||
class NornMMSReceiver: BroadcastReceiver() {
|
||||
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
TODO("not implemented")
|
||||
}
|
||||
|
||||
}
|
||||
class NornMMSReceiver: MmsReceivedReceiver()
|
|
@ -0,0 +1,8 @@
|
|||
package xyz.johnny.norntalk.messages
|
||||
|
||||
import com.klinker.android.send_message.MmsSentReceiver
|
||||
|
||||
/**
|
||||
* Classe permettant d'avertir de l'envoi d'un MMS
|
||||
*/
|
||||
class NornMMSSentReceiver : MmsSentReceiver()
|
|
@ -1,10 +1,7 @@
|
|||
package xyz.johnny.norntalk.messages
|
||||
|
||||
import android.app.PendingIntent
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.AsyncTask
|
||||
import android.telephony.SmsManager
|
||||
import android.util.Base64
|
||||
import android.util.Log
|
||||
import org.bouncycastle.util.encoders.Hex
|
||||
|
@ -13,7 +10,6 @@ import xyz.johnny.norntalk.R
|
|||
import xyz.johnny.norntalk.database.NornDatabase
|
||||
import xyz.johnny.norntalk.database.entities.Message
|
||||
import xyz.johnny.norntalk.security.Curve
|
||||
import xyz.johnny.norntalk.security.Security
|
||||
import java.util.*
|
||||
|
||||
|
||||
|
@ -126,6 +122,11 @@ class NornMessage constructor(text: String?, var ciphertext: String?, sender: St
|
|||
*/
|
||||
val id get() = dbMessage.id
|
||||
|
||||
/**
|
||||
* Array contenant le numéro de téléphone de chaque destinataire
|
||||
*/
|
||||
val addresses get() = conversation.members.map { it.number }.toTypedArray()
|
||||
|
||||
init {
|
||||
if (sender == null) {
|
||||
this.sender = null
|
||||
|
@ -248,50 +249,10 @@ class NornMessage constructor(text: String?, var ciphertext: String?, sender: St
|
|||
* des propriétés de la conversation
|
||||
*/
|
||||
fun send(context: Context, insert: Boolean, raw: Boolean = false) {
|
||||
val smsManager = SmsManager.getDefault()
|
||||
|
||||
// envoyer le message chiffré si la conversation est sécurisée
|
||||
val text = if (this.conversation.secured && this.ciphertext != null && !raw) this.ciphertext
|
||||
else this.text
|
||||
|
||||
Log.d(this::class.java.simpleName, "sent: " + this)
|
||||
|
||||
// diviser le messages en plusieurs parties pour les messages longs
|
||||
val parts = smsManager.divideMessage(text)
|
||||
|
||||
val piSent: ArrayList<PendingIntent>?
|
||||
val piDelivered: ArrayList<PendingIntent>?
|
||||
|
||||
if (insert) {
|
||||
// création des receveurs d'envoi du message
|
||||
piSent = ArrayList()
|
||||
parts.forEach {
|
||||
val intentSent = Intent(context, NornSentReceiver::class.java)
|
||||
piSent.add(PendingIntent.getBroadcast(context, Security.random.nextInt(), intentSent, 0))
|
||||
}
|
||||
|
||||
// création des accusés de réception du message
|
||||
piDelivered = ArrayList()
|
||||
parts.forEach {
|
||||
val intentDelivered = Intent(context, NornDeliveredReceiver::class.java)
|
||||
piDelivered.add(PendingIntent.getBroadcast(context, Security.random.nextInt(), intentDelivered, 0))
|
||||
}
|
||||
} else {
|
||||
// désactiver les accusés de reception
|
||||
piSent = null
|
||||
piDelivered = null
|
||||
}
|
||||
|
||||
if (parts.size == 1)
|
||||
// envoyer le message en un seul SMS
|
||||
smsManager.sendTextMessage(this.contact.number, null, text, piSent?.get(0), piDelivered?.get(0))
|
||||
else
|
||||
// envoyer le message en plusieurs SMS
|
||||
smsManager.sendMultipartTextMessage(this.contact.number, null, parts, piSent, piDelivered)
|
||||
|
||||
// insérer le message dans la base de données
|
||||
if (insert)
|
||||
this.insertMessage(context)
|
||||
Log.d(this::class.java.simpleName, "sending: " + this)
|
||||
// envoyer le message
|
||||
val transaction = NornTransaction(context)
|
||||
transaction.sendNewMessage(this, insert, raw)
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -23,6 +23,7 @@ class NornSentReceiver : BroadcastReceiver() {
|
|||
toast.setText(R.string.message_sent)
|
||||
else
|
||||
toast.setText(R.string.error_send)
|
||||
|
||||
toast.duration = Toast.LENGTH_SHORT
|
||||
toast.show()
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue