我已经检查了有关@Service
错误的类似问题。他们没有一个解决我的问题。
当应用程序要使用 AppCompatActivity 中的Intent在Chrome浏览器中打开URL时,我在Sentry日志中收到此错误:
No Activity found to handle Intent
这是我的代码:
android.content.ActivityNotFoundException: No Activity found to handle Intent
{ act=android.intent.action.VIEW dat=https://www.example.com/...
flg=0x10000000 pkg=com.android.chrome }
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setPackage("com.android.chrome");
if (MyMethods.isAppInstalled(getApplicationContext(), "com.android.chrome")) {
try {
startActivity(intent);
} catch (ActivityNotFoundException ex) {
SentryLog.warn(ex);
// Chrome browser presumably not installed so allow user to choose instead
intent.setPackage(null);
startActivity(intent);
}
} else {
// Chrome browser presumably not installed so allow user to choose instead
intent.setPackage(null);
startActivity(intent);
}
报告了错误。
这是SentryLog.warn(ex);
方法,它在MyMethods类中:
isAppInstalled()
有时会赶上范围。如您所见,我检查了设备上是否安装了chrome,因此如果其他设备都没有安装,则会安装它!在这种情况下,为什么它无法执行public static boolean isAppInstalled(Context context, String packageName) {
try {
if (context != null) {
context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
}
return true;
} catch (PackageManager.NameNotFoundException e) {
MyLog.w(TAG, new Throwable().getStackTrace()[0].getLineNumber(), e);
e.printStackTrace();
}
return false;
}
并赶上了范围?
我的代码在“活动”中,是否应该使用startActivity(intent);
?
答案 0 :(得分:0)
无需检查Chrome,它将找到浏览器本身。 注意,URL必须以http或https开头。
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
fragmentActivity.startActivity(browserIntent);
答案 1 :(得分:0)
try {
Intent i = new Intent();
i.setPackage("com.android.chrome");
i.setAction(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
} catch (Exception e) {
e.printStackTrace();
// chrome is not installed in the device
}
您可以通过这种方式来避免崩溃,也可以安装或不安装该应用。
答案 2 :(得分:0)
要检查是否安装了chrome,可以使用以下方法
private boolean isChromeInstalled() {
PackageInfo pInfo;
try {
pInfo = getPackageManager().getPackageInfo("com.android.chrome", 0);
} catch (PackageManager.NameNotFoundException e) {
//chrome is not installed on the device
return false;
}
return true;
}