在我的Android应用程序中,我使用以下代码启动消息传递应用程序,并为文本消息填写默认文本:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("sms:"+USERS_PHONE_NUMBER));
intent.putExtra("sms_body", "DUMMY TEXT");
startActivity(intent);在大多数情况下,这是可行的。但不幸的是,在某些设备上,我得到了以下错误消息:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=sms:+XXXXXXXXXX (has extras) }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1510)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1384)
at android.app.Activity.startActivityForResult(Activity.java:3131)
at android.app.Activity.startActivity(Activity.java:3237)显然,我创建的意图是无法处理的。
我应该使用PackageManager.queryIntentActivities()还是有其他方法解决这个问题?
提前感谢!
发布于 2012-02-29 23:46:40
我还没有具体地尝试过这个意图,但最简单的方法可能是添加try和catch块
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
// Display some sort of error message here.
}由于不能指望特定的Android设备拥有消息应用程序(例如,一些平板电脑没有电话服务),所以你必须做好准备。
这是一个很好的做法,一般来说,当你开始外部活动,以避免崩溃在你的应用程序。
发布于 2013-09-25 18:38:12
下面是我使用的一种方法,用于安全地打开Android上的活动,并在找不到活动时给用户一些反馈。
public static void safeOpenActivityIntent(Context context, Intent activityIntent) {
// Verify that the intent will resolve to an activity
if (activityIntent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(activityIntent);
} else {
Toast.makeText(context, "app not available", Toast.LENGTH_LONG).show();
}
}(我想我是从youtube上的谷歌开发者视频中得到的,但现在我找不到视频了.)
https://stackoverflow.com/questions/9508005
复制相似问题