使用Android Studio 3.0发送短信

时间:2017-12-06 17:21:56

标签: java android android-studio-3.0

发送短信(不仅仅是创建文本并要求用户点击发送)也不会那么困难,但我在过去的11个小时里一直在阅读每个stackoverflow条目,但仍然失败了。我现在想知道这个方法最近是否有所改变,因为这些例子似乎都没有用。如果有人可以帮助我,我会感激不尽。这是我的第一篇文章,所以如果我不遵守社区惯例,我很抱歉。

这是我的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="joe.sms">

    <uses-permission android:name="android.permission.SEND_SMS" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

这是我的MainActivity:

package.joe.sms;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.SmsManager;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage("+1716255xxxx", null, "Test message", null, null);
    }
}

注意:我在实际代码中使用完整的电话号码。

结果如下:

error message screen shot

提前感谢您的协助。

1 个答案:

答案 0 :(得分:1)

实现这样的代码,

  private static final int SEND_SMS_CODE = 23;

如果获得许可,则给予检查许可,发送短信,否则请求许可。

private void permissionCheck(){
    if (isSendSmsAllowed()) {
          sendSms();
          return;
      }

    requestSmsSendPermission();}

发送短信的功能。

private void sendSms(){
    SmsManager sms = SmsManager.getDefault();
              ArrayList<String> parts = sms.divideMessage("MESSAGE");
              sms.sendMultipartTextMessage(90******, null, parts, null,
                null);}

如果未获批准请求许可。

//Requesting permission
  private void requestSmsSendPermission() {

    if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.SEND_SMS)) {
      //If the user has denied the permission previously your code will come to this block
      //Here you can explain why you need this permission
      //Explain here why you need this permission
    }

    //And finally ask for the permission
    ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.SEND_SMS },
      SEND_SMS_CODE);
  }

希望它可以帮到你。