我想知道是否可以使用 SMS Intent 从 Android 平板电脑发送 SMS?如果这是不可能的,我有什么选择?
5 回答
我想知道是否可以使用 SMS Intent 从 Android 平板电脑发送 SMS?
没有真正的“短信” Intent
。有可能导致发送 SMS 的操作ACTION_SEND
。ACTION_SENDTO
Intent
关于“平板电脑”,大多数屏幕尺寸高于平均水平的设备都没有电话功能,因此无法对 SMS 进行任何操作,更不用说startActivity()
在某些Intent
.
我有什么选择?
如果您绝对必须能够发送 SMS 消息,请添加<uses-feature android:name="android.hardware.telephony"/>
到您的清单中,这样您的应用程序将只安装在具有电话功能的设备上。
如果您想在可能的情况下发送 SMS 消息,但在不可能的情况下解决它,您需要做三件事:
添加
<uses-feature android:name="android.hardware.telephony" android:required="false"/>
到您的清单使用
PackageManager
并hasSystemFeature()
查看您在运行时是否确实具有电话功能对于具有电话功能的设备,在您调用
startActivity()
“SMSIntent
”之前,请使用PackageManager
并queryIntentActivities()
查看设备上是否有任何响应Intent
,或者将您的呼叫包装startActivity()
在异常处理程序中以捕获ActivityNotFoundException
如何检查平板电脑是否有可用的短信服务:
这是CommonsWare在他的回答中描述为一种方法的第三个解决方案:
public static boolean hasSmsService(Context context)
{
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("smsto:123456789"));
PackageManager pm = context.getPackageManager();
List<ResolveInfo> res = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if(res.size() > 0)
{
return true;
}
return false;
}
}
这是给你的锅。试试看.........
Method :
CAll on button click event.....
sendSMS("Any text",number,sms_string);
现在,在 oncreate() 中声明这个;
public static void sendSMS(String status, String phoneNumber, String message) {
Log.e("", "Page : " + status + ", No : " + phoneNumber
+ ",Message Length: " + message.length() + ", Message : "
+ message);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, null, null);
}
String smsNumber = "your number here";
String smsText = "Your text";
Uri uri = Uri.parse("smsto:" + smsNumber);
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", smsText);
startActivity(intent);
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("sms:"
+ phoneNumber)));
尝试这个。