Android下载网络文本

具体的界面如下图所示

从浏览器上下载文本文件到手机中,具体的步骤如下:

1、新建一个工程名为GetTxtData的项目;

2、修改res/layout/fragment_main.xml文件,具体代码如下:

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context="com.example.gettxtdata.MainActivity$PlaceholderFragment" >
10
11     <LinearLayout
12         android:layout_width="fill_parent"
13         android:layout_height="fill_parent"
14         android:orientation="vertical"
15         >
16         <EditText
17             android:id="@+id/inputText"
18             android:layout_width="fill_parent"
19             android:layout_height="wrap_content"
20             android:text="http://www.sohu.com"
21             />
22         <Button
23             android:layout_width="wrap_content"
24             android:layout_height="wrap_content"
25             android:id="@+id/getTxtBtn"
26             android:text="获取文本"
27             />
28         <ScrollView
29             android:layout_width="fill_parent"
30             android:layout_height="fill_parent"
31             >
32             <TextView android:layout_width="fill_parent"
33                       android:layout_height="wrap_content"
34                       android:id="@+id/sohu"
35                 />
36         </ScrollView>
37     </LinearLayout>
38
39
40 </RelativeLayout>

3、新建一个名为NetTool.java的类,该类主要是操作文本的,类中添加的方法如下所示:

 1 public static String getHtml(String path,String enconding)throws Exception{
 2         //建立url类对象,抛出异常
 3         URL url=new URL(path);
 4         //得到HttpURLConnection对象
 5         HttpURLConnection conn=(HttpURLConnection)url.openConnection();
 6         conn.setRequestMethod("GET");//声明请求方式
 7         conn.setConnectTimeout(6*1000);//设置链接超时
 8
 9         if(conn.getResponseCode()==200)
10         {
11             InputStream iStream=conn.getInputStream();//得到输入流
12             byte[] data=readInstream(iStream);//得到数据
13
14             //将字节转化为字符串
15             return new String(data,enconding);
16         }

4、修改MainActivity.java代码,代码如下:

 1 public class MainActivity extends ActionBarActivity {
 2
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_main);
 7
 8         if (savedInstanceState == null) {
 9             getSupportFragmentManager().beginTransaction()
10                     .add(R.id.container, new PlaceholderFragment()).commit();
11         }
12     }
13
14     @Override
15     public boolean onCreateOptionsMenu(Menu menu) {
16
17         // Inflate the menu; this adds items to the action bar if it is present.
18         getMenuInflater().inflate(R.menu.main, menu);
19         return true;
20     }
21
22     @Override
23     public boolean onOptionsItemSelected(MenuItem item) {
24         // Handle action bar item clicks here. The action bar will
25         // automatically handle clicks on the Home/Up button, so long
26         // as you specify a parent activity in AndroidManifest.xml.
27         int id = item.getItemId();
28         if (id == R.id.action_settings) {
29             return true;
30         }
31         return super.onOptionsItemSelected(item);
32     }
33
34     /**
35      * A placeholder fragment containing a simple view.
36      */
37     @TargetApi(Build.VERSION_CODES.GINGERBREAD)
38     public class PlaceholderFragment extends Fragment {
39
40         public PlaceholderFragment() {
41         }
42
43         @Override
44         public View onCreateView(LayoutInflater inflater, ViewGroup container,
45                 Bundle savedInstanceState) {
46             View rootView = inflater.inflate(R.layout.fragment_main, container,
47                     false);
48             StrictMode.setThreadPolicy(new
49                      StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
50                              StrictMode.setVmPolicy(
51                      new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
52
53
54             final EditText inputText=(EditText)rootView.findViewById(R.id.inputText);
55             final Button getBtn=(Button)rootView.findViewById(R.id.getTxtBtn);
56             final TextView txtView=(TextView)rootView.findViewById(R.id.sohu);
57
58             getBtn.setOnClickListener(new View.OnClickListener() {
59
60                 @Override
61                 public void onClick(View v) {
62                     // TODO Auto-generated method stub
63                     String path=inputText.getText().toString();
64                     try
65                     {
66                         String html=NetTool.getHtml(path, "GBK");
67                         txtView.setText(html);
68
69                         Toast.makeText(MainActivity.this,
70                                 "获取文本成功", Toast.LENGTH_LONG).show();
71                     }catch(Exception e)
72                     {
73                         Toast.makeText(MainActivity.this,
74                                 "获取文本失败", Toast.LENGTH_LONG).show();
75                         e.printStackTrace();
76                     }
77                 }
78             });
79             return rootView;
80         }
81     }
82
83 }

5、修改AndroidManifest.xml代码,在</application>标签后加上如下代码:
<uses-permission android:name="android.permission.INTERNET"/>

时间: 2024-11-03 22:38:58

Android下载网络文本的相关文章

Python下载网络文本数据到本地内存的四种实现方法示例

reference: https://blog.csdn.net/john_bian/article/details/71025372?utm_source=itdadao&utm_medium=referral import urllib.request import requests from io import StringIO import numpy as np import pandas as pd ''' 下载网络文件,并导入CSV文件作为numpy的矩阵 ''' # 网络数据文件

Android实现网络多线程断点续传下载(转)

本示例介绍在Android平台下通过HTTP协议实现断点续传下载. 我们编写的是Andorid的HTTP协议多线程断点下载应用程序.直接使用单线程下载HTTP文件对我们来说是一件非常简单的事.那么,多线程断点需要什么功能? 1.多线程下载, 2.支持断点. 使用多线程的好处:使用多线程下载会提升文件下载的速度.那么多线程下载文件的过程是:  (1)首先获得下载文件的长度,然后设置本地文件的长度. HttpURLConnection.getContentLength();//获取下载文件的长度 R

Android实现网络多线程断点续传下载

本示例介绍在Android平台下通过HTTP协议实现断点续传下载. 我们编写的是Andorid的HTTP协议多线程断点下载应用程序.直接使用单线程下载HTTP文件对我们来说是一件非常简单的事.那么,多线程断点需要什么功能? 1.多线程下载, 2.支持断点. 使用多线程的好处:使用多线程下载会提升文件下载的速度.那么多线程下载文件的过程是: (1)首先获得下载文件的长度,然后设置本地文件的长度. HttpURLConnection.getContentLength();//获取下载文件的长度 Ra

Android热门网络框架Volley详解

.Volley简介 volley的英文意思为‘群发’.‘迸发’.Volley是2013年谷歌官方发布的一款Android平台上的网络通信库.Volley非常适合一些数据量不大,但需要频繁通信的网络操作.使用Volley进行网络开发可以使我们的开发效率得到很大的提升,而且性能的稳定性也比较高.但是Volley不适用于文件的上传下载操作. Volley的特点: >1 使网络通信更快,更简单,更健壮: >2 Get/Post网络请求及网络图像的高效率异步请求: >3 可以对网络请求的优先级进行

Android 下载APK 安装APK 打开APK

今天有了一个这样的需求 :下载一个apk文件,然后当你下载完成后,按钮的文字发生改变,变成点击安装,然后安装完成之后,变成打开. 这是下载apk的方法: /** * 后台在下面一个Apk 下载完成后返回下载好的文件 * * @param httpUrl * @return */ private File downFile(final String httpUrl) { new Thread(new Runnable() { @Override public void run() { try {

基于Retrofit+RxJava的Android分层网络请求框架

目前已经有不少Android客户端在使用Retrofit+RxJava实现网络请求了,相比于xUtils,Volley等网络访问框架,其具有网络访问效率高(基于OkHttp).内存占用少.代码量小以及数据传输安全性高等特点. Retrofit源码更是经典的设计模式教程,笔者已在之前的文章中分享过自己的一些体会,有兴趣的话可点击以下链接了解:<Retrofit源码设计模式解析(上)>.<Retrofit源码设计模式解析(下)> 但在具体业务场景下,比如涉及到多种网络请求(GET/PU

Android 下载模块分析(DownloadManager和DownloadProvider)

Android下载模块主要有2个部分组成:DownloadManager和DownloadProvider:其中DownloadManager提供接口供调用,具体的实现是 DownloadProvider,包括相关数据信息的保存及文件下载. DownloadManager是系统开放给第三方应用使用的类,包含两个静态内部类DownloadManager.Query和DownloadManager.Request. DownloadManager.Request用来请求一个下载 DownloadMa

Android版网络办公系统应用客户端+服务端

该项目源码是Android版网络办公系统应用客户端+服务端,也是一个简单的网上办公系统的Android客户端,项目有服务端和客户端部分的源码的,客户端开发环境eclipse  AVD版本 4.0服务器 phpStudy 2013集成环境 Apache+php5.3+ISAPI模式 phpStudy 2013集成环境绿色版下载http://www.phpstudy.net/phpstudy/phpStudy2013d.zip官网   http://www.phpstudy.net/ android

Github 上Top1的Android 异步网络请求框架

今天给大家分享一个github上Top1的Android异步网络请求框架的使用方法,我给大家分享一个它的基本用法. 先来一个简单的get请求 AsyncHttpClient client = new AsyncHttpClient(); client.get("http://www.google.com", new AsyncHttpResponseHandler() { @Override public void onStart() { // called before reques