钓鱼网站网址大全,智能软件开发就业前景,邯郸百度公司地址,wordpress主题安装模板下载android应用有两种表现形式#xff1a;一种是交给Android系统的下载管理器;另一种是自己去监控下载。 1.使用Android下载管理器下载应用并安装 public class UpdateService extends Service {// 安卓系统下载管理类DownloadManager manager;// 接收下载完的广播DownloadCo… 下载android应用有两种表现形式一种是交给Android系统的下载管理器;另一种是自己去监控下载。 1.使用Android下载管理器下载应用并安装 public class UpdateService extends Service {// 安卓系统下载管理类DownloadManager manager;// 接收下载完的广播DownloadCompleteReceiver receiver;// 初始化下载器private void initDownManager(String url) {manager (DownloadManager) getSystemService(DOWNLOAD_SERVICE);receiver new DownloadCompleteReceiver();//设置下载地址DownloadManager.Request down new DownloadManager.Request(Uri.parse(url));// 设置允许使用的网络类型这里是移动网络和wifi都可以down.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE| DownloadManager.Request.NETWORK_WIFI);// 下载时通知栏显示途中down.setNotificationVisibility(Request.VISIBILITY_VISIBLE);// 显示下载界面down.setVisibleInDownloadsUi(true);// 设置下载后文件存放的位置down.setDestinationInExternalFilesDir(this,Environment.DIRECTORY_DOWNLOADS, update.apk);// 将下载请求放入队列manager.enqueue(down);//注册下载广播registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));}Overridepublic int onStartCommand(Intent intent, int flags, int startId) {String url intent.getStringExtra(url);// 调用下载initDownManager(url);return 0;}Overridepublic IBinder onBind(Intent intent) {return null;}Overridepublic void onDestroy() {// 注销下载广播if (receiver ! null)unregisterReceiver(receiver);super.onDestroy();}// 接受下载完成后的intentclass DownloadCompleteReceiver extends BroadcastReceiver {Overridepublic void onReceive(Context context, Intent intent) {//判断是否下载完成的广播if (intent.getAction().equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) {System.out.println(download complete!);//获取下载的文件idlong downId intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);//自动安装apkinstallAPK(manager.getUriForDownloadedFile(downId));//停止服务并关闭广播UpdateService.this.stopSelf();}}/*** 安装apk文件*/private void installAPK(Uri apk) {// 通过Intent安装APK文件Intent intents new Intent();System.out.println(auto install);intents.setAction(android.intent.action.VIEW);intents.addCategory(android.intent.category.DEFAULT);intents.setType(application/vnd.android.package-archive);intents.setData(apk);intents.setDataAndType(apk,application/vnd.android.package-archive);intents.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//android.os.Process.killProcess(android.os.Process.myPid());// 有的设备不加上这句的话在apk安装完成之后点击单开始可能会崩溃startActivity(intents);}}
}2.
自己监控下载。public class UpdateDialog extends Dialog implements OnClickListener{Button download,cancel;String apkurlhttp://....../;String savePath/**/**/update/;String saveFileNamesavePath/adf.apk;
pre namecode classjava ProgressBar mProgress;//进度条Context mContext;
span stylefont-size:24px;/spanpre namecode classjava private static final int DOWN_UPDATE 1;//下载更新private static final int DOWN_OVER 2;//下载完成private static final String TAG UpdateManager;private int progress;//进度private Thread downLoadThread;//下载线程public static boolean interceptFlag false;//是否中断
public UpdateDialog(Context context,String apkurl)
{
super(context);this.apkurlapkurlmContextcontext;
}
Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.update_dialog);
download(Button)findViewById(R.id.down);
cancel(Button)findViewById(R.id.downcan);
mProgress(ProgressBar)findViewById(R.id.progress_update);
download.setOnClickListener(this);
cancel.setOnClickListener(this);
}
Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.down://点击下载
downloadApk();
dismiss();
break;
case R.id.downcan://取消下载
interceptFlag true;
dismiss();
break;
default:
break;
}}
/** * 下载apk */
private void downloadApk()
{
downLoadThread new Thread(mdownApkRunnable);
downLoadThread.start();
}
///** * 安装apk */
private void installApk()
{
File apkfile new File(saveFileName);
if (!apkfile.exists())
{
return;
}
Intent i new Intent();
i.setAction(android.intent.action.VIEW);
i.addCategory(android.intent.category.DEFAULT);
i.setType(application/vnd.android.package-archive);
i.setData(Uri.parse(file:// apkfile.toString()));
i.setDataAndType(Uri.parse(file:// apkfile.toString()),application/vnd.android.package-archive);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);mContext.startActivity(i);
}
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)
{}
catch (IOException e)
{}}};
private Handler mHandler new Handler()
{
public void handleMessage(Message msg)
{
switch (msg.what) {
case DOWN_UPDATE:
mProgress.setProgress(progress);
break;
case DOWN_OVER:
//下载完成
dismiss();
installApk();
break;
default:break;
}};};}