java - 尝试从我的应用打开 Web 浏览器时,我看到了 `android.content.ActivityNotFoundException`
问题描述
以下代码android.content.ActivityNotFoundException
经常给我一个。
我在我的一些活动中使用相同的代码来引导用户访问网站上的其他信息,并且它似乎大部分时间都可以正常工作。
private void openWebPage(String url_to_view) {
Intent open_web_page_intent = new Intent();
if (url_to_view != null && !url_to_view.equals("")) {
open_web_page_intent.setAction(Intent.ACTION_VIEW);
try {
open_web_page_intent.setData(Uri.parse(url_to_view));
startActivity(open_web_page_intent);
} catch (ParseException e) {
Log.e(LOGTAG, "URI Parse Exception in Open Web Page");
}
}
}
有没有办法防止这个错误?
我无法从堆栈跟踪中找出问题是与调用 Activity 还是与我正在启动的新 Activity 相关?(下面的完整堆栈跟踪)
如果问题出在新活动上,try/catch
围绕StartActivity
声明是否是一个很好的保障措施?(崩溃并不常见,我无法在我的测试设备或 AVD 上重现它)。
另请注意,堆栈跟踪指的是StartActivityForResult
我在这种情况下没有做的事情,我只是正常启动新活动。
android.content.ActivityNotFoundException:
at android.app.Instrumentation.checkStartActivityResult (Instrumentation.java:2071)
at android.app.Instrumentation.execStartActivity (Instrumentation.java:1717)
at android.app.Activity.startActivityForResult (Activity.java:5252)
at androidx.fragment.app.FragmentActivity.startActivityForResult (FragmentActivity.java:6)
at android.app.Activity.startActivityForResult (Activity.java:5203)
at androidx.fragment.app.FragmentActivity.startActivityForResult (FragmentActivity.java:6)
at android.app.Activity.startActivity (Activity.java:5581)
at android.app.Activity.startActivity (Activity.java:5549)
at com.nooriginalthought.amalfi.FirstRun.openWebPage (FirstRun.java:27)
at com.nooriginalthought.amalfi.FirstRun.lambda$initialize$4 (FirstRun.java:1)
at com.nooriginalthought.amalfi.FirstRun.lambda$initialize$4$FirstRun (FirstRun.java:1)
at com.nooriginalthought.amalfi.-$$Lambda$FirstRun$iHROIfEVj1qDNupIO6vj8JGEmlM.onClick (-.java:1)
at android.view.View.performClick (View.java:7869)
at android.widget.TextView.performClick (TextView.java:14958)
at android.view.View.performClickInternal (View.java:7838)
at android.view.View.access$3600 (View.java:886)
at android.view.View$PerformClick.run (View.java:29362)
at android.os.Handler.handleCallback (Handler.java:883)
at android.os.Handler.dispatchMessage (Handler.java:100)
at android.os.Looper.loop (Looper.java:237)
at android.app.ActivityThread.main (ActivityThread.java:8107)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1100)
解决方案
有没有办法防止这个错误?
包装任何在/块中使用隐式的startActivity()
or调用,您可以在其中捕获. 请记住,您的应用程序的用户不需要访问 Web 浏览器(例如,具有受限帐户的孩子)。startActivityForResult()
Intent
try
catch
ActivityNotFoundException
我无法从堆栈跟踪中找出问题是与调用 Activity 还是与我正在启动的新 Activity 相关?
它来自com.nooriginalthought.amalfi.FirstRun.openWebPage (FirstRun.java:27)
. 我们没有您的完整文件,也无法告诉您那是哪一行。
另请注意,堆栈跟踪指的是 StartActivityForResult,在这种情况下我没有这样做,我只是正常启动新活动。
您的代码正在调用startActivity()
,正如您at android.app.Activity.startActivity (Activity.java:5549)
在堆栈跟踪行中看到的那样。最终,内部调用startActivityForResult()
。
推荐阅读
- file - java.io.File 的 .createNewFile() 不会创建文件
- python - OpenCV:跟踪扩展矩形的坐标
- ios - 颤动的iOS功能背景模式已打开
- javascript - 如何在 Angular 5 规范中为 document.URL 编写单元测试
- python - 在 Django 应用程序中显示特定用户详细信息而不是所有详细信息
- ios - Xcode for Swift 4 中的屏幕时间报告
- c - 从 ARP 数据包打印源和目标 IP 地址
- raku - Perl 6:使用 AT-POS 的可写多维下标访问
- text - 使用记事本删除/或替换为空格->所有字符串以及其中的内容
- javascript - 从 html 调用一个弹出的 javascript