Android访问网络操作。
首先在AndroidManifest.xml文件中添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
业务类ImageServer.java:
根据指定的网络图片地址获取二进制数据
package com.yaku.service;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class ImageServer {
public static byte[] getImage(String path) throws Exception {
//URL url = new URL("http://www.baidu.com/img/baidu_sylogo1.gif");
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5 * 1000);
InputStream inStream = conn.getInputStream();//通过输入流获取图片数据
//获取网页上的数据,如HTML代码
//byte[] data = readInputStream(inStream);//得到html的二进制数据
//String html = new String(data, "gb2312");
return readInputStream(inStream);//得到图片的二进制数据
}
/**
* 从输入流中获取数据
* @param inStream 输入流
* @throws Exception
*/
public static byte[] readInputStream(InputStream inStream) throws Exception{
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while( (len=inStream.read(buffer)) != -1 ){
outStream.write(buffer, 0, len);
}
inStream.close();
return outStream.toByteArray();
}
}
将图片显示在手机屏幕上HttpImageActivity.java:
package com.yaku.http;
import com.yaku.service.ImageServer;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
public class HttpImageActivity extends Activity {
private EditText path;
private ImageView image;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
path = (EditText) this.findViewById(R.id.url);
image = (ImageView) this.findViewById(R.id.image);
Button button = (Button)this.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String urlPath = path.getText().toString();
try {
byte[] data = ImageServer.getImage(urlPath);
//生成位图
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
image.setImageBitmap(bitmap);//显示图片
} catch (Exception e) {
Toast.makeText(HttpImageActivity.this, R.string.error, 1).show();
}
}
});
}
}
分享到:
相关推荐
本文将深入探讨“Android网络操作”的核心概念、常用方法以及如何利用封装好的框架进行高效开发。 一、Android网络访问基础 在Android中,网络操作主要依赖于java.net和HttpURLConnection类库,但出于性能和易用性...
一、Android网络操作基础 在Android中,网络操作主要涉及两种方式:HttpURLConnection和OkHttp。HttpURLConnection是Java标准库的一部分,而OkHttp是一个高效的网络库,广泛用于Android应用中。两者都可以用来发送...
在Android开发中,掌握文件操作、网络通信、数据库管理和用户界面(UI)设计是至关重要的。以下是对这些关键知识点的详细说明: 1. **文件操作**: - Android中的文件操作主要包括读取和写入。`File`类是进行文件...
- 阶段二:Android网络操作与流行框架,总共有24课时,涵盖网络操作与通信、高级控件、数据存储、流行框架的使用等内容。 - 阶段三:Android高级应用与Kotlin综合实战,总共有30课时,深入讲解Android高级应用、动画...
此外,Android有严格的网络访问策略,比如在主线程中直接进行网络操作会导致ANR(Application Not Responding)错误,因此网络操作通常应在工作线程或者IntentService中执行。为了提高用户体验,还可以使用AsyncTask...
在Android开发中,网络操作是不可或缺的一部分,尤其是在构建与服务器交互的应用时。本Demo——"Android 网络类型及操作相关demo"专注于检测和管理设备的网络状态,特别是WiFi和移动数据。以下是对该Demo中涉及的...
在Android开发中,登录注册功能是每个应用的基本组成部分,而JSON作为轻量级的数据交换格式,经常被用于...通过分析和理解这个示例,开发者可以深化对Android网络操作和JSON处理的理解,为今后的项目开发打下坚实基础。
"精通Android网络开发"意味着你需要深入理解网络通信的基本原理,并能熟练运用各种技术来实现Android应用与服务器之间的数据交换。以下是一些关于Android网络开发的重要知识点: 1. **HTTP/HTTPS协议**:Android...
Android操作系统是Google公司开发的一款基于Linux内核的开源移动操作系统,自2007年发布以来,已经成为全球最受欢迎的智能手机和平板电脑操作系统之一。Android以其开放源代码特性,吸引了众多开发者和制造商,形成...
本节将深入探讨Android网络编程的基础知识,主要围绕Java网络编程这一核心概念展开。 首先,理解Android网络编程的基础概念至关重要。在Android中,网络操作通常在后台线程中执行,以避免阻塞主线程导致应用无响应...
一、Android网络访问基础 在Android中,网络访问主要依赖于java.net和android.net两大类库。java.net库提供了Socket和HttpURLConnection等基础网络通信接口,而android.net则包含了更多的Android特有网络功能,如Wi-...
2. 运行应用:启动待调试的应用,执行网络操作。 3. 监控调试:在调试助手中查看捕获的网络请求,分析问题。 4. 修改与重发:若需要,可修改请求参数并重新发送,观察不同参数下的服务器响应。 5. 结束调试:完成...
7. **多线程处理**:为了保证用户界面的流畅性,网络测速通常在后台线程中进行,防止因长时间网络操作导致UI阻塞。Android提供了AsyncTask、Handler或Thread/Runnable等机制来实现后台任务。 8. **数据可视化**:...
Android的异步处理和后台任务对于网络操作尤为重要,以避免UI线程阻塞。因此,书中会详细讨论AsyncTask、IntentService、Handler和Looper机制,以及现代的RxJava和Retrofit等库的使用,帮助开发者实现高效、流畅的...
总的来说,"ftp jar Android"涉及的关键知识点包括:Android应用开发,FTP协议,Apache Commons Net库,FTPClient类,Android网络操作,文件I/O,以及异步任务处理。在实际开发中,需要考虑网络连接的稳定性、安全性...
Android系统对网络操作有限制,例如只能在主线程之外进行网络请求,否则会触发“NetworkOnMainThreadException”。因此,开发者需要在子线程或者使用异步任务来处理网络请求,以避免阻塞UI。 `高效`意味着我们需要...
没有这个权限,应用无法进行HTTP或HTTPS请求,包括但不限于API调用、网页加载等网络操作。 2. `ACCESS_NETWORK_STATE`权限: 此权限允许应用获取当前的网络状态,如是否连接到WiFi或移动数据。这对于判断网络是否...
传统的Android网络操作通常需要处理各种状态,比如HTTP连接的打开和关闭、网络状态的监听、数据的解析等,这些工作很容易分散开发者的注意力,造成代码冗长且容易出错。Volley通过提供简洁的API,使开发者能够更专注...
"android网络加载显示进度条"这一主题主要涉及两个关键概念:ProgressDialog和多线程(Thread)。下面将详细介绍这两个知识点。 首先,ProgressDialog是Android系统提供的一个对话框组件,它允许开发者创建一个带有...