Android编程实战--安全卫士(1)

本文详细介绍了Android编程实战中安全卫士的实现,涵盖了代码组织结构、PackageManager获取应用信息、网络数据获取与XML解析、Handler消息机制、主界面及设置界面的设计与自定义组件的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 代码组织结构. 两种方式.


1. 按照业务逻辑 组织代码.  

   
    会议         com.swust.metting
    财务         com.swust.money
    人员管理     com.swust.manage
    

2. 按照代码的类型组织包结构.

   
   界面         com.swust.mobilesafe.activities
   自定义控件   com.swust.mobilesafe.ui
   业务逻辑     com.swust.mobilesafe.engine
   工具类                          .utils
   服务                            .service
   广播接受者                      .receiver
   持久化  .db


3.界面效果

   

    

二.PackageManager 获取应用程序的清单文件的信息


/**
	 * 获取应用程序的版本号
	 * 
	 * @return
	 */
	private String getVersion() {
		PackageManager pm = getPackageManager();
		try {
			PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), 0);
			return packageInfo.versionName;
		} catch (NameNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return "";
		}
	}

三.使用URL HttpUrlConntion 获取网络信息,通过pull解析器  解析XML 

1.线程类run方法

private class CheckVersionTask implements Runnable {
		private Message msg = Message.obtain();
		private long startTime = System.currentTimeMillis();
		@Override
		public void run() {
			// TODO Auto-generated method stub
			try {
				URL url = new URL(getResources().getString(R.string.path));
				HttpURLConnection conn = (HttpURLConnection) url
						.openConnection();
				conn.setConnectTimeout(5000);
				conn.setRequestMethod("GET");

				int code = conn.getResponseCode();
				if (code == 200) {
					
					InputStream in = conn.getInputStream();
					updateinfo = UpdateInfoPaser.getUpdateInfo(in);
					
					if (updateinfo == null) {
						msg.what = PASER_ERROR;
					} else {
						msg.what = PASER_SUCCESS;
					}
				} else {
					msg.what = SERVER_ERROR;
				}
			} catch (MalformedURLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				msg.what = URL_ERROR;

			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				msg.what = IO_ERROR;
			}  finally {
				long endTime = System.currentTimeMillis();
				long dTime = endTime -startTime;
				if(dTime<2000){
					try {
						Thread.sleep(2000-dTime);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				handler.sendMessage(msg);
			}
		}
	}

2.创建业务逻辑类来解析xml

public class UpdateInfoPaser {

	/**
	 * 解析更新的xml
	 * 
	 * @param in
	 *            xml 文件流
	 * @return
	 */
	public static UpdateInfo getUpdateInfo(InputStream i
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值