我希望我的应用程序仅在Kitkat版本上运行,而不是在任何其他Android版本上运行(既不旧也不是更新版本),我在app level build.gradle文件中做了以下更改:
android {
compileSdkVersion 19
defaultConfig {
applicationId "com.app.tempapp"
minSdkVersion 19
targetSdkVersion 19
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
但这不起作用..
答案 0 :(得分:1)
您需要在两个级别处理它:
您可以使用android:maxSdkVersion。这是一个整数,指定应用程序运行的最大API级别。如果应用程序的maxSdkVersion
属性低于系统本身使用的API级别,则系统将不允许安装该应用程序。
将此属性的值设置为19。
defaultConfig {
minSdkVersion 19
maxSdkVersion 19
targetSdkVersion 19
...
}
注意:强>
此方法仅在用户通过Play商店安装应用时才有效。
Android的未来版本(超越Android 2.0.1)将不再检查 或在安装期间强制执行maxSdkVersion属性 重新验证。 Google Play会继续将该属性用作 但是,当向用户提供可用的应用程序时,过滤器 下载。
唯一的选择是在代码中强制执行它。但缺点是,用户将能够安装应用程序,但它只会停止自己。您可以按照以下方式优雅地处理它:
if (android.os.Build.VERSION.SDK_INT != android.os.Build.VERSION_CODES.KITKAT){
final AlertDialog compatibility = new AlertDialog.Builder(this).setMessage("This app only be executed on Kitkat version")
.setPositiveButton("OK", null).create();
compatibility.setCancelable(false);
compatibility.setCanceledOnTouchOutside(false);
compatibility.show();
compatibility.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
compatibility.dismiss();
finish();
}
});
}
在onResume()
中添加此代码。您可能希望添加一些额外的检查,以防用户最小化应用程序并再次打开,并在onDestroy()
中禁用对话框以避免因内存泄漏而崩溃
答案 1 :(得分:0)
解决方案1(我喜欢这个)
尝试在app启动时阻止
if (android.os.Build.VERSION.SDK_INT != android.os.Build.VERSION_CODES.KITKAT){
Log.i("No support", "This version is not supported.")
finish();
}
解决方案2
将minSdkVersion
和maxSdkVersion
两者保持为19,如此
defaultConfig {
applicationId "com.app.tempapp"
minSdkVersion 19
targetSdkVersion 19
maxSdkVersion 19
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
答案 2 :(得分:0)
仅在kitkat中运行的另一种方法是在第一个活动
中的代码下面写的 if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
//finish activity
}