如果网络权限有了的话
应该是SDK版本的原因,4.0的话不允许在UI线程中访问网络,需新开线程访问网络,以防止主线程阻塞
解决方法:
一是在onCreate方法中加入两段代码,表示为调试模式, 此方法见(http://www.apkbus.com/android-74247-1-1.html)
二是在AndroidMainFest.xml中将 <user-sdk>删掉
三是新开线程,处理网络连接;Handler+Message方法
MainActivity.java
package com.ht.netimage;
import com.ht.imageService.ImageService;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText path;
private ImageView view;
private final int CHNNG_UI = 1;
private static final int ERROR = 0;
// 主线程创建消息处理器
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case CHNNG_UI:
// 更新image
Bitmap bitmap = (Bitmap) msg.obj;
view.setImageBitmap(bitmap);
break;
case ERROR:
Toast.makeText(MainActivity.this, R.string.fail,
Toast.LENGTH_SHORT).show();
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
path = (EditText) findViewById(R.id.path);
view = (ImageView) findViewById(R.id.imageView);
Button button = (Button) this.findViewById(R.id.button);
button.setOnClickListener(new buttonClickLister());
}
private final class buttonClickLister implements View.OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 开启子线程来操作耗时操作(IO,网络等)
new changImage().start();
}
}
/**
* 这里处理网络
* @author
*
*/
private final class changImage extends Thread{
@Override
public void run() {
String p = path.getText().toString();
Message msg = new Message();
try {
// 定义一个ImageService业务类,以字节数组的形式得到图片数据
byte[] data = ImageService.getImage(p);
// 使用数组数据生成位图的对象
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,
data.length);
// 将位图放入图片控件
// 更新UI要在主线程中
msg.what = CHNNG_UI;
msg.obj = bitmap;
handler.sendMessage(msg);
// view.setImageBitmap(bitmap);//显示图片
} catch (Exception e) {
msg.what = ERROR;
handler.sendMessage(msg);
}
}
}
}