正文  高级教程 > APK程序信息 >

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

今天早晨起来看了皇马和塞维利亚的比赛,睡不着了,不错,6:2的比分确实是场进球盛宴,而圣卡西在上半场的几次精彩扑救异常关键。好了,闲话少扯,开始正题。改写了书上的一个小例子,判断手机是否支持安装程序的......

今天早晨起来看了皇马和塞维利亚的比赛,睡不着了,不错,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状态下,程序会完全推出。

最后,看一下程序效果图: