簡體   English   中英

沒有用戶互動,Android不會發送短信

[英]Android doesn't send SMS message without user interaction

我正在開發一個發送短信的android應用程序。 運送代碼是這個

表現:

<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"/>

碼:

     SmsManager smsManager
                    = SmsManager.getDefault();

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

但是,當應用程序運行時,消息仍保留在默認的SMS應用程序中,未發送。 我必須進入默認應用,然后一一觸摸,然后發送。

這是我的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
}

我該如何解決?

要使用默認提供程序發送消息,您需要使用“ null”作為提供程序參數

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

我正在用這個

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

在我的一個應用程序中,效果很好。

注意:23+應用程序需要在清單中包含元素,但是您還必須在運行時向Android 6.0+設備上的用戶要求使用這些方法的權限,例如

checkSelfPermission() 

requestPermissions()

最終我找到了解決方案……就是我的想法。 問題是我試圖從另一個線程發送SMS。 假定是從主Ui線程發送的。 Google提供的代碼僅在主UI線程中有效。 目前,我正在嘗試使用一項服務,以查看是否有效!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM