看我 大概率管用
问题:No Activity found to handle Intent
前言:今天照往常一样启动两个第三方应用,但是启动其中某一个应用的时候会闪退,另一个什么事情都没有,闪退的应用就报了上面图片中的错误。
修改前的启动应用的代码片段
public static void startActivity(Context context, String packageName) {
Intent intent = new Intent();
intent.setPackage(“packageName”);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
经过了一番的研究后,我决定换一种启动方式,先获取第三方应用的启动意图后再启动应用,于是就有以下的代码片段
修改后的启动应用的代码片
public static void startActivity(Context context, String packageName) {
try {
Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
context.startActivity(intent);
} catch (Exception e) {
Logcat.e("startActivity failed");
}
}
使用这种启动方式后,启动就没问题了,好极了!
附言:
在启动应用前,可以判断应用是否安装后再启动,可以使用以下方法进行包名判断是否安装了应用
public static boolean isAppInstalled(Context context, String packageName) {
if (packageName == null || packageName.length() == 0)
return false;
PackageInfo packageInfo;
try {
packageInfo = context.getPackageManager().getPackageInfo(packageName, 0);
} catch (PackageManager.NameNotFoundException e) {
packageInfo = null;
}
return packageInfo != null;
}