android:targetSdkVersion相关

最近做一个应用时,在android4.0以下版本中,显示都正常。但是到了4.0以上的版本,那些没有物理按键,像BACK, HOME,MENU键都是虚拟按键时,发现了个奇怪的问题, MENU键不见了…… 开始还以为是代码里的android:theme="@android:style/Theme.NoTitleBar" 、getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);这些全屏等引起的。纠结好久,才听说是由AndroidMainfest.xml文件里的

   <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="16" /> 和project.properties文件里的target=android-17这几个和SDK版本相关的东西引起的。反复测试了无数遍,终于找出问题所在,原来是android:targetSdkVersion这个引起的,跟android:minSdkVersion和target=android-17无关。  先来讲下这三个值的作用

android:minSdkVersion 这个是指你的应用,所要求的目标机器上SDK的最低版本。如果这里设置了android:minSdkVersion="8"的话,那么也就是说,你的应用,要求最低的SDK是android2.2,低于这个版本的SDK的机子上,你的应用跑不起来,也就是说不支持比android2.2还低的版本。

target=android-17 这个是指你当前编译时用到的SDK的版本, android-17 也就是对应的android4.2

android:targetSdkVersion="16",这个才是罪魁祸首。它的意思是,你的应用的目标版本是16,也就是android4.1.2。 如果这里设置了,那么表示,你的应用,在android4.1.2的SDK上测试了没问题了,MENU键之类的,都能正常显示出来,那么,把你的应用装到4.1.2的SDK的机子上时,就会直接用android4.1.2上对MENU按建的处理方法,也就是用虚拟键,而没有物理键。 但是实际是你的应用在4.1.2上,MENU虚拟键是显示不出来的,所以就出问题了。 解决的办法就是,将android:targetSdkVersion值改为4.1以下,也就是改为15以下,因为在android4.0以下的版本中,都是有MENU键的,所以如果检测到这个值为15以下时,会强制显示MENU键。当然,这个值,最好不要去设,也就是直接删掉这行,在ANdroidMainfest.xml里,改成如下所示:

   <uses-sdk android:minSdkVersion="8"/> 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值