package feng.f8_6.activity; |
002 | |
003 | import java.io.File; |
004 | import java.io.FileOutputStream; |
005 | import java.io.InputStream; |
006 | import java.net.HttpURLConnection; |
007 | import java.net.MalformedURLException; |
008 | import java.net.URL; |
009 | |
010 | import android.app.Activity; |
011 | import android.content.Intent; |
012 | import android.net.Uri; |
013 | import android.os.Bundle; |
014 | import android.os.Environment; |
015 | import android.os.Handler; |
016 | import android.os.Message; |
017 | import android.view.Menu; |
018 | import android.view.View; |
019 | import android.view.View.OnClickListener; |
020 | import android.widget.Button; |
021 | import android.widget.Toast; |
022 | |
023 | public class HttpActivity extends Activity { |
024 | |
025 | private Button btn; |
026 | |
027 | @Override |
028 | public void onCreate(Bundle savedInstanceState) { |
029 | super .onCreate(savedInstanceState); |
030 | setContentView(R.layout.main); |
031 | |
032 | btn = (Button) findViewById(R.id.button1); |
033 | btn.setOnClickListener( new OnClickListener() { |
034 | |
035 | @Override |
036 | public void onClick(View v) { |
037 | new Thread() { |
038 | public void run() { |
039 | // 地址网上可用哦 |
040 | String path = "http://res.neng.com/res/apk_sp/20120803/8124_com.mobi.filemanager.activity_163508.apk" ; |
041 | // String path = "http://192.168.1.62:8080/MyHttpTest.apk"; |
042 | try { |
043 | URL url = new URL(path); |
044 | HttpURLConnection conn = (HttpURLConnection) url |
045 | .openConnection(); |
046 | if (HttpURLConnection.HTTP_OK != conn |
047 | .getResponseCode()) { |
048 | Message message = Message.obtain(); |
049 | message.what = 1 ; |
050 | handler.sendMessage(message); |
051 | } else { |
052 | if (Environment.getExternalStorageState() |
053 | .equals(Environment.MEDIA_UNMOUNTED)) { |
054 | Message message=Message.obtain(); |
055 | message.what= 2 ; |
056 | handler.sendMessage(message); |
057 | } else { |
058 | // System.out.println("获取信息的长度:"+conn.getContentLength()); |
059 | File file = new File(Environment |
060 | .getExternalStorageDirectory() |
061 | + "/feng" ); |
062 | if (!file.exists()) { |
063 | file.mkdir(); |
064 | } |
065 | // System.out.println("file.getPath():" |
066 | // + file.getPath()); |
067 | // System.out.println("getContentLength:" |
068 | // + conn.getContentLength()); |
069 | File cfile = new File(file.getPath(), |
070 | "activity_163508.apk" ); |
071 | if (!cfile.exists()) { |
072 | cfile.createNewFile(); |
073 | } |
074 | InputStream is = conn.getInputStream(); |
075 | FileOutputStream os = new FileOutputStream( |
076 | cfile); |
077 | byte [] buffer = new byte [ 2048 ]; |
078 | int a= 0 ; |
079 | while ((a=is.read(buffer)) != - 1 ) { |
080 | os.write(buffer, 0 , a); |
081 | } |
082 | // System.out.println("cfile.getName()"+cfile.getName()); |
083 | is.close(); |
084 | os.flush(); |
085 | os.close(); |
086 | Bundle bundle= new Bundle(); |
087 | Message message=Message.obtain(); |
088 | message.what= 3 ; |
089 | bundle.putString( "msg" , cfile.getAbsolutePath()); |
090 | message.setData(bundle); |
091 | handler.sendMessage(message); |
092 | } |
093 | } |
094 | } catch (Exception e) { |
095 | // TODO Auto-generated catch block |
096 | e.printStackTrace(); |
097 | } |
098 | |
099 | }; |
100 | }.start(); |
101 | } |
102 | }); |
103 | } |
104 | |
105 | private void installAPK(String fileName){ |
106 | File file = new File(fileName); |
107 | if (!file.exists()){ |
108 | return ; |
109 | } |
110 | Intent intent= new Intent(); |
111 | intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
112 | intent.setAction(Intent.ACTION_VIEW); |
113 | intent.setDataAndType(Uri.parse( "file://" +file.toString()), "application/vnd.android.package-archive" ); |
114 | startActivity(intent); |
115 | } |
116 | Handler handler = new Handler() { |
117 | public void handleMessage(android.os.Message msg) { |
118 | switch (msg.what) { |
119 | case 1 : |
120 | Toast.makeText(getApplicationContext(), "网络不通" , |
121 | Toast.LENGTH_SHORT).show(); |
122 | break ; |
123 | case 2 : |
124 | Toast.makeText(getApplicationContext(), "没有SD卡" , |
125 | Toast.LENGTH_SHORT).show(); |
126 | |
127 | break ; |
128 | case 3 : |
129 | Bundle bundle = msg.getData(); |
130 | String fileName = bundle.getString( "msg" ); |
131 | installAPK(fileName); |
132 | |
133 | break ; |
134 | |
135 | default : |
136 | break ; |
137 | } |
138 | }; |
139 | }; |
140 | |
141 | @Override |
142 | public boolean onCreateOptionsMenu(Menu menu) { |
143 | getMenuInflater().inflate(R.menu.main, menu); |
144 | return true ; |
145 | } |
146 | } |
147 | |
148 | |
149 | |
150 | <RelativeLayout xmlns:android= "http://schemas.android.com/apk/res/android" |
151 | xmlns:tools= "http://schemas.android.com/tools" |
152 | android:layout_width= "match_parent" |
153 | android:layout_height= "match_parent" > |
154 | |
155 | <Button |
156 | android:id= "@+id/button1" |
157 | android:layout_width= "wrap_content" |
158 | android:layout_height= "wrap_content" |
159 | android:layout_alignParentLeft= "true" |
160 | android:layout_alignParentTop= "true" |
161 | android:layout_marginLeft= "43dp" |
162 | android:layout_marginTop= "19dp" |
163 | android:text= "Button" /> |
164 | |
165 | </RelativeLayout> |