2017-09-05 5 views
0

Je développe une application Android qui envoie des messages texte. Le code de livraison est cetteAndroid n'envoie pas de message SMS sans interaction de l'utilisateur

Manifest:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
<uses-permission android:name="android.permission.BIND_CARRIER_SERVICES" /> 
<uses-permission-sdk-23 android:name="android.permission.READ_PHONE_STATE"/> 
<uses-permission-sdk-23 android:name="android.permission.RECEIVE_SMS"/> 
<uses-permission-sdk-23 android:name="android.permission.SEND_SMS"/> 
<uses-permission-sdk-23 android:name="android.permission.INTERNET" /> 
<uses-permission-sdk-23 android:name="android.permission.BIND_CARRIER_SERVICES" /> 
<uses-permission-sdk-23 android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 

code:

 SmsManager smsManager 
        = SmsManager.getDefault(); 

      smsManager.sendTextMessage(sms.getNumber(), providerNumber, 
             sms.getContent(), sentPI, deliveredPI); 

Mais lorsque l'application fonctionne le message reste dans l'application SMS par défaut ne pas envoyé. Je dois entrer à l'application par défaut et toucher un par un et il envoie.

Ceci est mon build.gradle

apply plugin: 'com.android.application' 

    repositories { 
    jcenter() 
    } 

android { 
    compileSdkVersion 23 
    buildToolsVersion '25.0.3' 
    defaultConfig { 
     applicationId "xxxxxx.xxxxxxx" 
     minSdkVersion 22 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0"        
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
}) 
compile 'com.android.support:appcompat-v7:23.4.0' 
testCompile 'junit:junit:4.12' 
compile 'com.github.kittinunf.fuel:fuel:1.4.0' //for JVM 
compile 'com.github.kittinunf.fuel:fuel-android:1.4.0' //for Android 
compile 'com.github.kittinunf.fuel:fuel-rxjava:1.4.0' //for RxJava support 
} 

Comment puis-je résoudre ce problème?

+0

Quel est le numéro de fournisseur que vous utilisez? –

Répondre

0

Enfin j'ai trouvé la solution ... c'était ce que je pensais. Le problème est que j'essayais d'envoyer des SMS depuis un autre thread. Il est supposé envoyer de Main Ui Thread. Le code fourni par Google ne fonctionne que dans le fil principal de l'interface utilisateur. Actuellement, j'essaie d'utiliser un service pour voir si ça marche!

0

Pour envoyer les messages à l'aide du fournisseur par défaut, vous devez utiliser « null » comme argument de fournisseur Vous aimez cette

smsManager.sendTextMessage(sms.getNumber(), null, sms.getContent(), sentPI, deliveredPI); 

J'utilise ce

smsManager.sendTextMessage(number, null, message, null, null); 

dans l'une de mon application et cela fonctionne parfaitement.

Note: 23+ application doivent avoir l'élément (s) dans le manifeste, mais vous devez aussi demander ces autorisations lors de l'exécution de l'utilisateur sur les appareils d'Android, en utilisant des méthodes comme

checkSelfPermission() 

et

requestPermissions() 
+0

J'ai utilisé null et j'ai aussi essayé avec le numéro fourni par mon transporteur. (Pas mon numéro de téléphone) –

+0

essayez de cette façon en passant l'argument statique et les zéros et vérifiez si cela fonctionne directement ou non. 'smsManager.sendTextMessage (enter_some_static_number_here, null," Bonjour ", null, null);' –

+0

J'utilise ce 'smsManager.sendTextMessage (nombre, null, message, null, null);' dans une de mon application et cela fonctionne parfaitement . –