`
xpchou
  • 浏览: 15510 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

safe01

阅读更多
1. 一般应用程序 都会有一个splash的界面 (初始化logo界面) 
   ---展现产品logo 提升产品的知名度.
   ---做一些初始化的操作. (初始化数据库,文件的拷贝,配置信息的生成).
   ---提供产品的用户体验. (根据系统的时间和日期展现不同的logo,提高产品的用户体验).
   ---连接服务器 获取最新的版本.

2. 应用程序源代码的组织结构
   一.
   默认包 activity
   .ui.stub
   .db 数据库
   .db.dao 数据库的访问类包
   .adapter 数据适配器的包
   .service 系统的服务(android 组件)
   .receiver 系统的广播接受者
   .provider 系统的内容提供者
   .engine 获取数据的服务.
   .util 程序的工具类
   .domain 业务bean
   二.
      采用功能逻辑进行模块的划分.

3.intent.addCategory("android.intent.category.DEFAULT"); 意图的附加信息

4.两种上下文:
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
对话框 是activity的一部分. 对话框是挂载在activity上


5.padding 和 margin的区别
padding 控件里面的内容(文本) 距离控件的边框的距离
margin  控件与控件之间的距离

android:gravity= 控件里面的内容的位置
android:layout_gravity= 控件在父控件里面的位置

6. android:listSelector="@android:color/transparent"指定listview 或者 gridview点击显示的背景颜色
 
7.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  inflater = LayoutInflater.from(context);

8.在广播接受者里开启的activity,一定要告诉系统新开启的activity需要创建任务栈。
safeintent.setFlags(intent.FLAG_ACTIVITY_NEW_TASK);

安全卫士:步骤
一,显示logo主界面:
1.新建一个SplashActivity用于显示logo,创建布局logo左上角显示版本号,中间显示一个进度条。相对布局
(应用程序的版本号,在清单文件中有配置)
2.定义方法用于获取当前版本号,通过
PackageManager pm = getPackageManager();  获取系统的包管理的服务
PackageInfo info = pm.getPackageInfo(getPackageName(),0); //获取当前包的信息 ,getPackageName()获取当前应用的包名
info.versionName(); //获取当前应用程序的版本名称。
3.在logo的activity里显示这个版本名称。

二,提示程序新版本升级信息
1.分析:联网更新的话,要求服务器至少提供(最新的版本号,新版本的描述信息,新版本的下载路径)
2.在tomcat根路径下建立,info.xml
<info>
<version>
<description>
<apkurl>
3.清单文件中添加网络权限,然后连接服务器获取最新的版本号,连接服务器慢,所以不能把连接服务器写在主线程,
新建CheckVersionTask线程实现runnable接口,建立子线程,run方法里连接服务器,url地址写在资源文件下value包下新建的config.xml配置文件里,
4.建立HttpURLConnection连接,获取连接的输入流,新建UpdataInfoParser解析输入流,把信息存入新建的一个UpdateInfo的javabean里。
5.在UpdataInfoParser里建立方法用于解析输入流,用pool解析。
6.在SplashActivity里,用getVersion()和解析后的版本号对比,版本相同进入主界面,版本不同,弹出来对话框。
7.建立Handler由子线程向主线程发送消息。Message msg = Message.obtain(); msg.what=NEED_UPDATE. 抛出异常的话,更新失败 UPDATE_ERROR
8.主线程收到消息,判断收到消息的类型,NEED_UPDATE的话,建立对话框
AlertDialog.Builder builder = new Builder(getApplicationContext());
builder.setTitle("升级提醒");
builder.setMessage(updataInfo.getDescription());

builder.setNegativeButton("取消", new OnClickListener() {

public void onClick(DialogInterface dialog, int which) {
Log.i(TAG, "进入主界面");
loadMainUI();
}
});
builder.setPositiveButton("升级", new OnClickListener() {

public void onClick(DialogInterface dialog, int which) {
Log.i(TAG, "下载" + updataInfo.getApkurl() + "的文件并安装");
// 开启子线程 下载新的apk
pd = new ProgressDialog(SplashActivity.this);
pd.setMessage("正在下载新的apk");
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.show();
new Thread() {
public void run() {
downLoadFile();
}

}.start();
}
});
builder.create().show();
break;

9.启动CheckVersionTask,检查代码逻辑成功是否


10.新建mainActivity,在splashactivity里建立方法用于进入mainactivity,在升级对话框的取消按钮调用该方法,测试
11..定义一个颜色界面的动画,用于控制splash的从半透明到不透明的过程。
AlphaAnimation aa = new AlphaAnimation(0.4f, 1.0f);
aa.setDuration(2000);
rl_splash.startAnimation(aa);
二,自动下载更新apk
1.splash界面连接服务器获取版本号的时间,小于两秒时,让该线程sleep。这样让用户能有更好的体验,可以看到splash界面。
2.tomcat服务器下建立new.apk文件,用于下载。开启子线程下载
3.新建DownloadService类,建立方法用于从服务器下载new.apk,下载完返回file对象
4.下载的时候显示进度条。ProgressDialog pd; pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);显示进度的进度条。
pd = new ProgressDialog(SplashActivity.this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMessage("正在下载新的apk");
pd.show();
pd.dismiss();
pd.setMax(max);
pd.setProgress(total);

5.安装apk,开启一个意图的activity
   <intent-filter> <action android:name="android.intent.action.VIEW" />
* <category android:name="android.intent.category.DEFAULT" /> <data
* android:scheme="content" /> <data android:scheme="file" /> <data
* android:mimeType="application/vnd.android.package-archive" />
* </intent-filter>
三,建立主界面的layout,gridview
1.创立MainUIAdapter
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
2.建立自动更新布局。settingCenter.xml ,建立<CheckBox>
3.建立settingCenterActivity,给CheckBox设置监听器,自动更新的信息存入sharedPreferences
4.再在MainActivity里,给设置中心设置一个监听器,setOnItemClickListener 用来打开设置中心的activity
5.再在splashActivity里的对话框,设置是否要提示自动更新,是就连接网络更新,否则休眠2秒,再进入主界面。

四,手机防盗
1.分析,判断用户是否已经设置过了 密码,如果没设置密码 进入密码设置对话框
        如果设置过了密码 ,进入正常的对话框
2.建立first_entry_dialog对话框。
AlertDialog.Builder builder = new Builder(this);
View view = View.inflate(this, R.layout.first_entry_dialog, null);

builder.setView(view);
dialog = builder.create();
分享到:
评论

相关推荐

    360safe_cq.exe

    最新版本360安全卫士官方正式版,自测可用,适用于windows xp、windows 7等各类操作系统

    SASE让云端更SAFE.pdf

    01 Hillstone@RSAC 02 RSAC 2020 观感 03 SASE让云端更加SAFE 04 SASE Players

    Safe3网站后门扫描工具 v4.1.1.zip

    Safe3网站后门扫描工具是国内率先推出的一款绿色完全免费的web代码查杀软件,独创的智能扫描技术能有效扫描asp、php、jsp、aspx等...Safe3网站后门扫描工具 v4.1.1更新内容: 1.大幅减少误报 2.增强webshell查杀功能

    sei-cert-c-coding-standard-2016-v01.pdf

    C 编码规范,描述一些规范,实际编码中注意的问题. SEI CERTC Coding StandardRules for Developing Safe, Reliable, and Secure Systems

    [ 应急响应工具箱 ] Webshell查杀.rar

    [ 应急响应工具箱 ] webshell查杀工具 包含如下文件 Sangfor_Webshell查杀工具 火绒剑独立版 v2021.06.01 d_safe_2.1.7.2_0107 sysdiag-full-5.0.73.1-2023.02.06.1 火绒剑独立版 v2021.06.01

    MySQL中参数sql_safe_updates在生产环境的使用详解

    前言 在应用 BUG或者 DBA误操作的情况下,会发生对全表进行更新:update delete 的情况。MySQL提供 sql_safe_...CREATE TABLE working.test01 (id INT NOT NULL AUTO_INCREMENT,NAME VARCHAR(20),age INT,gmt_create

    01-linux server setup

    01-linux server setup 02-linux safe config 03-linux tcpip 04-linux web server 05-linux ftp server 06-linux mail server 07-linux dns 08-linux proxy server 注:本人珍藏品,贡献给大伙了。

    -Study-Algorithm-2021

    01-01。 Number.MAX_SAFE_INTEGER number是可以安全用作number类型的가장 큰 값 。 当您需要使用最大number进行初始化时使用。 示例:06odd.html const largestNumber = Number . MAX_SAFE_INTEG

    MySQL笔记-Linux平台中MySQL的启动和关闭

    mysqld_safe --default=/u01/mysql3306/my.cnf & mysqld_mutil start 这个d主要指:Daemon 在Linux中主要推荐: mysqld_safe --default-file=/u01/mysql3306/my.cnf & 主要是mysqld_safe脚本会监控mysqld,当程

    matlab读取脉搏波代码-satellite-plot:了解哥白尼前哨卫星数据

    safe.lisp 解析雷达0级数据集,将包标头存储为csv,解码压缩数据 -- gen.lisp code.py 显示带有qt的表,解码来自csv的子转换数据,解码tx脉冲信息 safe.lisp gen-cpp-safe.lisp safe.cpp 与safe.lisp相同,但在c ++...

    ICAO ANEX17 icao 附件17

    * Annex 01 - Personnel Licensing * Annex 02 - Rules of the Air * Annex 03 - Meteorological Service for International Air Navigation * Annex 04 - Aeronautical Charts * Annex 05 - Units of Measurement ...

    如何查看MySQL连接的root密码

    1.首先我们进到MySQL的bin目录下 ➜ cd /usr/local/mysql/bin 2.切换成root身份 ...sh-3.2# 2017-01-03T15:40:10.6NZ mysqld_safe Logging to '/usr/local/mysql/data/yzydeMacBook-Pro.local.err'. 2017-01-03T1

    WnMp3.0,nginx+php+mariaDB

    Latest Update : 01/April/2013 Latest Version : nasty chicken installer edition (she is mad due to lack of donations) : Nginx 1.2.7 MariaDB 5.5.30 PHP 5.4.13 (Non Thread Safe + FastCGI) ...

    Nepenthes: iOS&macOS Enterprise App Development Solution

    Nepenthes simplifies development process and shortens development lifecycle,it ensures the communication layer safe and solid,let your team focus only on business logic. Based on Nepenthes,your ...

    服务器重启不能启动的几种常见解决方法

    Safe mode: 只加载基本的服务和驱动。 用于解决安装了额外的硬件驱动或软件后,导致系统不能正常启动的情况。选择Safe mode,若能进入操作系统,卸载额外的驱动或软件。 b.Last known good: 启动上一次的成功配置。...

    值类型与引用类型理论内容.part01.rar

    详细地讲授Web Service及其应用和相关的安全性问题、WSE(Web Services Enhancements)、SOAP、WSDL、UDDI、Windows Service、VSS(Visual Source Safe)。讲授用户控件和第三方控件的开发和使用。学习HTML、XML、...

    [SQL] SQL语言艺术 (英文版)

    In The Art of SQL, author and SQL expert Stephane Faroult argues that this "safe approach" only leads to disaster. His insightful book, named after Art of War by Sun Tzu, contends that writing quick ...

    E00 数据格式说明

    # Graeme Hiebert May 01, 1997 Added code to handle TXT subfile. # Graeme Hiebert Jun 03, 1997 Added multiple label cover # # attributes to POLY_CENTROID_2 # and POLY_CENTROID_2_DOUBLE. # Graeme ...

    美敦力PB560呼吸机资料三15.5MB

    Medtronic PB560 Ventilator System – Release 3.0 (04/01/2020) (.zip) Depending on the anti-virus software you utilize, certain files within the source code may get flagged as “suspicious” because of...

    银灿科技IS902量产工具Innostor MPTool V2.02.00.95中文版.rar

    第 6 項次.V003 2010.09.01 內容修訂V004 2010.09.291. [Config]頁面新增 Disk Type, Safe Mode 與 Force Initial.2. [Config]頁面的 Serial Number(start)開放修改.3. [Information]頁面新增”...

Global site tag (gtag.js) - Google Analytics