仅在Kitkat上运行我的应用程序

时间:2018-06-11 06:20:52

标签: android

我希望我的应用程序仅在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'
        }
    }
}

但这不起作用..

3 个答案:

答案 0 :(得分:1)

您需要在两个级别处理它:

Google Play商店等级

您可以使用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

minSdkVersionmaxSdkVersion两者保持为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
 }