Android发送短信崩溃

时间:2014-12-10 09:07:31

标签: java android

我想通过我的应用程序发送短信:

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应用程序?

2 个答案:

答案 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);
    }