-1
我已经创建了以下方法来打开设备的默认短信应用程序并预先填充消息和(可选)电话号码。从默认短信应用程序获取短信活动结果
我想知道的是如何获得从SMS活动返回的RESULT_OK
只有当SMS已发送?目前,当我退出短信活动时,我会收到RESULT_CANCELLED
,因为我可能会期望。
是否有一种简单的方法来确定是否在返回到我的应用程序时发送短信?
public static void sendSMS(Activity activity, String message, String phoneNumber){
boolean hasPhoneNumber = phoneNumber != null;
if(message == null){
showSMSError(activity, null);
return;
}
Intent smsIntent;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
smsIntent = new Intent(Intent.ACTION_SENDTO);
//Ensures only SMS apps respond
smsIntent.setData(Uri.parse("smsto:" + (hasPhoneNumber ? phoneNumber : "")));
//No resolvable activity
if (smsIntent.resolveActivity(activity.getPackageManager()) == null) {
showSMSError(activity, null);
return;
}
}else{
//Old way of accessing sms activity
smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
if(hasPhoneNumber) {
smsIntent.putExtra("address", phoneNumber);
}
smsIntent.putExtra("exit_on_sent", true);
}
smsIntent.putExtra("sms_body", message);
activity.startActivityForResult(smsIntent, SMS_ACTIVITY_REQUEST);
}
只是为了确保我站在你的答案,你的意思是通过使用'SMSManager'的应用程序发送短信? –
@EdGeorge:这将是知道短信是否被发送的更有效方式。第三方SMS客户端不会返回结果,因为文档说他们不应该返回结果,并且不能更改结果。 – CommonsWare