Я проверил похожие вопросы об ошибке No Activity found to handle Intent
.ни одна из них не покрывала мою проблему.
Я получаю эту ошибку в своих журналах Sentry, когда приложение собирается открыть URL-адрес в браузере Chrome с помощью Intent в AppCompatActivity :
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);
сообщил об ошибке.
и это метод isAppInstalled()
, который находится в классе MyMethods:
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;
}
иногда дело доходит до цели.Как вы видите, я проверил, установлен ли Chrome на устройстве или нет, поэтому он установлен, если он больше не идет!в этой ситуации, почему он не смог выполнить startActivity(intent);
и пошел перехватывать область?
Мой код находится в Activity, поэтому я должен использовать intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
или нет?