Android-通过URL获取网络资源

1、先在AndroidManifest.xml中注册加入访问因特网服务的权限:
<uses-permission android:name="android.permission.INTERNET" />
(若不加入,则会出现permission denied异常)

2、代码如下:
Java代码   
 
 
package vip.test.HttpGet;
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import org.apache.http.util.ByteArrayBuffer;
import org.apache.http.util.EncodingUtils;
import vip.test.HttpGet.R;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HttpGet extends Activity {
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  TextView tv = new TextView(this);
  String myString = null;
  try {
   // 定义获取文件内容的URL
   URL myURL = new URL(
     "
HTTP://www.baidu.com/hello.txt&quot ");
   // 打开URL链接
   URLConnection ucon = myURL.openConnection();
   // 使用InputStream,从URLConnection读取数据
   InputStream is = ucon.getInputStream();
   BufferedInputStream bis = new BufferedInputStream(is);
   // 用ByteArrayBuffer缓存
   ByteArrayBuffer baf = new ByteArrayBuffer(50);
   int current = 0;
   while ((current = bis.read()) != -1) {
    baf.append((byte) current);
   }
   // 将缓存的内容转化为String,用UTF-8编码
   myString = EncodingUtils.getString(baf.toByteArray(), "UTF-8");
  } catch (Exception e) {
   myString = e.getMessage();
  }
  // 设置屏幕显示
  tv.setText(myString);
  this.setContentView(tv);
 }
}
 
3、代码解释:

1)实例URL类:myURL,表示要获取内容的网址:
URL myURL=new URL(HTTP://www.baidu.com/hello.txt);

2)实例URLConnection类,表示一个打开的网络连接ucon:
URLConnection ucon=myURL.openConnection();

3)用字节流的形式表示从网络上读到的数据:
InputStream is=ucon.getInputStream();
   为避免频繁读取字节流,提高读取效率,用BufferedInputStream缓存读到的字节流
InputStream is=ucon.getInputStream();
BufferedInputStream bis=new BufferedInputStream(is);

4)用read方法读入网络数据:
ByteArrayBuffer baf=new ByteArrayBuffer(50);
int current=0;
while((current=bis.read())!=-1)
{
baf.append((byte)current);
}

5)由于读到的数据只是字节流,无法直接显示到屏幕上,所以得在显示之前将字节流转换为可读取的字符串:
myString=EncodingUtils.getString(baf.toByteArray(),&quot;UTF-8&quot;);
(如果读取的是.txt等文件是UTF-8格式的,就需要对数据进行专门的转换)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中,我们可以使用 Bitmap 类来读写位图。具体的操作步骤如下: 1. 从资源中读取位图 我们可以通过以下代码从资源中读取位图: ```java Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image); ``` 2. 从文件中读取位图 我们可以通过以下代码从文件中读取位图: ```java Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/my_image.jpg"); ``` 3. 从网络中读取位图 我们可以使用 Android 提供的网络请求库(如 Volley、OkHttp 等)从网络中读取位图: ```java ImageRequest imageRequest = new ImageRequest(url, new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap response) { // 处理位图 } }, 0, 0, null, null); ``` 4. 将位图保存到文件 我们可以使用以下代码将位图保存到文件: ```java File file = new File("/sdcard/my_image.jpg"); OutputStream os = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, os); os.flush(); os.close(); ``` 5. 从矢量绘图获取位图 我们可以使用以下代码从矢量绘图获取位图: ```java VectorDrawable vectorDrawable = (VectorDrawable) getResources().getDrawable(R.drawable.my_vector); Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(), vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); vectorDrawable.draw(canvas); ``` 以上就是关于 Android 中读写位图的操作方法,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值