随着市面上越来越多三方APP的出现,某些手机厂商也开始对这些APP进行了安装限制或者运行限制,或者三方APP自身的版本过低,无法被特定的系统版本所支持。
今天我将要模拟实现一个"由于APP自身版本过低、导致无法在当前的系统版本上运行"的功能效果。
实现思路如下:
要获得APP的目标运行版本,也要知道系统的编译版本
通过版本比较,在进入该APP时,给用户做出"不支持运行"的提示
用户确认提示后,直接退出该APP
关键点是 targetSdkVersion 的使用,源码如下:
1、主Activity
public class TargetSdkVersionDemo extends Activity { @Override protected void onCreate(Bundle onSavedInstance) { super.onCreate(onSavedInstance); setContentView(R.layout.target_sdk_version_demo); int appTargetSdkVersion = getApplicationInfo().targetSdkVersion; Log.i("TargetSdkVersionDemo", "targetsdkversion " + appTargetSdkVersion); // 我们假设这个APP的目标运行版本不高于 API Level 26 if (appTargetSdkVersion <= Build.VERSION_CODES.O) { showNotSupportDialog(appTargetSdkVersion); } } private void showNotSupportDialog(int version) { new AlertDialog.Builder(this) .setMessage("该APP的目标运行版本是 " + version + ",低于手机当前的版本,不支持运行!") .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 退出程序 finish(); } }) .create() .show(); }}
2、在AndroidManifest.
<uses-sdk android:targetSdkVersion="25" />
注意:
如果在 app 目录下的 build.gradle 文件中定义了 targetSdkVersion,则会覆盖 AndroidManifest中的值,源码中有说明:
3、效果图如下:
我们注意到程序中使用的是 getApplicationInfo().targetSdkVersion,说明这个变量是 ApplicationInfo.java 的成员变量,这个值是在安装APK的过程中、由系统服务 PackageManagerService 解析赋值的,解析的源码位于 frameworks\base\core\java\android\content\pm\PackageParser.java 中:
可以看到:
先解析 TAG_USES_SDK(uses-sdk)
再解析属性名 targetSdkVersion 以及 minSdkVersion 的值
最后再赋值给 applicationInfo对象的:
pkg.applicationInfo.targetSdkVersion = targetSdkVersion
本文由博客群发一文多发等运营工具平台 OpenWrite 发布
原文转载:http://www.shaoqun.com/a/521243.html
好东东网:https://www.ikjzd.com/w/1238
谷歌趋势:https://www.ikjzd.com/w/397
随着市面上越来越多三方APP的出现,某些手机厂商也开始对这些APP进行了安装限制或者运行限制,或者三方APP自身的版本过低,无法被特定的系统版本所支持。今天我将要模拟实现一个"由于APP自身版本过低、导致无法在当前的系统版本上运行"的功能效果。实现思路如下:要获得APP的目标运行版本,也要知道系统的编译版本通过版本比较,在进入该APP时,给用户做出"不支持运行"的提示用户确认提示后,直接退出该AP
tenso:tenso
敏思达:敏思达
卖家:神操作!每一个订单竟然都多赚13.5美金:卖家:神操作!每一个订单竟然都多赚13.5美金
怎么避免做亚马逊不被封店铺?:怎么避免做亚马逊不被封店铺?
Shopee 11.11大促狂销7000万件商品,跨境单量暴涨至9倍!:Shopee 11.11大促狂销7000万件商品,跨境单量暴涨至9倍!