Android手机卫士之SplashActivity
16lz
2022-07-02
手机卫士之Splash界面
splash: 溅,洒定义一个SplashActivity作为一款软件的打开界面,它承担着在真正打开软件之前需完成的一些功能,如下面:
展现产品的logo提升产品的知名度
初始化操作(创建数据库,读取配置文件)
连接服务器检查软件授权、更新
整体取消掉标题栏:在清单文件中加一修改主题
android:theme="@android:style/Theme.Light.NoTitleBar"
自动更新的前提
- 包名一致
- 签名一致
1、展现产品的logo提升产品的知名度
再打开软件之后出现软件的版本信息,名称,并设置了背景图片。2、初始化操作
把软件要用到的数据库初始化,读取配置文件信息,数据库只初始化一次,除 非卸载软件或者删除数据之后再会重新扫描。/**
* 拷贝数据库到data/data/包名/files目录下,数据库的初始化 */ copyDB("address.db"); copyDB("commonnum.db"); copyDB("antivirus.db");
/** * 拷贝资产目录下的数据库到Android系统下 */ private void copyDB(final String name) { /* * 数据库多时可能耗时,在子线程中执行 */ new Thread(){ public void run() { File file=new File(getFilesDir(),name); if(file.exists()&&file.length()>0){ System.out.println("数据库已经加载过,无需在加载!"); }else{
try { InputStream is=getAssets().open(name); FileOutputStream fos=new FileOutputStream(file); byte[] buffer=new byte[1024]; int len=-1; while((len=is.read(buffer))!=-1){ fos.write(buffer, 0, len); } is.close(); fos.close(); } catch (Exception e) { e.printStackTrace(); } } }; }.start(); }
3、连接服务器检查软件授权、更新
软件随时都可能更新,在splash界面如果发现服务器中的app更新了,就实现读取服务器中的信息,并弹出对话框让用户选择是否更新,选择更新就会自动下载新版本并自动安装替换旧版本。实现代码如下:读取系统文件是否要更新,默认值为true SharedPreferences sp=getSharedPreferences( "config" , MODE_PRIVATE ); //拿到是否开启自动更新 boolean flag=sp.getBoolean("update", true); if(flag){ checkVersion(); }else{ System.out.println("不更新"); IntentUtils.startActivityDelayAndFinish(SplashActivity.this, MainActivity.class,2000);//延迟进入主界面为了显示动画 } 下面这段是读取服务器是否有新的版本要更新
/**
*访问网络 检查是否有最新版本下载的信息 * 连接网络是耗时操作,要放在子线程中操作。 */ private void checkVersion() { new Thread(){ public void run() { try { System.out.println("线程之中--------之中"); //获取URL对象 URL url=new URL(getString(R.string.serviceurl)); System.out.println("网络地址:"+url); //连接服务器 HttpURLConnection conn=(HttpURLConnection) url.openConnection(); //设置请求方式 conn.setRequestMethod("GET"); //设置请求超时时间 conn.setConnectTimeout(5000); //获得返回码 int code=conn.getResponseCode(); System.out.println("code的值-----"+code); if(code==HTTP_OK){ System.out.println("取数据成功------之中"); //获取返回的输入流 InputStream is=conn.getInputStream(); //把一个输入流转换成字符串, StreamUtils为一个工具类 String json=StreamUtils.readStream(is); JSONObject jsonobj=new JSONObject(json); int serviceversion=jsonobj.getInt("version"); String downLoadUrl=jsonobj.getString("downloadurl"); String desc=jsonobj.getString("desc"); //打印输出验证能否取到数据 System.out.println("version:-----"+serviceversion); System.out.println("downLoad:----"+downLoadUrl); System.out.println("version:-----"+desc); if(serviceversion>AppInfoUtils.getAppInfoNumber(getApplication())){ System.out.println("有新版本了,进入下载新版本"); //消息处理,传递更新信息 UpdateVersion data=new UpdateVersion(); data.serviceversion=serviceversion; data.downLoadUrl=downLoadUrl; data.desc=desc; Message msg=Message.obtain(); msg.obj=data; msg.what=NEED_UDPATE; handler.sendMessageDelayed(msg, 2000); }else{ System.out.println("版本一致,进入主界面"); IntentUtils.startActivityDelayAndFinish(SplashActivity.this, MainActivity.class, 2000); } } } catch (MalformedURLException e) { e.printStackTrace(); ToastUtils.show(SplashActivity.this, "URL路径错误"); } catch (IOException e) { e.printStackTrace(); ToastUtils.show(SplashActivity.this, "网络错误"); } catch (JSONException e) { e.printStackTrace(); ToastUtils.show(SplashActivity.this, "服务器配置信息错误"); } }; }.start(); }
检查到新的版本要下载更新啦
/** * 展示下载提示对话框,首先先引入xUtils的jar包到lib * @param msg */ public void showUpdateDialog(android.os.Message msg) { UpdateVersion data=(UpdateVersion) msg.obj; //弹出一个更新对话框 AlertDialog.Builder builder=new Builder(SplashActivity.this); builder.setTitle("升级更新!"); builder.setMessage(data.desc); builder.setPositiveButton("立刻升级", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //开源项目断点下载xUtils HttpUtils http=new HttpUtils(); final File file=new File(Environment.getExternalStorageDirectory(),"xxx.apk"); http.download(data.downLoadUrl, file.getAbsolutePath(), true, new RequestCallBack
这三步完成就可以进入手机的主界面了。
更多相关文章
- Android系统配置数据库注释(settings.db)
- 使用NetBeans搭建Android开发环境
- android studio Could not find com.android.support.constraint
- Andorid Dialog 示例【慢慢更新】
- android源码下载方式
- Android(安卓)SDK Manager无法更新的解决
- Android热更新框架Tinker无法更新?
- 【Android】Android(安卓)相关下载
- Android,一个思路实现APP版本更新