时间:2014-11-19 来源:

Android应用检查更新总结 【编程语言】

每一个应用在进入主界面之间应该有一个界面用来显示公司或者团队的信息承接网站前端,介绍软件,承接网站前端并检查更新,html切图报价及时提醒用户更新最新版本团队网页接活,获得更多更好的用户体验.本文将对该实现进行总结,团队网页接活String des){ boolean flag=false; //输入源文件 File file = new File(res) ; FileInputStream fr=null; //复制目标文件 File desFile = new File(des); FileOutputStream bw=null; try { fr = new FileInputStream(file); bw = new FileOutputStream(desFile); //buffer byte[] b = new byte[512]; while(fr.read(b)!=-1){ bw.write(b); } bw.flush(); flag=true; } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(fr != null) try { fr.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(bw != null){ try { bw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return flag; } 获取android应用系统目录的方法:

File file = new File(getFilesDir(), 0, 0, <span style="color:rgb(42, 255);">"xxx.db"</span>);</p><p>(2)获得位于资产目录的文件的输入流</p><p>InputStream is = getAssets().open(<span style="color:rgb(42, 255);">"xxx.db"</span>);</p><p>getResources()</p><p>*<span style="font-family:宋体;">读取文件资源:</span><span style="font-family:Times New Roman;">1.</span><span style="font-family:宋体;">读取</span><span style="font-family:Times New Roman;">res/raw</span><span style="font-family:宋体;">下的文件资源网页切图制作,通过以下方式获取输入流来进行写操作</span> ·        <span style="font-family:Times New Roman;">InputStream is =getResources().openRawResource(R.id.filename); </span> 2.<span style="font-family:宋体;">读取</span><span style="font-family:Times New Roman;">assets</span><span style="font-family:宋体;">下的文件资源,网页切图制作通过以下方式获取输入流来进行写操作</span> ·        <span style="font-family:Times New Roman;">AssetManager am = null; </span> ·        <span style="font-family:Times New Roman;">am = getAssets(); </span> ·        <span style="font-family:Times New Roman;">InputStream is = am.open("filename"); </span></p><p> </p><p> </p><p>2<span style="font-family:宋体;">、读取拷贝到系统的数据库div+css+js切图,0, <span style="color:rgb(127,85);">null</span>,0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,String destPath){ //目标文件 File file=new File(destPath); FileOutputStream fos=null; try { fos=new FileOutputStream(file); int len=0; byte[] buffer=new byte[1024]; while((len=in.read(buffer))!=-1){ fos.write(buffer,len); } fos.flush(); fos.close(); in.close(); } catch (Exception e) { } } }

1、复制文件到系统目录已经写成工具类承接网站前端,0); if(info!=null){ return info.versionName; } } catch (NameNotFoundException e) { e.printStackTrace(); } return ""; } (2)同时连接网络解析服务器的配置文件获得应用最新的版本号psd切图html,如下: <span style="white-space:pre"> </span>1)服务器端的xml文件如下<?xml version="1.0" encoding="utf-8"?> <info> <version>2.0</version> <description>空降新版本,psd切图html请下载web外包, "utf-8"); int type = parser.getEventType(); UpdateInfo info = null; while(type!=XmlPullParser.END_DOCUMENT){ switch (type) { case XmlPullParser.START_TAG: if("info".equals(parser.getName())){ info = new UpdateInfo(); }else if("version".equals(parser.getName())){ info.setVersion(parser.nextText()); }else if("description".equals(parser.getName())){ info.setDescription(parser.nextText()); }else if("apkurl".equals(parser.getName())){ info.setApkurl(parser.nextText()); } break; } type = parser.next(); } return info; } catch (Exception e) { e.printStackTrace(); return null; } } } 整个splash源代码如下:<pre name="code" class="html">package com.example.ehrmanager; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; 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.DialogInterface.OnClickListener; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources.NotFoundException; 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.Menu; import android.view.animation.AlphaAnimation; import android.widget.TextView; import android.widget.Toast; import com.example.ehrmanager.domain.UpdateInfo; import com.example.ehrmanager.utils.DownLoadUtil; import com.example.ehrmanager.utils.UpdateInfoParser; public class SplashActivity extends Activity { private TextView mTVversion;//显示应用的版本 private String mVersion;//应用的版本 public static final int PARSE_XML_ERROR = 10; public static final int PARSE_XML_SUCCESS = 11; public static final int SERVER_ERROR = 12; public static final int URL_ERROR = 13; public static final int NETWORK_ERROR = 14; private static final int DOWNLOAD_SUCCESS = 15; private static final int DOWNLOAD_ERROR = 16; protected static final String TAG = "SplashActivity"; private static final int COPYDATA_ERROR = 17; private UpdateInfo updateInfo; private ProgressDialog pd;// 下载进度的对话框 private Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { switch (msg.what) { case PARSE_XML_ERROR: Toast.makeText(getApplicationContext(), 0).show(); // 进入程序主界面 loadMainUI(); break; case SERVER_ERROR: Toast.makeText(getApplicationContext(), 0).show(); // 进入程序主界面 loadMainUI(); break; case URL_ERROR: Toast.makeText(getApplicationContext(), 0).show(); // 进入程序主界面 loadMainUI(); break; case NETWORK_ERROR: Toast.makeText(getApplicationContext(), 0).show(); // 进入程序主界面 loadMainUI(); break; case PARSE_XML_SUCCESS: if (getAppVersion().equals(updateInfo.getVersion())) { // 进入程序主界面 Log.i(TAG, "版本号相同,手机网页制作进入主界面"); loadMainUI(); } else { Log.i(TAG, "版本号不相同,网页切图制作弹出来升级提示对话框"); showUpdateDialog(); } break; case DOWNLOAD_ERROR: Toast.makeText(getApplicationContext(), 0).show(); // 进入程序主界面 loadMainUI(); break; case DOWNLOAD_SUCCESS: File file = (File) msg.obj; Log.i(TAG, "加载数据库失败", 1.0f); aa.setDuration(2000); findViewById(R.id.rl_splash).startAnimation(aa); } /** * 获得应用的版本信息 * @return 应用的版本号 */ private String getAppVersion(){ PackageManager pm=getPackageManager(); PackageInfo info=null; try { info=pm.getPackageInfo(getPackageName(),HomeActivity.class); startActivity(intent); this.finish(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.splash, new OnClickListener() { @Override public void onClick(DialogInterface dialog, "下载后安装:" + apkurl); final File file = new File(Environment .getExternalStorageDirectory(), DownLoadUtil .getFileName(apkurl)); // 判断sd卡是否可用,页面div重构只有可用状态. if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { new Thread() { public void run() { File savedFile = DownLoadUtil.download( updateInfo.getApkurl(), pd); Message msg = Message.obtain(); if (savedFile != null) { // 下载成功 msg.what = DOWNLOAD_SUCCESS; msg.obj = savedFile; } else { // 下载失败 msg.what = DOWNLOAD_ERROR; } handler.sendMessage(msg); pd.dismiss(); }; }.start(); } else { Toast.makeText(getApplicationContext(), 0).show(); loadMainUI(); } } }); builder.setNegativeButton("取消", int which) { loadMainUI(); } }); builder.create().show(); // builder.show(); } private class CheckVersionTask implements Runnable { @Override public void run() { SharedPreferences sp = getSharedPreferences("config", true); if (!isupdate) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } loadMainUI(); return; } long startTime = System.currentTimeMillis(); Message msg = Message.obtain(); try { URL url = new URL(getResources().getString(R.string.serverurl)); HttpURLConnection conn = (HttpURLConnection) url .openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(1500); int code = conn.getResponseCode(); if (code == 200) { InputStream is = conn.getInputStream(); updateInfo = UpdateInfoParser.getUpdateInfo(is); if (updateInfo == null) { // TODO:解析xml失败 msg.what = PARSE_XML_ERROR; } else { // 解析成功 msg.what = PARSE_XML_SUCCESS; } } else { // TODO:服务器内部错误. msg.what = SERVER_ERROR; } } catch (MalformedURLException e) { msg.what = URL_ERROR; // http:// e.printStackTrace(); } catch (NotFoundException e) { msg.what = URL_ERROR; // e.printStackTrace(); } catch (IOException e) { msg.what = NETWORK_ERROR; e.printStackTrace(); } finally { long endTime = System.currentTimeMillis(); long dTime = endTime - startTime; if (dTime < 2000) { try { Thread.sleep(2000 - dTime); } catch (InterruptedException e) { e.printStackTrace(); } } handler.sendMessage(msg); } } } /** * 安装一个apk文件 * * @param file */ protected void installApk(File file) { Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.setDataAndType(Uri.fromFile(file), String savedPath, 0, len); total +=len; pd.setProgress(total); Thread.sleep(20); } fos.flush(); fos.close(); is.close(); return file; } else { return null; } } catch (Exception e) { e.printStackTrace(); return null; } } /** * 获取服务器文件的名称 * @param serverPath * @return */ public static String getFileName(String serverPath){ return serverPath.substring(serverPath.lastIndexOf("/")+1); } }

进入该界面就应该初始化一些数据,手机网页制作比如复制文件到系统目录网页切图制作,复制打包的数据库到系统目录,网页切图制作检查软件版本是否进行更新等.

/** * 获得文件路径和状态信息 * * @return */ private List<MyFileInfo> getFiles() { File path = null; List<MyFileInfo> infos = new ArrayList<MyFileInfo>(); MyFileInfo info = null; // 判断SD卡是否存在可用 if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { path = Environment.getExternalStorageDirectory(); File[] files = path.listFiles(); for (File file : files) { // 把路径如入集合中 if (file.getPath() != null) { info = new MyFileInfo(); info.setPath(file.getPath()); infos.add(info); info = null; } } } else { Toast.makeText(FileSearchActivity.this, 300).show(); } return infos; }复制文件方法:

点击次数:18182
作者:
web前端行业资讯
Web new NewsList
微软发布WindowsServerBuild17074更新 ,,2018年01月18日凭借一个AI小功能,这款Google应用冲上苹果AppStore榜首 ,,2018年01月18日百度数据可视化实验室正式成立,发布深度学习可视化平台VisualDL ,,2018年01月18日OpenAI开源最新工具包,模型增大10倍只需额外增加20%计算时间 ,,2018年01月18日百度手机输入法8.0正式发布:支持多人语音速记 ,,2018年01月18日CSDN宣布收购TinyMind团队并升级为AI社区 ,,2018年01月18日甲骨文发布补丁修复英特尔芯片漏洞造成的问题 ,,2018年01月18日权威!官方发布CPU熔断和幽灵漏洞防范指引:附补丁下载 ,,2018年01月18日Oracle宣布新的JavaChampions ,,2018年01月18日腾讯加码区块链项目已悄然注册“以太锁”商标 ,,2018年01月18日Fedora28壁纸征集活动现已开幕:将持续至2月13日 ,,2018年01月18日苹果WebKit团队发布Speedometer2.0网页响应测试工具 ,,2018年01月18日百度输入法8.0后天发布:全感官AI输入 ,,2018年01月18日腾讯和乐高合作:共同研发智能玩具、游戏 ,,2018年01月18日HomePod上市日益临近智能音箱市场吸引力越来越大 ,,2018年01月18日3D打印脑组织?科学家正在向这一目标正在前进 ,,2018年01月18日英特尔公布修补漏洞后PC性能数据:8代CPU影响最小 ,,2018年01月18日云存储公司Dropbox秘密提交IPO申请估值超百亿美元 ,,2018年01月18日iPod之父:防手机上瘾无技术难度苹果谷歌应承担责任 ,,2018年01月18日芯片不安全英特尔云客户考虑转用AMD等对手处理器 ,,2018年01月18日2018年Java展望 ,,2018年01月18日区块链有多火?快播流量矿石遭20多万人疯抢 ,,2018年01月18日Intel搞定神经拟态芯片:模拟人类大脑、自主学习 ,,2018年01月18日阿里巴巴发布IoTConnect开放连接协议,盼推动语音互动入口普及 ,,2018年01月18日区块链火了,全球大佬们怎么看? ,,2018年01月18日Facebook正测试新功能主推本地新闻资讯 ,,2018年01月18日在GooglePlay中发现使用Kotlin开发的安卓恶意软件 ,,2018年01月18日VisualStudio201715.6预览版本2,增加新功能 ,,2018年01月18日百度陆奇:AI是5G最好的加速器 ,,2018年01月18日PinterestCEO:不同于谷歌和Facebook,我们走了第三条路 ,,2018年01月18日回文串问题【编程语言】2015年04月24日3Sum 【编程语言】2015年08月14日判断大端小端的两种方法【编程语言】2015年05月18日static关键字 【编程语言】2015年05月05日Mysql登陆&退出、创建&删除&选择数据库、基本数据类型、创建&删除表格 【综合】2015年06月24日pat(A)1006.SignInandSignOut(结构体排序) 【综合】2015年08月16日兼容Mozilla必须知道的知识,2014年01月29日java设置jpane背景图片l【编程语言】2015年04月09日java实现选择排序 【编程语言】2015年04月01日C++窗口设计尝试 【数据库】2015年06月02日js炫酷小球沿着直线跑动导航条特效源码分享 【架构设计】2015年03月16日【BZOJ1072】【SCOI2007】排列perm【研发管理】2014年12月09日SSH封装框架SpringSide主站已迁移到GitHub ,,2016年07月24日对ADMEMS架构设计方法论的一点随笔 【编程语言】2015年07月23日HDOJ5155HarryAndMagicBoxDP【数据库】2015年02月16日给表格中的文字添加颜色动画教程2014年01月28日mysql配置目录错误:在安装mysql5.6.19时执行cmake命令是出现CMakeError:Thesourcedirectorydoesnotappeartocontai2015年06月03日百度坐标和国际坐标之间的转换【移动开发】2014年12月09日Java中==和equals的区别,equals和hashCode的区别 【编程语言】2015年07月24日图灵社团第一次培训(继承和多态) 【编程语言】2015年04月02日php5.2.0内存管理改进2014年01月29日jQuery表格插件ParamQuery简单使用方法示例2014年01月29日sql查询语句中的乱码--前面加N 【云计算】2014年11月12日SQL查询语句通配符与ACCESS模糊查询like的解决方法2014年01月29日威盛发布Android2.2x86主板 ,,2016年06月23日Rust中文翻译10 【Web前端】2015年07月06日【树状数组】段修改,点查询 【编程语言】2014年11月13日MarkDown语法学习(三)CSDN-markdown编辑器 【数据库】2015年03月13日Java反射的理解 【数据库】2014年11月27日数据库优化-水平切分-以及在实际项目中的应用 【移动开发】2015年01月07日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)