我想知道是否可以使用SMS意图从Android平板电脑发送短信?如果这不可能,我有什么选择?
答案 0 :(得分:9)
我想知道是否可以使用SMS意图从Android平板电脑发送短信?
没有真正的“短信”Intent
。有ACTION_SEND
和ACTION_SENDTO
Intent
个操作可能会导致发送短信。
对于“平板电脑”,屏幕尺寸高于平均水平的大多数设备都没有电话功能,因此无法对短信发送任何内容,更不用说发送它们以响应某些startActivity()
Intent
}。
我的选择是什么?
如果您必须能够发送短信,请将<uses-feature android:name="android.hardware.telephony"/>
添加到您的清单中,这样您的应用只会安装在具有电话功能的设备上。
如果您希望发送短信(如果可能的话),但如果无法解决,则需要做三件事:
将<uses-feature android:name="android.hardware.telephony" android:required="false"/>
添加到您的清单
使用PackageManager
和hasSystemFeature()
查看您是否确实在运行时具有电话功能
对于具有电话功能的设备,在“短信startActivity()
”上致电Intent
之前,请使用PackageManager
和queryIntentActivities()
查看是否有任何内容在将响应该Intent
的设备上,或将您的startActivity()
调用包装在异常处理程序中以捕获
ActivityNotFoundException
答案 1 :(得分:0)
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);
答案 2 :(得分:0)
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("sms:"
+ phoneNumber)));
试试这个。
答案 3 :(得分:0)
如何检查平板电脑是否提供短信服务:
这是CommonsWare在answer中描述的第三种解决方案:
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;
}
}
答案 4 :(得分:0)
这适合你。试试.........
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);
}