您的位置:首页 > 移动开发 > Android开发

android.content.ActivityNotFoundException: No Activity found to handle Intent

2014-08-27 14:22 621 查看
代码如下:

public void sendMessage(String number) {
if (TextUtils.isEmpty(number)) {
return;
}
Intent intent = new Intent(Intent.ACTION_SENDTO,
Uri.fromParts(Constants.SCHEME_SMS, number, null));
context.startActivity(intent);
}


异常信息提示如下:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO dat=sms:xxxxxxxxxxx }

at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1632)

at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424)

at android.app.Activity.startActivityForResult(Activity.java:3424)

调查如下:

1,如果手机中没有能发送短信的app就会报出这样的错

2,手机中的能发送短信的应用被关闭了(设置-->应用-->app-->关闭);

解决方法:为了避免有的手机没有打开相应文件的app,在startActivity那里做一个try catch

public void sendMessage(String number) {
if (TextUtils.isEmpty(number)) {
return;
}
Intent intent = new Intent(Intent.ACTION_SENDTO,
Uri.fromParts(Constants.SCHEME_SMS, number, null));
try {
context.startActivity(intent);
} catch(ActivityNotFoundException exception) {
Toast.makeText(this, "no activity", Toast.LENGTH_SHORT).show();
}
}


or 调用系统方法判断是否有对应的app

public void sendMessage(String number) {
if (TextUtils.isEmpty(number)) {
return;
}
Intent intent = new Intent(Intent.ACTION_SENDTO,
Uri.fromParts(Constants.SCHEME_SMS, number, null));

PackageManager packageManager = getPackageManager();
List<ResolveInfo>applist = packageManager.queryIntentActivities(intent, 0);
if (applist == null || applist.isEmpty()) {
Toast.makeText(this, "no activity", Toast.LENGTH_SHORT).show();
return;
}
context.startActivity(intent);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐