當前位置:首頁 » 安卓系統 » android版本更新代碼

android版本更新代碼

發布時間: 2022-07-18 23:46:10

⑴ 如何更新手機android版本

目前安卓手機主要採用以下幾種方式升級:

1、使用手機自帶的系統更新功能

在安卓手機的設置--關於手機中,可以看到當前安卓手機的系統版本,另外這里也有自動檢測更新系統功能。

這里就是安卓手機自帶的系統更新功能,其更新主要由手機廠商提供,像小米手機就可以很好的通過該功能升級手機系統版本。不過使用該功能升級系統,需要下載不少升級文件,因此建議大家在Wifi環境下進行。

Ps:使用手機自帶的系統更新功能僅對部分品牌手機比較實用,通常很多品牌手機的自帶的升級功能,可升級的非常慢,並且無法更新到最新的安卓系統版本,因此一般也不建議採用該方式升級。

2、下載手機系統升級包

一般手機廠商官網都會更新一些系統文件包供用戶下載升級,我們可以可以進入自己手機品牌官網下載中心,然後根據自己手機品牌型號,下載最新的系統更新升級包,下載存放在手機SD卡當中。

然後我們再進入手機設置,然後選擇「關於手機」最後找到「系統更新」選項,之後我們在選擇「存儲卡升級」,如下圖所示:


通過刷機升級安卓系統

通過刷機升級安卓手機系統,是目前大家最常見的升級方法,相比前面2種方法都是靠廠商的升級文件,其實並不靠譜,很多廠商一般除了系統有嚴重Bug外,一般都很少發布升級文件。

通過刷機升級安卓系統很簡單,大家可以根據自己手機的品牌型號,找到適合自己手機的ROM系統,之後下載去刷機升級即可。另外目前也有很多一鍵刷機工具,如刷機精靈、刷機大師等等都可以一鍵檢測安卓手機品牌型號,然胡找到匹配的安卓系統,我們可以實現一鍵刷機。

⑵ 如何簡單實現安卓app自動更新功能

app自動更新程序可以參考如下代碼:
第一步 伺服器端:
服務端提供一個借口,或者網址,我這里就用的伺服器是tomcat,這里提供一個網址如下:
//也就是一個json數據介面
public static final String UPDATE_URL = "http://192.168.1.103:8080/update.json";
我們來看下json數據參數:
{
//app名字
appname: "愛新聞1.1",
//伺服器版本號
serverVersion: "2",
//伺服器標志
serverFlag: "1",
//是否強制更新
lastForce: "1",
//apk下載地址,這里我已經下載了官方的apk,放到了伺服器裡面
updateurl: "http://192.168.1.103:8080/36Kr.apk",
//版本的更新的描述
upgradeinfo: "V1.1版本更新,你想不想要試一下哈!!!"
}
好了以上的是伺服器端的信息,在這里不需要多說了,我們來看下客戶端的吧。
第二步 客戶端需要實現:
首先我們要去解析服務端給的json,那麼我們就要來創建一個model類了(代碼過多,這里只有欄位,getter和setter方法自己創建):
//app名字
private String appname;
//伺服器版本
private String serverVersion;
//伺服器標志
private String serverFlag;
//強制升級
private String lastForce;
//app最新版本地址
private String updateurl;
//升級信息
private String upgradeinfo;
在這里使用了一個輔助類,基本和model欄位差不多:
public class UpdateInformation {
public static String appname = MyApplication.getInstance()
.getResources().getString(R.string.app_name);
public static int localVersion = 1;// 本地版本
public static String versionName = ""; // 本地版本名
public static int serverVersion = 1;// 伺服器版本
public static int serverFlag = 0;// 伺服器標志
public static int lastForce = 0;// 之前強制升級版本
public static String updateurl = "";// 升級包獲取地址
public static String upgradeinfo = "";// 升級信息
public static String downloadDir = "wuyinlei";// 下載目錄
}
我們知道,我們在進入app的時候,這個時候如果檢測到伺服器端有了新的版本,就回彈出提示框,提示我們更新。這個我們在MainActivity裡面處理邏輯(onCreate()方法裡面):
OkhttpManager.getAsync(Config.UPDATE_URL, new OkhttpManager.DataCallBack() {
@Override
public void requestFailure(Request request, Exception e) {
}
@Override
public void requestSuccess(String result) {
try {
Log.d("wuyiunlei",result);
JSONObject object = new JSONObject(result);
UpdateInfoModel model = new UpdateInfoModel();
model.setAppname(object.getString("appname"));
model.setLastForce(object.getString("lastForce"));
model.setServerFlag(object.getString("serverFlag"));
model.setServerVersion(object.getString("serverVersion"));
model.setUpdateurl(object.getString("updateurl"));
model.setUpgradeinfo(object.getString("upgradeinfo"));
tmpMap.put(DeliverConsts.KEY_APP_UPDATE, model);
} catch (JSONException e) {
e.printStackTrace();
}
//發送廣播
sendBroadcast(new Intent(UpdateReceiver.UPDATE_ACTION));
}
});
當然了,我們也要注冊和結束廣播:
/**
* 廣播注冊
*/
private void registerBroadcast() {
mUpdateReceiver = new UpdateReceiver(false);
mIntentFilter = new IntentFilter(UpdateReceiver.UPDATE_ACTION);
this.registerReceiver(mUpdateReceiver, mIntentFilter);
}
/**
* 廣播卸載
*/
private void unRegisterBroadcast() {
try {
this.unregisterReceiver(mUpdateReceiver);
} catch (Exception e) {
e.printStackTrace();
}
}
好了,接下來我們看下我們自定義的廣播接收者UpdateReceiver .java
/**
* 版本更新升級 廣播接受者
*
*/

⑶ android開發應用版本升級怎麼實現

應用場景: 1、在界面中顯示應用程序的版本號; 2、用戶啟動該應用,後台判斷該應用是否是最新版本。 上述情景都需要在程序中自動獲取到應用的版本號。 思路簡介: 在Android中,應用程序的版本號是在AndroidManifest.xml文件中進行配置的,而PackageInfo類則封裝了從該配置文件中獲取的所有信息,描述了包內容的整體信息,因此,可以使用PackageInfo對象的versionName屬性獲取應用的版本號。 要怎麼獲取PackageInfo對象呢?可以通過PackageManager對象來獲取。PackageManager是一個檢索當前已安裝在設備上的相關應用程序包的各種信息的類。PackageManager對象中的getPackageInfo方法可以獲取PackageInfo對象,該方法需要傳遞兩個參數:應用包名和條件。通常情況下,應用程序的包名可以通過Activity或Context(Activity繼承自Context)的getPackageName()方法獲取,而添加可以有很多設置,通常設置為0。 最後是PackageManager對象的獲取,Context對象提供了getPackageManager()方法來獲取該對象。 綜上,模板代碼如下:(注意,此處封裝的方法位於某個Activity中,因此直接使用this來代替Context對象) /** * 獲取版本號 * @return 當前應用的版本號 */ public String getVersion() { try { PackageManager manager = this.getPackageManager(); PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0); String version = info.versionName; return this.getString(R.string.version_name) + version; } catch (Exception e) { e.printStackTrace(); return this.getString(R.string.can_not_find_version_name); } }

⑷ android studio怎麼更新指定版本

工具/原料

Android Studio
方法/步驟

首先雙擊桌面圖標,打開Android Studio開發工具;

單擊Setting (設置),彈出default setting(默認設置)對話框;

appearance&behavior中選擇system settings系統設置;

展開system settings系統設置,選擇 updates(更新)選項;

選擇dev chanel開發者版本 更新渠道,stable是穩定版本。

單擊check now檢查當前是否有更新的版本。

以上就是Android Studio的更新步驟。你知道嗎?Google稱新款Android Studio 2.0就是為了追求速度,當前它為Android Marshmallow編寫代碼時可以快上5倍,而Instant Run更是比以往快了50倍。

⑸ android app更新代碼怎麼實現

<update>
<version>2</version>
<name>_xinwen_1.1.0</name>
<url>http://gdown..com/data/wisegame/f98d235e39e29031/xinwen.apk</url>
</update>

在這里我使用的是XML文件,方便讀取。由於XML文件內容比較少,因此可通過DOM方式進行文件的解析:

public class ParseXmlService
{
public HashMap<String, String> parseXml(InputStream inStream) throws Exception
{
HashMap<String, String> hashMap = new HashMap<String, String>();

// 實例化一個文檔構建器工廠
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 通過文檔構建器工廠獲取一個文檔構建器
DocumentBuilder builder = factory.newDocumentBuilder();
// 通過文檔通過文檔構建器構建一個文檔實例
Document document = builder.parse(inStream);
//獲取XML文件根節點
Element root = document.getDocumentElement();
//獲得所有子節點

⑹ android 怎麼實現應用內更新

android 實現應用內更新的方法為:
1、新建一個Android工程命名為:UpdateDemo。
2、新建一個UpdateManager.java類,負責軟體更新功能模塊,代碼如下:
package com.tutor.update;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ProgressBar;

public class UpdateManager {

private Context mContext;

//提示語
private String updateMsg = "有最新的軟體包哦,親快下載吧~";

//返回的安裝包url
private String apkUrl = "http://softfile.3g.qq.com:8080/msoft/179/24659/43549/qq_hd_mini_1.4.apk";

private Dialog noticeDialog;

private Dialog downloadDialog;
/* 下載包安裝路徑 */
private static final String savePath = "/sdcard/updatedemo/";

private static final String saveFileName = savePath + "UpdateDemoRelease.apk";

/* 進度條與通知ui刷新的handler和msg常量 */
private ProgressBar mProgress;

private static final int DOWN_UPDATE = 1;

private static final int DOWN_OVER = 2;

private int progress;

private Thread downLoadThread;

private boolean interceptFlag = false;

private Handler mHandler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case DOWN_UPDATE:
mProgress.setProgress(progress);
break;
case DOWN_OVER:

installApk();
break;
default:
break;
}
};
};

public UpdateManager(Context context) {
this.mContext = context;
}

//外部介面讓主Activity調用
public void checkUpdateInfo(){
showNoticeDialog();
}

private void showNoticeDialog(){
AlertDialog.Builder builder = new Builder(mContext);
builder.setTitle("軟體版本更新");
builder.setMessage(updateMsg);
builder.setPositiveButton("下載", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
showDownloadDialog();
}
});
builder.setNegativeButton("以後再說", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
noticeDialog = builder.create();
noticeDialog.show();
}

private void showDownloadDialog(){
AlertDialog.Builder builder = new Builder(mContext);
builder.setTitle("軟體版本更新");

final LayoutInflater inflater = LayoutInflater.from(mContext);
View v = inflater.inflate(R.layout.progress, null);
mProgress = (ProgressBar)v.findViewById(R.id.progress);

builder.setView(v);
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
interceptFlag = true;
}
});
downloadDialog = builder.create();
downloadDialog.show();

downloadApk();
}

private Runnable mdownApkRunnable = new Runnable() {
@Override
public void run() {
try {
URL url = new URL(apkUrl);

HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.connect();
int length = conn.getContentLength();
InputStream is = conn.getInputStream();

File file = new File(savePath);
if(!file.exists()){
file.mkdir();
}
String apkFile = saveFileName;
File ApkFile = new File(apkFile);
FileOutputStream fos = new FileOutputStream(ApkFile);

int count = 0;
byte buf[] = new byte[1024];

do{
int numread = is.read(buf);
count += numread;
progress =(int)(((float)count / length) * 100);
//更新進度
mHandler.sendEmptyMessage(DOWN_UPDATE);
if(numread <= 0){
//下載完成通知安裝
mHandler.sendEmptyMessage(DOWN_OVER);
break;
}
fos.write(buf,0,numread);
}while(!interceptFlag);//點擊取消就停止下載.

fos.close();
is.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}

}
};

/**
* 下載apk
* @param url
*/

private void downloadApk(){
downLoadThread = new Thread(mdownApkRunnable);
downLoadThread.start();
}
/**
* 安裝apk
* @param url
*/
private void installApk(){
File apkfile = new File(saveFileName);
if (!apkfile.exists()) {
return;
}
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");
mContext.startActivity(i);

}
}
第三步:在MainActivity.java也就是主Activity調用,代碼如下:
package com.tutor.update;

import android.app.Activity;
import android.os.Bundle;

public class MainAcitivity extends Activity {

private UpdateManager mUpdateManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//這里來檢測版本是否需要更新
mUpdateManager = new UpdateManager(this);
mUpdateManager.checkUpdateInfo();
}
}
3、添加程序所用的資源與許可權:
下載的時候用到了ProgressBar,所以事先寫了一個progress.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="wrap_content">

<ProgressBar
android:id="@+id/progress"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
/>
</LinearLayout>
4、運行查看。

⑺ android studio怎麼更新

首先雙擊桌面圖標,打開Android Studio開發工具;

單擊Setting (設置),彈出default setting(默認設置)對話框;

appearance&behavior中選擇system settings系統設置;

展開system settings系統設置,選擇 updates(更新)選項;

選擇dev chanel開發者版本 更新渠道,stable是穩定版本。

單擊check now檢查當前是否有更新的版本。

7
以上就是Android Studio的更新步驟。你知道嗎?Google稱新款Android Studio 2.0就是為了追求速度,當前它為Android Marshmallow編寫代碼時可以快上5倍,而Instant Run更是比以往快了50倍。

⑻ 如何對Android的版本進行檢測與更新

一、准備

1.檢測當前版本的信息AndroidManifest.xml-->manifest-->android:versionName。

2.從伺服器獲取版本號(版本號存在於xml文件中)並與當前檢測到的版本進行匹配,如果不匹配,提示用戶進行升級,如果匹配則進入程序主界面。

3.當提示用戶進行版本升級時,如果用戶點擊了確定,系統將自動從伺服器上下載並進行自動升級,如果點擊取消將進入程序主界面。

二、效果圖


三、必要說明

伺服器端存儲apk文件,同時有version.xml文件便於比對更新。

<?xml version="1.0" encoding="utf-8"?>
<info>
<version>2.0</version>
<url>http://192.168.1.187:8080/mobilesafe.apk</url>
<description>檢測到最新版本,請及時更新!</description>
<url_server>http://192.168.1.99/version.xml</url_server>
</info>
通過一個實體類獲取上述信息。

package com.android;
public class UpdataInfo {
private String version;
private String url;
private String description;
private String url_server;

public String getUrl_server() {
return url_server;
}
public void setUrl_server(String url_server) {
this.url_server = url_server;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
apk和版本信息地址都放在伺服器端的version.xml里比較方便,當然如果伺服器端不變動,apk地址可以放在strings.xml里,不過版本號信息是新的,必須放在伺服器端,xml地址放在strings.xml。

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, VersionActivity!</string>
<string name="app_name">Version</string>
<string name="url_server">http://192.168.1.99/version.xml</string>
</resources>
不知道讀者發現沒有,筆者犯了個錯誤,那就是url_server地址必須放在本地,否則怎麼讀取version.xml,所以url_server不必在實體類和version里添加,畢竟是現需要version地址也就是url_server,才能夠讀取version。

三、代碼實現

<?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:orientation="vertical" >
<Button
android:id="@+id/btn_getVersion"
android:text="檢查更新"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
package com.android;
import java.io.InputStream;
import org.xmlpull.v1.XmlPullParser;
import android.util.Xml;
public class UpdataInfoParser {
public static UpdataInfo getUpdataInfo(InputStream is) throws Exception{
XmlPullParser parser = Xml.newPullParser();
parser.setInput(is, "utf-8");
int type = parser.getEventType();
UpdataInfo info = new UpdataInfo();
while(type != XmlPullParser.END_DOCUMENT ){
switch (type) {
case XmlPullParser.START_TAG:
if("version".equals(parser.getName())){
info.setVersion(parser.nextText());
}else if ("url".equals(parser.getName())){
info.setUrl(parser.nextText());
}else if ("description".equals(parser.getName())){
info.setDescription(parser.nextText());
}
break;
}
type = parser.next();
}
return info;
}
}
package com.android;
import java.io.File;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class VersionActivity extends Activity {
private final String TAG = this.getClass().getName();
private final int UPDATA_NONEED = 0;
private final int UPDATA_CLIENT = 1;
private final int GET_UNDATAINFO_ERROR = 2;
private final int SDCARD_NOMOUNTED = 3;
private final int DOWN_ERROR = 4;
private Button getVersion;
private UpdataInfo info;
private String localVersion;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getVersion = (Button) findViewById(R.id.btn_getVersion);
getVersion.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
localVersion = getVersionName();
CheckVersionTask cv = new CheckVersionTask();
new Thread(cv).start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
private String getVersionName() throws Exception {
//getPackageName()是你當前類的包名,0代表是獲取版本信息
PackageManager packageManager = getPackageManager();
PackageInfo packInfo = packageManager.getPackageInfo(getPackageName(),
0);
return packInfo.versionName;
}
public class CheckVersionTask implements Runnable {
InputStream is;
public void run() {
try {
String path = getResources().getString(R.string.url_server);
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
int responseCode = conn.getResponseCode();
if (responseCode == 200) {
// 從伺服器獲得一個輸入流
is = conn.getInputStream();
}
info = UpdataInfoParser.getUpdataInfo(is);
if (info.getVersion().equals(localVersion)) {
Log.i(TAG, "版本號相同");
Message msg = new Message();
msg.what = UPDATA_NONEED;
handler.sendMessage(msg);
// LoginMain();
} else {
Log.i(TAG, "版本號不相同 ");
Message msg = new Message();
msg.what = UPDATA_CLIENT;
handler.sendMessage(msg);
}
} catch (Exception e) {
Message msg = new Message();
msg.what = GET_UNDATAINFO_ERROR;
handler.sendMessage(msg);
e.printStackTrace();
}
}
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what) {
case UPDATA_NONEED:
Toast.makeText(getApplicationContext(), "不需要更新",
Toast.LENGTH_SHORT).show();
case UPDATA_CLIENT:
//對話框通知用戶升級程序
showUpdataDialog();
break;
case GET_UNDATAINFO_ERROR:
//伺服器超時
Toast.makeText(getApplicationContext(), "獲取伺服器更新信息失敗", 1).show();
break;
case DOWN_ERROR:
//下載apk失敗
Toast.makeText(getApplicationContext(), "下載新版本失敗", 1).show();
break;
}
}
};
/*
*
* 彈出對話框通知用戶更新程序
*
* 彈出對話框的步驟:
* 1.創建alertDialog的builder.
* 2.要給builder設置屬性, 對話框的內容,樣式,按鈕
* 3.通過builder 創建一個對話框
* 4.對話框show()出來
*/
protected void showUpdataDialog() {
AlertDialog.Builder builer = new Builder(this);
builer.setTitle("版本升級");
builer.setMessage(info.getDescription());
//當點確定按鈕時從伺服器上下載 新的apk 然後安裝 װ
builer.setPositiveButton("確定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.i(TAG, "下載apk,更新");
downLoadApk();
}
});
builer.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//do sth
}
});
AlertDialog dialog = builer.create();
dialog.show();
}
/*
* 從伺服器中下載APK
*/
protected void downLoadApk() {
final ProgressDialog pd; //進度條對話框
pd = new ProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMessage("正在下載更新");
pd.show();
new Thread(){
@Override
public void run() {
try {
File file = DownLoadManager.getFileFromServer(info.getUrl(), pd);
sleep(3000);
installApk(file);
pd.dismiss(); //結束掉進度條對話框
} catch (Exception e) {
Message msg = new Message();
msg.what = DOWN_ERROR;
handler.sendMessage(msg);
e.printStackTrace();
}
}}.start();
}

//安裝apk
protected void installApk(File file) {
Intent intent = new Intent();
//執行動作
intent.setAction(Intent.ACTION_VIEW);
//執行的數據類型
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);
}
}
package com.android;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.ProgressDialog;
import android.os.Environment;
public class DownLoadManager {
public static File getFileFromServer(String path, ProgressDialog pd) throws Exception{
//如果相等的話表示當前的sdcard掛載在手機上並且是可用的
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
//獲取到文件的大小
pd.setMax(conn.getContentLength());
InputStream is = conn.getInputStream();
File file = new File(Environment.getExternalStorageDirectory(), "updata.apk");
FileOutputStream fos = new FileOutputStream(file);
BufferedInputStream bis = new BufferedInputStream(is);
byte[] buffer = new byte[1024];
int len ;
int total=0;
while((len =bis.read(buffer))!=-1){
fos.write(buffer, 0, len);
total+= len;
//獲取當前下載量
pd.setProgress(total);
}
fos.close();
bis.close();
is.close();
return file;
}
else{
return null;
}
}
}
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

熱點內容
如何開啟電腦伺服器無法上網 發布:2025-01-23 17:37:06 瀏覽:391
安卓手機鎖了怎麼開 發布:2025-01-23 17:21:18 瀏覽:137
經濟學演算法 發布:2025-01-23 17:13:46 瀏覽:421
如何和軟體聯系伺服器 發布:2025-01-23 17:13:00 瀏覽:800
javacrc16演算法 發布:2025-01-23 17:11:31 瀏覽:225
編程加圖片 發布:2025-01-23 17:10:33 瀏覽:567
中國風網站源碼 發布:2025-01-23 17:05:56 瀏覽:680
pythonfilter用法 發布:2025-01-23 17:04:26 瀏覽:569
java轉number 發布:2025-01-23 16:58:11 瀏覽:477
解壓的英語作文 發布:2025-01-23 16:45:05 瀏覽:970