Android学习笔记(十一)-从Internet获取数据
来源:互联网 发布:液晶电视清晰知乎 编辑:程序博客网 时间:2024/05/07 12:14
URL(Uniform Resource Locator)对象代表统一资源定位器,它是指向互联网“资源”的指针。URL可以由协议名、主机、端口和资源组成。通过url.openConnection()可以获取一个HttpURLConnection对象,通过这个对象的getInputStream()方法就可以获取网络上的数据了,如图片、网页内容等,这跟在J2SE中是一样的。
Android应用要想访问网络上的数据,还需要在AndroidManifest.xml文件中添加访问权限:
<!-- 访问internet权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
下面介绍一个通过URL访问图片和Html的实例:
布局文件layout/main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/urlpath"
- />
- <EditText
- android:id="@+id/urlpath"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="http://www.baidu.com/img/baidu_sylogo1.gif"
- />
- <Button
- android:id="@+id/imagebutton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/imagebutton"
- />
- <Button
- android:id="@+id/htmlbutton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/htmlbutton"
- />
- <ImageView
- android:id="@+id/showimage"
- android:layout_width="fill_parent"
- android:layout_height="300dip"
- android:scaleType="fitCenter"
- />
- <ScrollView
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <EditText
- android:id="@+id/showhtml"
- android:minLines="5"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- </ScrollView>
- </LinearLayout>
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="hello">Hello World, URLActivity!</string>
- <string name="app_name">URL测试</string>
- <string name="urlpath">请输入图片网络地址</string>
- <string name="imagebutton">显示图片</string>
- <string name="htmlbutton">显示文本</string>
- <string name="error">获取图片失败</string>
- </resources>
Activity,URLActivity.java
- package com.geniusxiaoyu.url;
- import android.app.Activity;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ImageView;
- import android.widget.Toast;
- import com.geniusxiaoyu.service.URLService;
- public class URLActivity extends Activity {
- private static final String TAG = "URLActivity";
- private EditText pathText;
- private EditText htmlText;
- private ImageView imageView;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- pathText = (EditText)findViewById(R.id.urlpath);
- htmlText = (EditText)findViewById(R.id.showhtml);
- imageView = (ImageView)findViewById(R.id.showimage);
- Button imagebutton = (Button)findViewById(R.id.imagebutton);
- //添加点击事件
- imagebutton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String path = pathText.getText().toString();
- //显示与隐藏组件
- htmlText.setVisibility(View.GONE);
- imageView.setVisibility(View.VISIBLE);
- try {
- byte[] data = URLService.getBitData(path);
- Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);//生成位图
- imageView.setImageBitmap(bitmap);//显示图片
- } catch (Exception e) {
- Toast.makeText(URLActivity.this, R.string.error, 1).show();
- Log.e(TAG, e.toString());
- }
- }
- });
- Button htmlbutton = (Button)findViewById(R.id.htmlbutton);
- //添加点击事件
- htmlbutton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String path = pathText.getText().toString();
- //显示与隐藏组件
- imageView.setVisibility(View.GONE);
- htmlText.setVisibility(View.VISIBLE);
- try {
- byte[] data = URLService.getBitData(path);
- String html = new String(data);
- //显示文本
- htmlText.setText(html);
- } catch (Exception e) {
- Toast.makeText(URLActivity.this, R.string.error, 1).show();
- Log.e(TAG, e.toString());
- }
- }
- });
- }
- }
URLService.java
- package com.geniusxiaoyu.service;
- import java.io.InputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import com.geniusxiaoyu.utils.StreamTool;
- public class URLService {
- /**
- * 获取图片数据
- * @param path
- * @return
- * @throws Exception
- */
- public static byte[] getBitData(String path) throws Exception{
- URL url = new URL(path);
- HttpURLConnection conn = (HttpURLConnection)url.openConnection();
- conn.setConnectTimeout(1000 * 5);
- conn.setRequestMethod("GET");
- InputStream is = conn.getInputStream();
- return StreamTool.readInputStream(is);
- }
- }
StreamTool.java
- package com.geniusxiaoyu.utils;
- import java.io.ByteArrayOutputStream;
- import java.io.InputStream;
- public class StreamTool {
- /**
- * 从输入流中获取数据
- * @param is
- * @return
- */
- public static byte[] readInputStream(InputStream is) throws Exception{
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- byte[] buf = new byte[1024];
- int len = 0;
- while((len = is.read(buf)) != -1){
- baos.write(buf, 0, len);
- }
- baos.close();
- return baos.toByteArray();
- }
- }
AndroidManifest.xml
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.geniusxiaoyu.url"
- android:versionCode="1"
- android:versionName="1.0">
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:name=".URLActivity"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- <uses-sdk android:minSdkVersion="8" />
- <!-- 访问internet权限 -->
- <uses-permission android:name="android.permission.INTERNET"/>
- </manifest>
0 0
- Android学习笔记(十一)-从Internet获取数据
- Android学习笔记(十一)-从Internet获取数据
- android从Internet获取数据
- 6.1、Android中从Internet获取数据
- Android入门学习笔记(二) SQLite数据库|ContentProvider|从Internet读取数据
- 从Internet获取数据
- 从Internet获取数据
- 从Internet获取数据
- 从Internet获取数据
- 从Internet获取数据
- (转)从Internet获取网页数据
- (转)从Internet获取文件数据
- Android 从Internet获取数据 实现获取一张图片
- android从internet获取图片
- Android学习笔记(十一)
- android 从internet获取html,图片
- Android学习笔记(十一)——从意图返回结果
- android学习笔记之十一数据存储(Shared Preferences、SQLite)
- 关于struts2的校验
- iOS有关图片处理的总结 (三)------图片的滤镜
- Web应用共享数据区ServletContext接口
- 第九周项目4-乘法口诀表
- SQL 游标的使用(更新数据)
- Android学习笔记(十一)-从Internet获取数据
- 输出星号图a
- 第9周项目5项目填充题(1)
- VS2012下如何打包Winform程序
- awesome icons
- 我与ARM的那些事儿2JINLK烧录nor flash
- sysproccesses 的应用
- Button只弹出一个PopUp窗体
- Unity使用C#高级特性扩展方法