从指定网址下载文件 并读出其内容 && 从网上下载文件放在本地&&从网上获取图片设在imageView里
来源:互联网 发布:淘宝上的酷狗会员 编辑:程序博客网 时间:2024/05/17 21:47
第一部分 从指定网址下载文件 并读出其内容
==============================================================================
需要在AndroidManifest.xml里加入如下句
<uses-permission android:name="android.permission.INTERNET" />
/*检测是否需要网络升级*/ try{ CheckForSystemNetUpdate(); }catch(IOException e){ }
private void CheckForSystemNetUpdate() throws IOException {Log.d(TAG, "CheckForSystemNetUpdate...");if(isNetworkAvailable()){Log.d(TAG, "NetworkAvailable..."); URL url = null;try {url = new URL("http://update.egreatworld.com:8080/software/update/M6/update_signed.ini");} catch (MalformedURLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} InputStream inputStream = null; BufferedReader bufferedReader = null; StringBuffer buffer = new StringBuffer(); HttpURLConnection httpUrlConnection = (HttpURLConnection) url.openConnection(); try{ httpUrlConnection.connect(); } catch(IOException e){ Log.e(TAG, "httpUrlConnection connect error!!!!!"); e.printStackTrace(); } Log.d(TAG, "response code = " + httpUrlConnection.getResponseCode()); inputStream = httpUrlConnection.getInputStream(); bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "utf-8")); String line = ""; while ((line = bufferedReader.readLine()) != null) { buffer.append(line); buffer.append("\r\n"); } httpUrlConnection.disconnect(); Log.d(TAG, "---------ini = "+buffer); parseIni(buffer.toString());}}
/** * 解析ini文件里的字符串 * @param string 要解析的字符串 */private void parseIni(String str) { String parts[] = str.split("\r\n"); boolean isEnforcement = false; String version = ""; String updateinfo = ""; int i=0;for(;i<parts.length;i++){Log.d(TAG, "==============test = "+parts[i]);if("updatemode=0".equals(parts[i].trim())){isEnforcement = false;}else if("updatemode=1".equals(parts[i].trim())){isEnforcement = true;}else if("[version]".equals(parts[i].trim())){version = parts[i+1].trim();}else if("[updateinfo]".equals(parts[i].trim())){i++;break;}}String temp[] = version.split("=");version = temp[1].trim();/*读取当前版本号*/String tempString = (Build.VERSION.INCREMENTAL.substring(1)).trim();Log.d(TAG, "-------------system version="+tempString);if(tempString.equals(version)){}else{/*得到升级信息*/for(;i<parts.length;i++){updateinfo +=parts[i]+"\r\n";Log.d(TAG, "==============test = "+parts[i]);}showNetUpdateDialog(isEnforcement,version,updateinfo);}}
private void showNetUpdateDialog(boolean isEnforcement,String version,String updateinfo){Log.d(TAG, "isEnforcement="+isEnforcement+"\n"+"updateinfo="+updateinfo);/*添加蒙层*/ mHomeActivity.findViewById(R.id.gray_background).setVisibility(View.VISIBLE); final DialogNetUpdate mDialogNetUpdate= new DialogNetUpdate(mContext, isEnforcement, version, updateinfo);mDialogNetUpdate.setOnclickCancel().setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mDialogNetUpdate.dismiss();/*去除蒙层*/ mHomeActivity.findViewById(R.id.gray_background).setVisibility(View.GONE);}});mDialogNetUpdate.setOnclickConfirm().setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent();ComponentName name = null;name = new ComponentName("com.android.settings", "com.android.settings.update.SystemNetUpdateActivity");intent.setComponent(name);mContext.startActivity(intent);//加入转场动画((Activity) mContext).overridePendingTransition(R.anim.zoom_enter,R.anim.zoom_exit);}});mDialogNetUpdate.show();}
Dialog代码如下
package com.egreat.commonComponent;import android.app.Activity;import android.app.AlertDialog;import android.app.Dialog;import android.content.Context;import android.content.DialogInterface;import android.content.DialogInterface.OnKeyListener;import android.view.KeyEvent;import android.view.LayoutInflater;import android.view.View;import android.widget.Button;import android.widget.TextView;import com.egreat.elauncher.HomeActivity;import com.egreat.elauncher.R;import com.egreat.elauncher.R.id;import com.egreat.elauncher.R.layout;/** * @author peter.wen * */public class DialogNetUpdate {Dialog mDialog;TextView mTextViewLeftTitle,mTextViewRightTitle,mTextViewContent;Context mContext;//要现实的文字String mVersionString,mInfoString;//取消按钮Button mDialog_cancal,mDialog_confirm;LayoutInflater inflater;//自定义的dialog布局View linearlayout;public DialogNetUpdate(Context mContext,boolean isEnforcement,String version,String updateinfo) {// TODO Auto-generated constructor stubthis.mContext = mContext;inflater = LayoutInflater.from(mContext);linearlayout = inflater.inflate(R.layout.dialog_net_update, null);//取消按钮mDialog_cancal = (Button) linearlayout.findViewById(R.id.dl_cancal);//确认按钮mDialog_confirm = (Button) linearlayout.findViewById(R.id.dl_confirm);mTextViewLeftTitle = (TextView) linearlayout.findViewById(R.id.dl_text_left_title);mTextViewRightTitle = (TextView) linearlayout.findViewById(R.id.dl_text_right_title);mTextViewContent = (TextView) linearlayout.findViewById(R.id.dl_text_content);if(isEnforcement){mDialog_cancal.setVisibility(View.GONE);}mTextViewRightTitle.setText(version);mTextViewContent.setText(updateinfo);//用Dialog 用R.style.dialog 可以去除白边 不能用 new AlertDialog.Builder(mContext).setView(linearlayout).show();去做mDialog = new Dialog(mContext,R.style.dialog);mDialog.setContentView(linearlayout);mDialog.setCanceledOnTouchOutside(false);// 设置点击屏幕Dialog不消失 /*屏蔽按键*/mDialog.setOnKeyListener(new OnKeyListener() {@Overridepublic boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {switch (keyCode) {case KeyEvent.KEYCODE_DPAD_CENTER:case KeyEvent.KEYCODE_DPAD_UP:case KeyEvent.KEYCODE_DPAD_DOWN:case KeyEvent.KEYCODE_DPAD_LEFT:case KeyEvent.KEYCODE_DPAD_RIGHT:case KeyEvent.KEYCODE_ENTER:return false;default:break;}return true;}});mDialog_confirm.requestFocus();}public void show(){mDialog.show();}//关闭对话框public void dismiss(){mDialog.dismiss();}public Button setOnclickCancel(){return mDialog_cancal;}public Button setOnclickConfirm(){return mDialog_confirm;}public void setCancelName(String cancel) {mDialog_cancal.setText(cancel);}public void setConfirmName(String confirm) {mDialog_confirm.setText(confirm);}}
dialog对应的xml文件如下
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" ><FrameLayout android:id="@+id/dialog" android:layout_width="454dp" android:layout_height="500dp" android:background="@drawable/common_dialog_net_update" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal" android:layout_marginTop="10dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_gravity="top"> <TextView android:id="@+id/dl_text_left_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left" android:text="@string/new_software" android:textSize="25sp" /> <TextView android:id="@+id/dl_text_right_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right" android:text="@string/software_version" android:textSize="25sp" /> </LinearLayout> <ScrollView android:id="@+id/ScrollView" android:layout_width="match_parent" android:layout_height="wrap_content"android:layout_marginTop="55dp" android:layout_gravity="center_horizontal" android:scrollbarThumbVertical="@drawable/indicate" android:scrollbarTrackVertical="@drawable/indicatebg" android:nextFocusDown="@+id/dl_confirm" > <TextView android:id="@+id/dl_text_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:lineSpacingExtra="8dp" android:text="@string/test" android:textSize="25sp" /> </ScrollView> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_marginBottom="0dp" android:orientation="horizontal" > <Button android:id="@+id/dl_cancal" android:layout_width="wrap_content" android:layout_height="50dp" android:textColor="#FFFFFFFF" android:background="@drawable/dialog_button_selector" android:textSize="25dp" android:layout_gravity="bottom" android:layout_marginBottom="0dp" android:nextFocusUp="@+id/ScrollView" android:text="@string/cancal" /> <Button android:id="@+id/dl_confirm" android:layout_width="match_parent" android:layout_height="50dp" android:textColor="#FFFFFFFF" android:background="@drawable/dialog_button_selector" android:textSize="25dp" android:layout_gravity="bottom" android:layout_marginBottom="0dp" android:nextFocusUp="@+id/ScrollView" android:text="@string/update_now" /> </LinearLayout></FrameLayout></LinearLayout>
第二部分 从网上下载文件放在本地
==============================================================================
package com.example.hello;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import android.app.Activity;import android.os.Bundle;import android.util.Log;public class MainActivity extends Activity {String TAG = "MainActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);new Thread(new Runnable() {@Overridepublic void run() {downloadXml();}}).start();}protected boolean downloadXml() {Log.d(TAG, "---------downloadXml");HttpURLConnection httpConnection = null;InputStream is = null;FileOutputStream fos = null;URL url = null;String localPath = getCacheDir() + "/wen.txt";try {url = new URL("http://192.168.4.4/111111.txt");httpConnection = (HttpURLConnection) url.openConnection();httpConnection.connect();is = httpConnection.getInputStream();fos = new FileOutputStream(new File(localPath));byte[] buffer = new byte[1024];int len = 0;while ((len = is.read(buffer)) > -1) {fos.write(buffer, 0, len);fos.flush();}return true;} catch (Exception e) {e.printStackTrace();return false;} finally {try {if (httpConnection != null) {httpConnection.disconnect();}if (is != null) {is.close();}if (fos != null) {fos.close();}} catch (Exception e) {e.printStackTrace();}Log.d(TAG, "---------downloadXml finally");}}}
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.hello" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.hello.MainActivity" 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></manifest>
第三部分 从网上获取图片设在imageView里
==============================================================================
对第二部分代码稍加改造即可protected Bitmap downloadXml() {Log.d(TAG, "---------downloadXml");Bitmap mBitmap;HttpURLConnection httpConnection = null;InputStream is = null;FileOutputStream fos = null;URL url = null;String localPath = getCacheDir() + "/22.jpg";try {url = new URL("http://192.168.4.4/11.jpg");httpConnection = (HttpURLConnection) url.openConnection();httpConnection.connect();is = httpConnection.getInputStream();fos = new FileOutputStream(new File(localPath));byte[] buffer = new byte[1024];int len = 0;while ((len = is.read(buffer)) > -1) {fos.write(buffer, 0, len);fos.flush();}return BitmapFactory.decodeFile(localPath);} catch (Exception e) {e.printStackTrace();return null;} finally {try {if (httpConnection != null) {httpConnection.disconnect();}if (is != null) {is.close();}if (fos != null) {fos.close();}} catch (Exception e) {e.printStackTrace();}Log.d(TAG, "---------downloadXml finally");}}
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ImageView iamge;iamge = (ImageView) findViewById(R.id.iamge);new Thread(new Runnable() {@Overridepublic void run() {b = downloadXml();}}).start();try {Thread.sleep(1000);} catch (Exception e) {// TODO: handle exception}iamge.setImageBitmap(b);}
- 从指定网址下载文件 并读出其内容 && 从网上下载文件放在本地&&从网上获取图片设在imageView里
- Delphi 从网上下载HTML、图片文件
- 从网上下载图片
- C#下载文件函数(从网上下载到本地)
- 从网上下载图片到本地
- java实现从网上下载文件到本地
- WebClient 从网上下载图片
- android从网上下载图片
- Android从网上下载图片
- HttpURLConnection从网上下载图片
- 使用windows api 从网上下载文件
- Android从网上下载文件注意
- 用GCD从网上下载大量文件
- 从网上下载文件(源码)
- 如何绕过wubi从网上下载镜像。(使用本地已存镜像文件而非再从网上下载)
- socket 从网上下载到本地
- Android 从网上下载图片并显示到ListView上
- 从一个网址下载文件并运行
- Web开发中常见的java.lang.IllegalStateException错误
- 第二章第五题
- Android进阶2之Http连接GET/POST请求
- C# 解析带前缀的Xml节点内容
- C++中的set
- 从指定网址下载文件 并读出其内容 && 从网上下载文件放在本地&&从网上获取图片设在imageView里
- 沈向洋谈做研究的那些事儿
- std::string的Copy-on-Write:不如想象中美好
- NGUI动态字体教程
- Oracle PLsql的符号解释大全
- C++中的const关键字应用
- hibernate多表查询结果集的取值
- textview删除线问题
- libtool : X--tag=CC: command not found 编译报错