2017-09-05 42 views
0

我正在开发一个发送短信的android应用程序。航运码这是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); 

但是,当应用程序工作的信息会保留在默认的短信应用不发送。我要进入默认的应用程序,并逐个触摸并发送。

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

我怎样才能解决这个问题?

+0

你正在使用的提供者号码是什么? –

回答

0

最后,我找到了解决方案......这是我的想法。麻烦的是,我试图从另一个线程发送短信。它假定从主Ui线程发送。 Google提供的代码只能在主UI线程中使用。目前我正在尝试使用服务来查看是否有效!

0

要使用你需要使用“零”作为供应商的说法 喜欢这个

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

默认提供商发送消息,我在我的应用程序之一,使用该

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

这工作完美。

注:23+应用程序必须清单中的元素(一个或多个),但你也必须在通过Android 6.0+设备的用户运行时,要求这些权限,使用方法,如

checkSelfPermission() 

requestPermissions() 
+0

我使用null,我也试着用我的运营商提供的号码。 (不是我的电话号码) –

+0

尝试通过这种方式传递静态参数和空值并检查它是否直接工作。 'smsManager.sendTextMessage(enter_some_static_number_here,null,“Hello”,null,null);' –

+0

我正在使用这个smsManager.sendTextMessage(number,null,message,null,null);'在我的一个应用程序中, 。 –

相关问题