写Splash界面
1.展示公司的logo,(展示版本号)
*展示logo,广告,宣传 done
*检测出版本 done
*初始化项目 ,拷贝assert 数据文件到 指定内部目录,一般拷贝到
/data/data//databases/
2.实现
**界面设计
**检测版本(服务器有新版本,弹出框提示是否更新,下载apk再进入)
展示Splash界面两秒
public class SplashActivity extends Activity {
private static final int MSG_SHOW_DIALOG = 1;// 提示升级要用的对话框标记
private static final int MSG_ENTER_HOME = 2;// 进入主界面的标记
private static final int MSG_SERVER_ERROR = 3;// 访问服务端错误的标记
private TextView bTextView;// 版本显示的
private ProgressBar pb;// 进度条
private Context context;// 上下文
private int newVersipnCode;// 服务端版本号
private String APK_URL;// apk下载地址
private String des;// 服务端版本描述
HttpUtils client = new HttpUtils();
Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_SHOW_DIALOG:
showUpdateDialog();
break;
case MSG_ENTER_HOME:
enterHome();
break;
case MSG_SERVER_ERROR:
enterHome();
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
context = this;
// 初始化
initView();
// 依据用户的配置来检验是否需要更新 ,默认是更新版本
if (CacheUtils.getBoolean(context, CacheUtils.APK_UPDATE, true)) {
checkupdate();// 检测更新
} else {
new Thread() {
public void run() {
SystemClock.sleep(2000);// 休眠两秒
// 放到ui队列里面去
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
enterHome();
}
});
};
}.start();
}
}
// 检测服务端是否有新版本 连接服务器 ,开辟子线程
private void checkupdate() {
new Thread() {
// 访问网络
public void run() {
long startTime = System.currentTimeMillis();// 连接网络的开始时间
Message message = new Message();
try {
// 建立连接 设置请求
URL url = new URL(Constants.SERVER_VERSION_URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
int resultCode = connection.getResponseCode();
// 访问正常
if (resultCode == HttpURLConnection.HTTP_OK) {
InputStream iStream = connection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(iStream));
String jsonResult = bufferedReader.readLine();
// 解析json数据
JSONObject jsonObject = new JSONObject(jsonResult);
newVersipnCode = jsonObject.getInt("code");
APK_URL = jsonObject.getString("apkurl");
des = jsonObject.getString("des");// 版本描述
// 比较服务端的版本号
if (newVersipnCode > getVersionCode()) {
// 提示有新版本,是否要更新
message.what = MSG_SHOW_DIALOG;
// Dialog dialog=new
// Dialog(context).setTitle("是否更新").show();
} else {
// 没有新版本 直接进入home界面
message.what = MSG_ENTER_HOME;
// enterHome();
}
} else {
// 访问服务端异常 进入homeactivity
message.what = MSG_SERVER_ERROR;
// enterHome();
}
} catch (Exception e) {
// TODO Auto-generated catch block
// 访问服务端异常 进入homeactivity
// message.what = MSG_SERVER_ERROR;
e.printStackTrace();
} finally {
long duration = System.currentTimeMillis() - startTime;// 访问网络所耗时间
if (duration < 2000) {
SystemClock.sleep(2000 - duration);
}
// 向ui线程发消息
handler.sendMessage(message);
}
};
}.start();
}
private void initView() {
// TODO Auto-generated method stub
bTextView = (TextView) findViewById(R.id.banbentext);
pb = (ProgressBar) findViewById(R.id.progressBar1);
bTextView.setText("版本号:" + getVersionCode());
}
private int getVersionCode() {
// TODO Auto-generated method stub
PackageManager packageManager = getPackageManager();
/**
* 取得包名 package:当前应用的包名
*
*/
try {
PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), PackageManager.GET_ACTIVITIES);
return packageInfo.versionCode;// 取得版本号
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
// 跳转到下一个页面:homeActivity
private void enterHome() {
// TODO Auto-generated method stub
Intent intent = new Intent(this, HomeActivity.class);
startActivity(intent);
finish();
}
// 显示是否要升级的对话框
private void showUpdateDialog() {
// TODO Auto-generated method stub
ToastUtils.show(this, "有新的版本" + newVersipnCode + "可以更新");
new AlertDialog.Builder(context).setTitle("新版本号" + newVersipnCode).setIcon(R.drawable.ic_logo).setMessage(des)
.setPositiveButton("升级", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
downloadAPK();
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
// 进入homeActivity
enterHome();
}
}).create().show();
}
// 下载apk
private void downloadAPK() {
// TODO Auto-generated method stub
}
}
主要代码如上
服务器的json数据如下
{"code":6,"apkurl":"http://10.0.2.2:8080/phoneSafe.apk","des":"秋季温情版,下载有机会获取滴滴快车卷一张"}