您的位置:首页 > 移动开发 > Android开发

判断手机是否支持程序安装(版本判断)

2011-12-18 08:06 399 查看
  今天早晨起来看了皇马和塞维利亚的比赛,睡不着了,不错,6:2的比分确实是场进球盛宴,
而圣卡西在上半场的几次精彩扑救异常关键。好了,闲话少扯,开始正题。
  改写了书上的一个小例子,判断手机是否支持安装程序的版本,在这段代码里,有获取系统版本号,获取程序版本号等功能。打开程序的时候,会跳出一个dialog,对用户进行提示,只是一个简单的demo,如果要在实际中应用,还需要修改。先把所有代码都贴出来,然后再分析下。代码比较简单:
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);

if(getApplicationInfo().targetSdkVersion<=Build.VERSION_CODES.ECLAIR)
{
showInfoDialog(false, getApplicationInfo().targetSdkVersion);
Log.v("@@@@@@", ""+Build.VERSION_CODES.ECLAIR);
}else{
showInfoDialog(true, getApplicationInfo().targetSdkVersion);
Log.v("@@@@@@", ""+Build.VERSION_CODES.ECLAIR);
}
}

private void showInfoDialog(Boolean bool,int version)
{
String str=bool?"support":"not support";
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setMessage("targetSdkVersion is "+version +" "+str);
if(!bool)
{

builder.setNeutralButton("退出", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
finish();
}
});
}else{
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
}

AlertDialog alert=builder.create();
alert.show();
}

private void exitActivity()
{
android.os.Process.killProcess(android.os.Process.myPid());
}

@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
exitActivity();
}
}布局什么的都挺简单的,不多说,先看下功能代码:
if(getApplicationInfo().targetSdkVersion<=Build.VERSION_CODES.ECLAIR)
{
showInfoDialog(false, getApplicationInfo().targetSdkVersion);
Log.v("@@@@@@", ""+Build.VERSION_CODES.ECLAIR);
}else{
showInfoDialog(true, getApplicationInfo().targetSdkVersion);
Log.v("@@@@@@", ""+Build.VERSION_CODES.ECLAIR);
}在这里是获得程序版本号,然后和ECLAIR(5)进行比较,这里是使用了一个定值。因为我的模拟器使用的是2.2的版本,建的项目也是2.2,所以使用了一个小于2.2版本eclair.如果想获取SDK版本,可以使用一下代码:
android.os.Build.VERSION.SDK + "," + android.os.Build.VERSION.RELEASE
前半段语句是获取SDK版本号,后半段是获取系统版本(api-level)。如果使用上面代码比较的话就应该是:
if(getApplicationInfo().targetSdkVersion<=Build.VERSION.SDK)
这样子是程序版本号和手机系统版本号进行比较。
再接着看showInfoDialog这个函数:
private void showInfoDialog(Boolean bool,int version)
{
String str=bool?"support":"not support";
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setMessage("targetSdkVersion is "+version +" "+str);
if(!bool)
{

builder.setNeutralButton("退出", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
finish();
}
});
}else{
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
}

AlertDialog alert=builder.create();
alert.show();
}  函数需要传进去两个参数,一个是是否能够安装,另外一个是传的版本号,如果能够安装的话,dialog显示确定按钮,否则显示推出按钮,比较简单。
  最后是退出代码:
private void exitActivity()
{
android.os.Process.killProcess(android.os.Process.myPid());
}

@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
exitActivity();
}
  这样写,在onpause状态下,程序会完全推出。
  最后,看一下程序效果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android dialog 手机 版本