WebView.loadUrl()在真机环境中执行即报错的问题

一位初学者在尝试将网站转化为安卓客户端时遇到困难,通过调整AndroidManifest.xml文件中的权限设置解决了WebView加载网页失败的问题。介绍了如何通过添加特定权限来解决Android应用在真机上运行时出现的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于一个毫无JAVA和Android开发经验,甚至不久前才对2G、3G有点粗略概念,几天前才用上智能手机的码农来说,千辛万苦拼凑出来的apk,放到真机里安装、执行,结果老实不客气地弹出一个“意外停止执行”的对话框,这种打击是多么的沉重!

那一刻,我觉得天都倒塌了。

这是一个多么简陋的安卓客户端,它只有一个重要的功能,就是开启后,自动打开我们网站。我用的是WebView。

可问题偏偏出现在这里。就是这一句:

WebView.loadUrl(url);

什么状况?在模拟器里执行得好好的。

我怀疑是版本的问题,开发默认用的是Android4.2,但我的手机是2.3。

于是在开发环境将版本调回2.1,够低了吧。问题依旧。

难道我写错了什么?是在主线程访问了网络报错吗?明明是放在 new Thread 里的。

难道是在非主线程描绘了UI?也没有啊。

再次疯狂搜索,个个大牛都说的差不多,要么在xml里定义一个啦,要么在代码里new一个啦,然后记得开启 javascript 功能喔。。。问题是我照抄这些代码,放到真机里运行,一样会报错。

该不会是我这个手机不支持WebView吧。天哪,没有WebView,我简直不能活,谁那么牛可以去写一个浏览器,或者直接去处理那些HTML标记?

我想起不久前用过一个自动生成网站安卓客户端的软件,生成了一个apk,于是拿到我的手机上安装,结果人家一切都很正常,可以打开我们网站。问题是,它用的是什么控件呢?

反编译这个apk,代码看不懂,但它里面也是用到了WebView!我精神大振!不过它的AndroidMainifest.xml里面有这么几句:

    <uses-sdk android:minSdkVersion="4" />
    <uses-permission android:name="android.permission.RESTART_PACKAGES" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <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_WIFI_STATE" />

其中

<uses-permission android:name="android.permission.INTERNET" />

我是有的,其他就没有。结果将这几句加上以后,问题解决。

其实这几条语句中,只须补加后面这3条:

    <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_WIFI_STATE" />

就可以。也许中间
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
这条不用也可以,但我嫌麻烦,没有继续测试。这个权限好像是获取大致GPS位置的,主要用于加强手机广告的地域性。


鸣谢,参考文章:

Android APK反编译详解(附图)

http://blog.youkuaiyun.com/sunboy_2050/article/details/6727581


网站Android客户端制作软件绿色版.zip

http://vdisk.weibo.com/s/44B7L


我的手机:酷派8180,安卓:2.3.7,中移动。








<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <!-- 添加网络权限 --> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:testOnly="true" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.FullscreenWebview" tools:targetApi="31"> <!-- 设置横屏和全屏 --> <activity android:name=".MainActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:exported="true" android:screenOrientation="landscape" android:theme="@style/FullscreenTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> package com.example.ceshi import com.example.ceshi.R; import android.os.Bundle import android.webkit.WebView import android.webkit.WebViewClient import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { private var webView: WebView? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) webView = findViewById<WebView>(R.id.webview) setupWebView() } private fun setupWebView() { // 基本设置 val webSettings = webView!!.settings webSettings.javaScriptEnabled = true // 启用JS webSettings.domStorageEnabled = true // 启用DOM存储 // 加载目标URL webView!!.loadUrl("http://127.0.0.1:8010/appchat/index.html") // 处理页面导航 webView!!.webViewClient = object : WebViewClient() { override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { view.loadUrl(url) return true // 禁止外部浏览器打开 } } } // 处理返回键 override fun onBackPressed() { if (webView!!.canGoBack()) { webView!!.goBack() } else { super.onBackPressed() } } }这是我详细的安卓和xml文件 但是apk打开,有一个一模一样的的可以打开唯独我这个不行报错:net:ERR_CLEARTEXT_NOT_PERMITTED,我需要详细的怎么修改并完整代码和修改步骤
最新发布
07-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值