当前位置: 首页 > 知识库问答 >
问题:

具有自定义CSS的Android Studio Webview(jsoup)

曹成双
2023-03-14

我想加载facebook。com在webview中使用自定义CSS来更改一些内容。我使用jsoup,但每次启动应用程序时都会崩溃。

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    try {
        Document doc = Jsoup.connect("https://www.facebook.com").get();
        doc.head().getElementsByTag("link").remove();
        doc.head().appendElement("link").attr("rel", "stylesheet").attr("type", "text/css").attr("href", "style.css");
        String htmlData = doc.outerHtml();
        WebView webview = new WebView(this);
        setContentView(webview);
        webview.loadDataWithBaseURL("file:///android_asset/.", htmlData, "text/html", "UTF-8", null);

    } catch (IOException e) {
        e.printStackTrace();
    }
}

Logcat输出

FATAL EXCEPTION: main Process:android.app., PID: 23936hread.mainRuntimeException:无法启动活动ComponentInfo{hread.java:5417}:java.lang.reflect.NetworkOnMainThreadException atethod.invokeActivityTcom.android.internal.os.LaunchActive(ActivityTaller.run)atnit.java:726ActivityTcom.android.internal.os.LaunchActive(ActivityTnit.main)atnit.java:616ActivityThread.-wrap11(ActivityTandroid.os.)atandroid.os.ActivityThread$H. handleMessage(ActivityThread.java:1344)atandroid.os.Handler.dispatchMessage(Handler.java:102)atandroid.os.Looper.loop(Looper.java:148)atcom.example.name.firstappActivityTjava.lang.(ActivityTcom.example.name.firstapp/com.example.name.firstapp.MainActivity)atandroid.os.Mandroid.app.(本机方法)athread.performZygoteInit$MachodAndArgsChread.java:2416(ZygoteIandroid.app.)athread.handleZygoteIhread.java:2476(ZygoteIandroid.app.)由以下原因引起:hread.javaNetworkOnMainThreadException atandroid.app.StrictMode$AndroidBlockGuardPolicy. onNetwork(StrictMode. java: 1273)at java. netHttpEngine. createNextConnection(HttpEngine. java: 357)在com. android. okhttp. intertal. http。HttpEngine. nextConnection(HttpEngine. java: 340)在com. android. okhttp. intertal. http。HttpEngine. Connect(HttpEngine. java: 330)在com. android. okhttp. intertal. http。HttpEngine. sendRequest(HttpEngine. java: 248)在com. android. okhttp. interal. huc。HttpURLConnectionImpl.执行(HttpURLConnectionImpl. java: 433)在com. android. okhttp. interal. huc。HttpURLConnectionImpl. java: 114)在com. android. okhttp. interal. huc。委托HttpsURLConnection. connect(委托HttpsURLConnection. java: 89)在Zygote In it. main(Zygote In it. java: 616)

共有1个答案

孔乐邦
2023-03-14

您正在主(UI)线程中连接到网络。因此,您会得到android.os.NetworkOnMainThreadException。

Android系统不允许这样做,因为它会阻塞UI线程。所以使用一些后台线程,如Asyncask或IntentService来访问网络。

 类似资料:
  • 问题内容: 这是我的http服务器: 我需要在myHander内部访问实例t1。 有什么办法吗? 谢谢! 问题答案: 有一种方法可以将属性设置为class: 您必须注意,在所有使用myHandler的地方都将是t1的相同实例

  • 问题内容: 我正在构建一个实现HTML5音频标签的音乐播放器Web应用程序,但是希望它在所有浏览器中看起来都一样-是否可以定义我自己的自定义CSS?如何? 问题答案: 当前尚无使用CSS设置HTML5 播放器样式的方法。相反,您可以不使用该属性,而使用Javascript实现自己的控件。如果您不想自己全部实现它们,建议您使用现有的主题化HTML5音频播放器

  • 我正在努力裁剪javax。验证。ConstraintValidator和javax。验证。根据我的需要限制ValidatorContext。我从格式错误的请求正文收到的响应消息始终采用以下形状: <代码> 此消息也以500而不是400错误请求的形式返回。我无法获得工作到解决方案来执行以下操作: 仅包括<代码> 我有以下代码: 向上面的代码发送格式错误的有效负载将导致如下消息: 我希望能够收到以下信

  • 我对Symfony和API平台很陌生。我正在尝试创建一个自定义资源/操作,该资源/操作接收请求的正文,根据值从数据库中获取数据,然后将实体集合返回给客户端。 示例:具有以下正文的 请求: 根据这些属性,我想查询数据,进行计算,然后返回数据。 我试图弄清楚如何使这个API平台的方式。我已经在谷歌上搜索并在留档中寻找了几个小时,但我找不到实现这一目标的方法。 我尝试使用和如下所示的控制器查询数据: 但

  • 我正在尝试制作一个网格,它有7列,并以所需的行数进行扩展(由后端提供)。所以我的css是这样的: null null 我试图实现的是一个网格,有一个定义的较小的第一行72px,然后所有其他行应该是86px……但它就是不起作用,有没有解决这种情况的办法?使用上面的片段使我的第三行达到73.23px

  • 我在Node.js忘记密码后端路由,我试图使用nodemailer从我从namecheap.com购买的自定义域发送电子邮件,以及电子邮件域。我不确定这是主机、端口/安全还是授权的问题。但是,当我更改主机时,它会给出一个ECONREFUSED错误,所以我相信该部分正在工作。我的防火墙被禁用了(据我所知),我重新启动了,但是很难判断,因为诺顿防病毒软件控制着它。 这是我的代码,取自路由器。在我的后端