成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

android篇-如何做一個(gè)簡(jiǎn)單的安卓源碼查看器

1,網(wǎng)頁(yè)源碼查看器:

創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供蓮花企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、HTML5建站、小程序制作等業(yè)務(wù)。10年已為蓮花眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

Httpurlconnection:用于發(fā)送或接收數(shù)據(jù)

Mainactivity篇:

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import android.os.Bundle;

import android.os.Handler;

import android.os.Looper;

import android.os.Message;

import android.app.Activity;

import android.view.Menu;

import android.view.View;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends Activity {

protected  final int REQUESTSUCESS = 0;  //ctrl + shift + X  Y

protected  final int REQUESTNOTFOUND = 1;

protected  final int REQUESTEXCEPTION = 2;

private EditText et_path;

private TextView tv_reuslt;

//在主線(xiàn)程中定義一個(gè)handler 

private Handler handler = new Handler(){

//這個(gè)方法是在主線(xiàn)程里面執(zhí)行的 

public void handleMessage(android.os.Message msg) {

//所以就可以在主線(xiàn)程里面更新ui了 

//[1]區(qū)分一下發(fā)送的是哪條消息 

switch (msg.what) {

case REQUESTSUCESS:   //代表請(qǐng)求成功

String content =  (String) msg.obj;

tv_reuslt.setText(content);

break;

case REQUESTNOTFOUND:   //代表請(qǐng)求成功

Toast.makeText(getApplicationContext(), "請(qǐng)求資源不存在", 0).show();

break;

case REQUESTEXCEPTION:   //代表請(qǐng)求成功

Toast.makeText(getApplicationContext(), "服務(wù)器忙 請(qǐng)稍后....", 1).show();

break;

default:

break;

}

};

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// [1]找到我們關(guān)心的控件

et_path = (EditText) findViewById(R.id.et_path);

tv_reuslt = (TextView) findViewById(R.id.tv_result);

//[1.1]打印當(dāng)前線(xiàn)程的名字 

System.out.println("當(dāng)前線(xiàn)程名字:"+Thread.currentThread().getName());

}

//[2]點(diǎn)擊按鈕進(jìn)行查看 指定路徑的源碼 

public void click(View v) {

//[2.0]創(chuàng)建一個(gè)子線(xiàn)程 

new Thread(){public void run() {

try {

//[2.1]獲取源碼路徑 

String path = et_path.getText().toString().trim();

//[2.2]創(chuàng)建URL 對(duì)象指定我們要訪(fǎng)問(wèn)的 網(wǎng)址(路徑)

URL url = new URL(path);

//[2.3]拿到httpurlconnection對(duì)象  用于發(fā)送或者接收數(shù)據(jù) 

HttpURLConnection  conn = (HttpURLConnection) url.openConnection();

//[2.4]設(shè)置發(fā)送get請(qǐng)求 

conn.setRequestMethod("GET");//get要求大寫(xiě)  默認(rèn)就是get請(qǐng)求

//[2.5]設(shè)置請(qǐng)求超時(shí)時(shí)間

conn.setConnectTimeout(5000);

//[2.6]獲取服務(wù)器返回的狀態(tài)碼 

int code = conn.getResponseCode();

//[2.7]如果code == 200 說(shuō)明請(qǐng)求成功

if (code == 200) {

//[2.8]獲取服務(wù)器返回的數(shù)據(jù)   是以流的形式返回的  由于把流轉(zhuǎn)換成字符串是一個(gè)非常常見(jiàn)的操作  所以我抽出一個(gè)工具類(lèi)(utils)

InputStream in = conn.getInputStream(); 

//[2.9]使用我們定義的工具類(lèi) 把in轉(zhuǎn)換成String

String content = StreamTools.readStream(in);

//2.9.0 創(chuàng)建message對(duì)象 

Message msg = new Message();

msg.what = REQUESTSUCESS;

msg.obj = content;

//2.9.1 拿著我們創(chuàng)建的handler(助手) 告訴系統(tǒng) 說(shuō)我要更新ui

handler.sendMessage(msg);  //發(fā)了一條消息  消息(msg)里把數(shù)據(jù)放到了msg里 handleMessage方法就會(huì)執(zhí)行

//[2.9.1]把流里面的數(shù)據(jù)展示到textview 上  這句話(huà)就屬于更新ui的邏輯

// tv_reuslt.setText(content);

}else{

//請(qǐng)求資源不存在  Toast是一個(gè)view 也不能在在線(xiàn)程更新ui

Message msg = new Message();

msg.what = REQUESTNOTFOUND;//代表哪條消息

handler.sendMessage(msg);

}

} catch (Exception e) {

e.printStackTrace();

Message msg = new Message();

msg.what = REQUESTEXCEPTION;//代表哪條消息

handler.sendMessage(msg);  //發(fā)送消息

}

};}.start();

}

}

//StreamTools與mainactivity放同一個(gè)包里

import java.io.ByteArrayOutputStream;

import java.io.InputStream;

public class StreamTools {

//把一個(gè)inputStream 轉(zhuǎn)換成一個(gè)String 

public static String readStream(InputStream in) throws Exception{

//定義一個(gè)內(nèi)存輸出流

ByteArrayOutputStream baos = new ByteArrayOutputStream();

int len = -1;

byte[] buffer = new byte[1024]; //1kb

while((len=in.read(buffer))!=-1){

baos.write(buffer, 0, len);

}

in.close();

String content = new String(baos.toByteArray());

return content;

}

}

activity_main篇:

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

    <EditText

        android:id="@+id/et_path"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:hint="請(qǐng)輸入查看網(wǎng)址" />

    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:onClick="click"

        android:text="查看" />

    <ScrollView

        android:layout_width="match_parent"

        android:layout_height="wrap_content" >

        <TextView

            android:id="@+id/tv_result"

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:text="hagha" />

    </ScrollView>

</LinearLayout>

最后最重要的是勿忘配置許可證

本文題目:android篇-如何做一個(gè)簡(jiǎn)單的安卓源碼查看器
當(dāng)前鏈接:http://jinyejixie.com/article6/ppeeig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)ChatGPT外貿(mào)建站、品牌網(wǎng)站設(shè)計(jì)、虛擬主機(jī)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
清涧县| 绥棱县| 昆山市| 白玉县| 巴彦县| 铜鼓县| 武夷山市| 丹阳市| 阜阳市| 乌兰浩特市| 宁明县| 武夷山市| 乌兰浩特市| 澄城县| 滕州市| 屏边| 微山县| 察隅县| 靖江市| 平阴县| 永登县| 图们市| 仲巴县| 德令哈市| 阿拉善左旗| 建始县| 滨州市| 桑植县| 镇康县| 锦屏县| 沅陵县| 丰县| 安国市| 六盘水市| 祁连县| 铜川市| 汶川县| 宜丰县| 日土县| 襄城县| 嘉峪关市|