点击查看源代码,可以查看该网页的源代码

一、文件结构

MainActivity.java:

package com.example.viewpagesource;import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;import com.example.viewpagesource.utils.StreamTool;import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.text.TextUtils;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends Activity implements View.OnClickListener {    protected static final int SUCCESS = 0;
    protected static final int ERROR = 1;
    protected static final int NETWORK_ERROR = 2;
    private Button btn;
    private EditText ed_path;
    private TextView tv;
    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn=(Button) findViewById(R.id.btn);btn.setOnClickListener(this);ed_path=(EditText) findViewById(R.id.ed_path);tv=(TextView) findViewById(R.id.tv);}//定义一个秘书Handler handler=new Handler(){  public void handleMessage(android.os.Message msg) {     switch (msg.what) {
            case SUCCESS:
                String value=(String) msg.obj;
                tv.setText(value);
                break;
            case ERROR:
                System.out.println("ERROR");
                Toast.makeText(MainActivity.this, "错误发生了", 0).show();
                break;
            case NETWORK_ERROR:
                System.out.println("NETWORK_ERROR");
                Toast.makeText(MainActivity.this, "错误发生了", 0).show();
                break;
            default:
                break;
            }   };};String path;
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        path = ed_path.getText().toString().trim();
        if(TextUtils.isEmpty(path)){
            Toast.makeText(this, "路径有错误", 0).show();
            return;
        }

        //连接网络,要启动一个新的线程去,干耗时的事情
        new Thread(){
            public void run() {
                try {
                    URL url=new URL(path);
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    //设置连接超时为5秒钟
                    conn.setConnectTimeout(5000);
                    conn.setRequestMethod("GET");
                    String contentType = conn.getContentType();

                    int code = conn.getResponseCode();
                    if(code==200){
                        InputStream in = conn.getInputStream();

                        //这里的data是从服务器返回的
                        String data=StreamTool.decodeStream(in);

                        //展示在屏幕上
                        Message msg=Message.obtain();
                        msg.what=SUCCESS;
                        msg.obj=data;

                        handler.sendMessage(msg);
                    }else{
                        Message msg=Message.obtain();
                        msg.what=ERROR;

                        handler.sendMessage(msg);
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    Message msg=Message.obtain();
                    msg.what=NETWORK_ERROR;

                    handler.sendMessage(msg);

                    e.printStackTrace();
                }
            };
        }.start();
    }}

StreamTool.java

package com.example.viewpagesource.utils;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;public class StreamTool {    public static String decodeStream(InputStream in) throws IOException {
        // TODO Auto-generated method stub
        //底层流

        ByteArrayOutputStream baos=new ByteArrayOutputStream();

            int len=0;
            byte[] buf=new byte[1024];
            while((len=in.read(buf))>0){
                baos.write(buf,0,len);
            }

            String data = baos.toString();
            return data;

    }}

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity" ><EditTextandroid:id="@+id/ed_path"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="http://www.baidu.com" /><Buttonandroid:id="@+id/btn" android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="查看网页源代码"/><ScrollViewandroid:layout_width="fill_parent"android:layout_height="wrap_content" >
    <TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/tv" />
 </ScrollView>
</LinearLayout>

AndroidMainfest.xml

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

【实战】android网页源代码查看器相关推荐

  1. html历史查看器,网页源代码查看器

    网页源代码查看器是一款可以查看手机浏览器网页的代码查看工具.平时我们都是在电脑IE上查看代码,现在手机上也可以查看了.网页源代码查看器app可以进行网页源代码的查看,并且拥有高亮显示,支持同步预览以及 ...

  2. 傲游浏览器怎么看网页源代码 网页源代码查看方法简述

    网页源代码,顾名思义就是指在网页制作过程中需要用到的一些特殊的"语言",设计人员向通过对这些"语言"进行组织编排制作出网页,再由浏览器进行"翻译&qu ...

  3. 谷歌浏览器怎么查看网页源代码 Chrome浏览器网页源代码查看技巧分享

    凭借简单.高效的使用体验,谷歌开发的网页浏览器"Chrome"在国内也不乏粉丝,甚至一度被视为装机必备的软件之一.但其操作方式和界面设计,与国产浏览器略有不同!那么,谷歌浏览器要怎 ...

  4. Android WIFI密码查看器实例(在获取Root权限下查看系统文件)

    Android WIFI密码查看器实例 实现原理:使用shell命令查看保存WIFI密码的系统文件 涉及的知识 界面展示 基本的Shell命令 shell查看WIFI密码 ShellUtil的使用 正 ...

  5. Esp32Cam WebServer 网页源代码查看与编辑

    Esp32Cam WebServer 网页源代码查看与编辑 date: 2022-01-12 lastmod: 2022-01-12 原文地址 背景介绍 在 为 Esp32 Cam 配置 Arduin ...

  6. 网页密码查看器+原代码+windows密码查看

    前段时间写了个查看windows密码框的密码查看器! 今天在 网上看了些关于网页密码查看的资料 就写了个网页密码查看器! 启动后点开始按纽(也就是第一个按纽) 把鼠标移动到网页密码框等1秒就ok了 ( ...

  7. 恢复IE8自带的源代码查看器

    各种知名不知名的文本编辑软件安完了之后,IE8的默认源代码编辑器也被改了很多次 其实IE8默认已经不使用记事本了,带有语法高亮和行号功能的查看器很好用,堪比FF的查看器了.而且占用资源很少,跑起来很快 ...

  8. Android 网络HTML查看器

    本文实现一个基于Android的网络HTML查看器 新建项目,项目布局文件如下: <LinearLayout xmlns:android="http://schemas.android ...

  9. 查看网页源代码 / 查看框架源代码

    网页源代码---是父级网页的代码,可在页面内右击或使用快捷键Ctrl+U 也可以在你想要查看的网页地址栏前面加上入view-source: 框架源代码---网页中有一种节点叫iframe,相当于网页的 ...

最新文章

  1. python用动态规划求最短路径_动态规划之最短路径和
  2. 泊松分布E(X^2)
  3. 十六进制转换为十进制的效率问题
  4. 磁盘阵列上的文件访问不了--原因是lvm不能activate,解决办法
  5. [原]RHCS集群的服务切换测试札记
  6. linux查看apache配置文件路径,linux 命令行下查看apache配置文件httpd.conf位置
  7. 计算机系统的物质实体,计算机基础-(-第1次-).pdf
  8. pycharm变量存_pycharm不为人知的功能们
  9. Vrep 中的运动规划1(主要是基于RRT算法)
  10. python使用sqlalchemy判断数据库是否包含某张表
  11. Qt学习之路3---Qt中的坐标系统
  12. 顶配售价 18499 元,用上 M1 的 iPad Pro 性能与价格“直逼”电脑,这届苹果发布会有你喜欢的吗?
  13. 空间滤波_空间频率 、 光波方向 与 空间滤波 4f系统
  14. mysql存储过程switch_Mysql存储过程从0开始(上)
  15. vss2005 配置与使用
  16. linux中如何编译成bin文件,gcc 如何编译成bin文件
  17. 2021中国隧道与地下空间大会暨中国(城市)地下空间学会(筹)成立大会
  18. python爬取饿了么评论_python爬取饿了么的实例
  19. 俄语考生学计算机难吗,俄语说的不好,没有计算机证书,甚至还是单身狗,怎么办?...
  20. mysql doesn t exist_Mysql的“Table 'mysql.servers' doesn't exist”的解决方法

热门文章

  1. Java Robot 编写脚本机器人(四)利用Java帮你打英雄联盟
  2. 我放弃了成为一个全栈开发工程师的理想
  3. 面试题:赛马问题(超级清晰详细)
  4. 借VR产业东风,江西抢滩布局“元宇宙”
  5. linux开发板usb摄像头,ARM9+Linux下USB摄像头图像采集
  6. 同方威视智能安检为北京大兴国际机场安全护航
  7. 增长黑客读书笔记(四)快节奏试验
  8. AWS和Azure频频中断,可靠性让公有云成为带刺的玫瑰
  9. Exploring GNU Radio -Eric Blossom
  10. 解决计算机后台结束不了的问题(卡死,抱死等问题)