发送短信不会启动 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();
}
我想从我的应用程序发送短信,为此我编写了下面的代码,非常简单。但我面临的问题是,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();
}