簡體   English   中英

嘗試從我的應用程序打開 web 瀏覽器時看到“android.content.ActivityNotFoundException”

[英]I'm seeing an `android.content.ActivityNotFoundException` when trying to open a web browser from my app

以下代碼經常給我一個android.content.ActivityNotFoundException

我在我的一些活動中使用相同的代碼來引導用戶訪問 web 站點上的其他信息,並且它似乎大部分時間都可以正常工作。

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 相關? (下面的完整堆棧跟蹤)

如果問題出在新活動上,那么圍繞StartActivity語句的try/catch會是一個很好的保護措施嗎? (崩潰並不常見,我無法在我的測試設備或 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)

有沒有辦法防止這個錯誤?

try / catch塊中包裝任何使用隱式IntentstartActivity()startActivityForResult()調用,您可以在其中捕獲ActivityNotFoundException 請記住,您的應用程序的用戶不需要訪問 Web 瀏覽器(例如,具有受限帳戶的孩子)。

我無法從堆棧跟蹤中找出問題是與調用 Activity 還是與我正在啟動的新 Activity 相關?

它來自com.nooriginalthought.amalfi.FirstRun.openWebPage (FirstRun.java:27) 我們沒有您的完整文件,也無法告訴您那是哪一行。

另請注意,堆棧跟蹤指的是 StartActivityForResult,在這種情況下我沒有這樣做,我只是正常啟動新活動。

您的代碼正在調用startActivity() ,您可以在堆棧跟蹤的at android.app.Activity.startActivity (Activity.java:5549)行中看到。 最終,它在內部調用startActivityForResult()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM