2017-09-05 3 views
0

Ich entwickle eine Android-Anwendung, die Textnachrichten sendet. Der Versand Code ist diesAndroid sendet keine SMS-Nachricht ohne Benutzerinteraktion

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); 

Aber wenn die App die Nachricht funktioniert, bleibt in App SMS standardmäßig als nicht gesendet. Ich muss die Standard App eingeben und eins nach dem anderen berühren und es sendet.

Das ist mein 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 
} 

Wie kann ich dieses Problem lösen?

+0

Was ist die Provider-Nummer, die Sie verwenden? –

Antwort

0

Schließlich fand ich die Lösung ... es war, dass ich dachte. Problem ist, dass ich versuchte, SMS von einem anderen Thread zu senden. Es wird angenommen, dass es vom Main Ui Thread gesendet wird. Der von Google bereitgestellte Code funktioniert nur im Haupt-UI-Thread. Momentan versuche ich einen Dienst zu benutzen, um zu sehen, ob es funktioniert!

0

Um die Nachrichten mit dem Standard-Provider "null" als Provider Argument Gefällt Ihnen dieses

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

Ich bin mit diesem

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

in einem meiner App benötigen senden zu verwenden und das funktioniert perfekt.

Hinweis: 23+ App müssen die Elemente (e) in manifest haben, aber Sie haben auch für diese Berechtigungen zur Laufzeit vom Benutzer auf Android 6.0+ Geräte fragen, wie Methoden

checkSelfPermission() 

und

requestPermissions() 
+0

Ich benutzte Null und versuchte es auch mit der Nummer von meinem Träger zur Verfügung gestellt. (Nicht meine Telefonnummer) –

+0

versuchen Sie auf diese Weise statische Argument und Nullen übergeben und prüfen, ob es direkt funktioniert oder nicht. 'smsManager.sendTextMessage (enter_some_static_number_here, null," Hallo ", null, null);' –

+0

Ich benutze diese 'smsManager.sendTextMessage (Nummer, null, Nachricht, null, null);' in einer meiner App und das funktioniert perfekt . –

Verwandte Themen