深圳市绿色建筑信息平台,seo是啥职位,网站建设预览,常德做网站专业公司HttpURLConnection使用GET下载zip文件 http get下载zip文件MainActivity.javaAndroidMainfest.xmlactivity_main.xmllog http get下载zip文件
MainActivity.java
用HttpURLConnection GET方法进行需注意#xff1a; 1、Android 9及以上版本需要设置这个#xff0c;否则会有… HttpURLConnection使用GET下载zip文件 http get下载zip文件MainActivity.javaAndroidMainfest.xmlactivity_main.xmllog http get下载zip文件
MainActivity.java
用HttpURLConnection GET方法进行需注意 1、Android 9及以上版本需要设置这个否则会有警告 if (Build.VERSION.SDK_INT Build.VERSION_CODES.P) { StrictMode.ThreadPolicy policy new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } 2、清单中要申请网络权限写入权限 uses-permission android:name“android.permission.INTERNET” / uses-permission android:name“android.permission.WRITE_EXTERNAL_STORAGE” / 3、要在application中添加android:usesCleartextTraffic“true”。否则会有警告好像加这个有风险没有细研究 4、关于下载的位置Environment.getExternalStorageDirectory()的路径在/storage/emulated/0 5、关于下载的测试地址http://nginx.org/download/nginx-1.23.4.zip 6、关于下载的两种方式
package com.lxh.romupgrade;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.StrictMode;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity extends AppCompatActivity {Button bt_post;Button bt_post2;Context mcontext;private static final String TAG MainActivity3 lxh;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);bt_post findViewById(R.id.bt_post);bt_post2 findViewById(R.id.bt_post2);mcontext MainActivity.this;bt_post.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {Log.i(TAG, onClick);download_2();}});bt_post2.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {Log.i(TAG, onClick);// Android 9及以上版本需要设置这个否则会有警告if (Build.VERSION.SDK_INT Build.VERSION_CODES.P) {StrictMode.ThreadPolicy policy new StrictMode.ThreadPolicy.Builder().permitAll().build();StrictMode.setThreadPolicy(policy);}download_3();}});}private void download_2() {new DownloadZipFileTask().execute();}public static void download_3() {Log.i(TAG, download_3);String url http://nginx.org/download/nginx-1.23.4.zip;FileOutputStream fos null;InputStream in null;try {URL u new URL(url);HttpURLConnection conn (HttpURLConnection) u.openConnection();conn.setRequestMethod(GET);int responseCode conn.getResponseCode();Log.i(TAG, responseCode responseCode);if (responseCode HttpURLConnection.HTTP_OK) {fos new FileOutputStream(Environment.getExternalStorageDirectory() /file3.zip);byte[] buffer new byte[1024];int len;while ((len conn.getInputStream().read(buffer)) ! -1) {fos.write(buffer, 0, len);}fos.close();conn.getInputStream().close();Log.i(TAG, download ok);} else {Log.i(TAG, Handle error case here);}} catch (Exception e) {e.printStackTrace();} finally {if (fos ! null) {try {fos.close();} catch (Exception e) {e.printStackTrace();}}if (in ! null) {try {in.close();} catch (Exception e) {e.printStackTrace();}}}}
}package com.lxh.romupgrade;
import android.os.AsyncTask;
import android.os.Environment;
import android.util.Log;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;/*** create by lxh on 2023/10/10 Time20:21* tip:HTTP 下载*/
public class DownloadZipFileTask extends AsyncTaskVoid, Integer, Void {Overrideprotected Void doInBackground(Void... params) {Log.i(lxh, doInBackground);try {URL url new URL(http://nginx.org/download/nginx-1.23.4.zip);HttpURLConnection connection (HttpURLConnection) url.openConnection();connection.setRequestMethod(GET);connection.connect();int fileSize connection.getContentLength();InputStream inputStream connection.getInputStream();FileOutputStream outputStream new FileOutputStream(Environment.getExternalStorageDirectory() /file2.zip);byte[] buffer new byte[4096];int bytesRead;int totalBytesRead 0;while ((bytesRead inputStream.read(buffer)) ! -1) {outputStream.write(buffer, 0, bytesRead);totalBytesRead bytesRead;int progress (int) (totalBytesRead * 100 / fileSize);publishProgress(progress);}Log.i(lxh, download ok);outputStream.close();inputStream.close();connection.disconnect();} catch (IOException e) {e.printStackTrace();}return null;}
}AndroidMainfest.xml
需要在清单添加
?xml version1.0 encodingutf-8?
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.lxh.romupgradeuses-permission android:nameandroid.permission.INTERNET /uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE /applicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:roundIconmipmap/ic_launcher_roundandroid:supportsRtltrueandroid:usesCleartextTraffictrueandroid:themestyle/Theme.Romupgradeactivity android:name.MainActivityintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activity/application
/manifestactivity_main.xml
布局如下
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentButtonandroid:idid/bt_postandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_weight1android:textPOST /Buttonandroid:idid/bt_post2android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_weight1android:textPOST2 /
/LinearLayoutlog
点击按钮回显如下
I/MainActivity3 lxh: onClick
I/lxh: doInBackground
D/NetworkSecurityConfig: No Network Security Config specified, using platform default
I/lxh: download okI/MainActivity3 lxh: onClick
I/MainActivity3 lxh: download_3
I/MainActivity3 lxh: responseCode200
I/MainActivity3 lxh: download ok
待补充 欢迎指错一起学习