我想通过以下方式发送带有我的应用程序的短信:
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应用程序吗?
最佳答案
知道我如何识别设备上是否安装了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