我正在使用Android 2.3.3 API构建应用。我需要认识到方向的变化并执行一些动作。所以我在Android Manifest中添加了以下内容,
android:configChanges="orientation|keyboardHidden
我重写方法
public void onConfigurationChanged(Configuration newConfig)
它在Android 2.3.3上运行完美。但是当我在4.1.2上安装相同的应用程序(使用2.3.3 API构建)时,不会调用onConfigurationChanged()。我在网上搜索解决方案,人们建议在android清单中添加以下内容。
android:configChanges="orientation|keyboardHidden|screenSize"
如果我使用上述语句构建应用程序并使用4.1.2 API构建,则它在4.1.2设备上运行良好。但是我无法在2.3.3上安装它。 2.3.3 API没有“screenSize”选项。所以为了支持两者,我该怎么办?
谢谢,Karthik
答案 0 :(得分:2)
嗨,看看我的AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="10"
android:maxSdkVersion="16"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".ConfigrationTask"
android:configChanges="orientation|keyboardHidden"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
答案 1 :(得分:1)
仅仅因为您针对某个API级别进行编译或目标,并不意味着您无法明确支持较低的API级别。尝试在清单中添加以下内容。我从您问题中提到的版本中获取了级别。
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="16"/>
答案 2 :(得分:1)
仅供参考我在下面使用的代码:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
Toast.makeText(getBaseContext(),"On Config Change LANDSCAPE", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getBaseContext(),"On Config Change PORTRAIT", Toast.LENGTH_LONG).show();
}
}
答案 3 :(得分:0)
请注意您的情况: config changes 屏幕方向已更改 - 用户已旋转设备。 注意:如果您的应用程序的目标是API级别13或更高级别(由minSdkVersion和targetSdkVersion属性声明),那么您还应该声明“screenSize”配置,因为当设备在纵向和横向之间切换时它也会发生变化。
谢谢