发送短信不会启动 Activity

Send SMS won't startActivity

我想从我的应用程序发送短信,为此我编写了下面的代码,非常简单。但我面临的问题是,No activity is started on sending message

Method to send a message:

private void sendSMS(Context context, String phone, String msg){
    Intent smsIntent = new Intent(Intent.ACTION_VIEW);

    smsIntent.setData(Uri.parse("smsto:"));
    smsIntent.putExtra("address", phone);
    smsIntent.putExtra("sms_body", msg);
    smsIntent.setType("vnd.android-dir/mms-sms");

    try {
        startActivity(smsIntent);
        finish();
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(context, "SMS faild, please try again later.", Toast.LENGTH_SHORT).show();
    }
}

Permission added in manifest

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

一直显示用catch()写的toast

当你敬酒时,总是意味着它进入了catch()。 Catch 正在处理 ActivityNotFoundException

Follow this link, if it helps:

如果您使用的是 marshmallow 及更高版本,请仔细阅读下面的内容 link,其中包含如何添加运行时权限的示例

因为发送短信属于危险权限,所以你也需要在运行时处理,所以只在menifest文件中写权限是不够的。

在添加运行时权限之前,如果您愿意,可以启用您的权限phone按照以下步骤操作。

Goto settings --> apps --> select you app --> permissions --> enable sms permission.

您还可以检查此 link 以获取应在运行时处理的危险权限列表

https://developer.android.com/guide/topics/permissions/requesting.html

您正在执行的代码是旧的。 这是从您的应用程序发送短信的代码

public void sendSMSFunction(){
     SmsManager smsManager = SmsManager.getDefault();
     String messageContent = "Your Content";
     smsManager.sendTextMessage("Destination_PhoneNumber", null, messageContent, null, null);
}

并将此权限添加到您的清单文件

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

如果您在 Android Marshmallow 及更高版本中执行此操作,则需要请求运行时权限。

试试这个:

也不需要:

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

只需使用此代码:

Intent sendIntent = new Intent(Intent.ACTION_VIEW);
                sendIntent.setData(Uri.parse("sms:"));
                sendIntent.putExtra("sms_body", "Check out My app for your smartphone. Download it today from https://google.com");
                try {
                    startActivity(sendIntent);
                } catch (ActivityNotFoundException e) {
                    e.printStackTrace();                        
                }