我想通过我的应用程序发送短信:
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
smsIntent.setData(Uri.parse("smsto:" + sms));
smsIntent.putExtra("smsto", sms);
smsIntent.putExtra("sms_body", "MYSMSBOBY");
mActivity.startActivity(smsIntent);
在有SMS应用程序的设备中工作正常,但在某些设备中我收到此崩溃错误:
No Activity found to handle Intent { act=android.intent.action.VIEW dat=smsto:xxxxxxxxxx flg=0x10000000 (has extras) }
我知道如何识别设备上是否安装了SMS应用程序?
答案 0 :(得分:1)
我知道如何识别设备上是否安装了SMS应用程序?
虽然您可以使用PackageManager来查看是否有任何应用程序来处理您的意图,但这根本不应该是您真正关心的问题。您应该注意的只是崩溃本身,而不仅仅是:
mActivity.startActivity(smsIntent);
你至少应该有一般的异常处理代码:
try {
mActivity.startActivity(smsIntent);
} catch ( Exception e ) {
e.printStackTrace();
// show toast or something so user knows why it is not working
}
并发现startActivity()
的任何失败。您可能还希望为此特定类型的例外catch
ActivityNotFoundException
答案 1 :(得分:0)
<!-- SMS -->
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
/**
* Test if device can send SMS
* @param context
* @return
*/
public static boolean canSendSMS(Context context) {
return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
}