【问题标题】:Android - Every link in webview crashes appAndroid - webview 中的每个链接都会使应用程序崩溃
【发布时间】:2012-10-26 10:49:05
【问题描述】:

我正在构建一个使用 ActionBarSherlock 选项卡栏交换了一堆片段的应用程序。其中一个片段只是一个 WebView,它显示了他们在线商店的移动版本。

商店的网站在主页上加载正常,但只要我点击任何链接,应用就会崩溃(在 ICS 4.0.3 上测试时)。

这是我用来设置网络视图的代码:

    // Set the web view
    WebView webView = (WebView)rootView.findViewById(R.id.shop_webview);
    webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    WebSettings webViewSettings = webView.getSettings();
    webViewSettings.setJavaScriptEnabled(true);
    webView.loadUrl(shopUrl);

这是应用崩溃时LogCat中出现的错误:

10-26 21:39:05.565: ERROR/AndroidRuntime(11021): FATAL EXCEPTION: main
    java.lang.NullPointerException
    at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:876)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4507)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
    at dalvik.system.NativeStart.main(Native Method)

Manifest(按照cmets中的要求),注意显示webview的activity是在RootActivity中管理的一个fragment:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="au.com.client.android" android:versionCode="1" android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/>
    <uses-feature android:name="android.hardware.touchscreen" android:required="true"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.CALL_PHONE"/>

    <application android:name=".App" android:label="@string/app_name" android:icon="@drawable/app_icon" android:logo="@drawable/logo">
        <activity android:name="au.com.client.whitelabel.android.LaunchActivity" android:label="@string/app_name" android:theme="@style/Theme.Client" android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <uses-library android:name="com.google.android.maps"/>
        <activity android:name="au.com.client.whitelabel.android.RootActivity" android:label="@string/app_name" android:theme="@style/Theme.Client" android:screenOrientation="portrait" />
        <activity android:name="au.com.client.whitelabel.android.SettingsActivity" android:label="@string/app_name" android:screenOrientation="portrait" />
        <activity android:name="au.com.client.whitelabel.android.LoginActivity" android:windowSoftInputMode="stateHidden" android:configChanges="orientation|keyboardHidden" android:theme="@style/Theme.Client" android:screenOrientation="portrait" />
    </application>
</manifest>

我知道,没什么好说的。恐怕网上商店正在为移动网站使用某种框架,该框架依赖于手机上完整浏览器提供的功能,但在小 WebView 中不受支持。在此先感谢您的帮助...

【问题讨论】:

  • 你能给我们链接的代码吗?
  • Seshu,manifest now added, Angelo.Hannes 由于商业机密,我还不能提供网上商店的 URL,我知道这可能无法回答这个问题,我希望有一些将解决问题的 webview 设置或清单配置...

标签: android webview android-webview


【解决方案1】:

我意识到这个问题中的信息有点半生不熟,但最后解决方案很简单,只是补充道:

webView.setWebViewClient(new WebViewClient());

我不知道为什么会这样 - 我假设在创建时有一个默认的 WebViewClient 附加到您的 WebView。希望这有助于以后有人摆脱困境。

【讨论】:

  • 没有`webView.setWebViewClient(new WebViewClient()); ` 您的应用会启动浏览器,而不是打开应用内的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-12
  • 2015-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多