Android查看网页源码

简介: 1 布局 在ScrollView控件里嵌入一个TextView即可,其带有一个滚动条. 2利用网页的路径和编码方式,得到网页的字节数组 public class GetPageResource { ...

1 布局

<ScrollView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content" >
      <TextView
          android:id="@+id/result"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"             
        />
</ScrollView>



在ScrollView控件里嵌入一个TextView即可,其带有一个滚动条.

2利用网页的路径和编码方式,得到网页的字节数组

public class GetPageResource {
      public static String getHtml(String path,String encoding) throws Exception{
    	  HttpURLConnection connection=(HttpURLConnection) new URL(path).openConnection();
    	  connection.setConnectTimeout(5000);
    	  connection.setRequestMethod("POST");
    	 if(connection.getResponseCode()==200){
    		 InputStream inputStream=connection.getInputStream();
    		 byte [] imageData=GetResource.readResource(inputStream);
    		 return new String(imageData,encoding);
    	 }
    	 return null;
      }
}



分析:
(1)关于网页的编码方式,可以利用HttpWatch工具来获取
(2)利用URL得到HttpURLConnection connection这样便于资源建立起了联系,且设置connection的属性值
(3)利用HttpURLConnection connection得到输入流.即可以这么想:此时的网页已经保存到了此输入流inputStream里
(4)将在输入流里的网页数据输出到字节数组里面.即byte [] imageData=GetResource.readResource(inputStream).如下
readResource(inputStream)方法如下:

public class GetResource {
    public static byte[] readResource(InputStream inputStream) throws Exception{
    	ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
    	byte [] array=new byte[1024];
    	int len=0;
    	while( (len=inputStream.read(array))!=-1){
    		   outputStream.write(array,0,len);
    	}
    	inputStream.close();
    	outputStream.close();
    	
    	return outputStream.toByteArray();
    }



分析:
(1)没有方法可以把输入流里的数据直接放到字节数组里(查阅API即知),而是要利用ByteArrayOutputStream outputStream
   把在输入流自己把自己的数据读(read())到一个字节数组里面,即inputStream.read(buffer),然后数组里面的数据放入
   输出流ByteArrayOutputStream outputStream里面,即outputStream.write(buffer,0,len);
(2)待数据全部转移到输入流outputStream里面,此时就可以把输出流的数据全部转换为字节数组,即outputStream.toByteArray();
(3)在此例子就很好体现了输入流和输出流的使用.

 

在输入流相应的API中都是把输入流读取到一个数组中,或者只读取一个字节,或者读取一行
如FileInputStream类中的方法:
public int read(byte[] b,int off,int len)从此输入流中将最多 len 个字节的数据读入一个字节数组中
public int read()从此输入流中读取一个数据字节
如在BufferedReader类中的方法:
public String readLine() 读取一个文本行.返回值:包含该行内容的字符串

在输出流相应的API中都把是字节数组写入此输出流,或者只把数组中的某个位置的数据写入输出流
如ByteArrayOutputStream类的方法中:
public void write(byte[] b,int off,int len)将指定字节数组中从偏移量off开始的len个字节写入此字节数组输出流
public void write(int b)将指定的字节写入此字节数组输出流
然后我们可以发现:
(1)可以把输出流里的数据转换为字节数组
如ByteArrayOutputStream类的方法中:
public byte[] toByteArray():创建一个新分配的字节数组。其大小是此输出流的当前大小,并且缓冲区的有效内容已复制到该数组中。
(2)可以把输出流里的数据转换为字符串
如ByteArrayOutputStream类的方法中:
public String toString():将缓冲区的内容转换为字符串,根据平台的默认字符编码将字节转换成字符。

 

相关文章
|
10月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1782 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
10月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1138 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
10月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1212 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
10月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
458 0
|
Ubuntu 开发工具 Android开发
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
本文介绍了在基于Ubuntu 22.04的环境下配置Python 3.9、安装repo工具、下载和同步AOSP源码包以及处理repo同步错误的详细步骤。
1897 0
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
|
XML 搜索推荐 Android开发
Android改变进度条控件progressbar的样式(根据源码修改)
本文介绍了如何基于Android源码自定义ProgressBar样式。首先分析了系统源码中ProgressBar样式的定义,发现其依赖一张旋转图片实现动画效果。接着分两步指导开发者实现自定义:1) 模仿源码创建一个旋转动画XML文件(放置在drawable文件夹),修改图片为自定义样式;2) 在UI控件中通过`indeterminateDrawable`属性应用该动画。最终实现简单且个性化的ProgressBar效果,附带效果图展示。
738 2
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码android版环境配置流程及功能明细
部署需基于 CentOS 7.9 系统,硬盘不低于 40G,使用宝塔面板安装环境,包括 PHP 7.3(含 Redis、Fileinfo 扩展)、Nginx、MySQL 5.6、Redis 和最新 Composer。Swoole 扩展需按步骤配置。2021.08.05 后部署需将站点目录设为 public 并用 ThinkPHP 伪静态。开发环境建议 Windows 操作系统与最新 Android Studio,基础配置涉及 APP 名称修改、接口域名更换、包名调整及第三方登录分享(如 QQ、微信)的配置,同时需完成阿里云与腾讯云相关设置。
|
开发工具 git 索引
repo sync 更新源码 android-12.0.0_r34, fatal: 不能重置索引文件至版本 ‘v2.27^0‘。
本文描述了在更新AOSP 12源码时遇到的repo同步错误,并提供了通过手动git pull更新repo工具来解决这一问题的方法。
991 1
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
3755 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
Java Android开发 芯片
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
1805 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题

热门文章

最新文章