久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

Android如何讓APP無法在指定的系統版本上運行(實現方法)

瀏覽:23日期:2022-09-20 18:21:54

隨著市面上越來越多三方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.xml中需要定義 uses-sdk 這個標簽的 targetSdkVersion 屬性:

<uses-sdk android:targetSdkVersion='25' />

注意:

如果在 app 目錄下的 build.gradle 文件中定義了 targetSdkVersion,則會覆蓋 AndroidManifest中的值,源碼中有說明:

Android如何讓APP無法在指定的系統版本上運行(實現方法)

3、效果圖如下:

Android如何讓APP無法在指定的系統版本上運行(實現方法)

我們注意到程序中使用的是 getApplicationInfo().targetSdkVersion,說明這個變量是 ApplicationInfo.java 的成員變量,這個值是在安裝APK的過程中、由系統服務 PackageManagerService 解析賦值的,解析的源碼位于 frameworksbasecorejavaandroidcontentpmPackageParser.java 中:

Android如何讓APP無法在指定的系統版本上運行(實現方法)

可以看到:

先解析 TAG_USES_SDK(uses-sdk) 再解析屬性名 targetSdkVersion 以及 minSdkVersion 的值

最后再賦值給 applicationInfo對象的:

pkg.applicationInfo.targetSdkVersion = targetSdkVersion

到此這篇關于Android如何讓APP無法在指定的系統版本上運行的文章就介紹到這了,更多相關android app無法運行內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
主站蜘蛛池模板: 河南省| 泽普县| 牙克石市| 锦屏县| 南昌县| 厦门市| 乌苏市| 克东县| 贺兰县| 洛扎县| 鹤岗市| 依兰县| 县级市| 星座| 柘荣县| 阳曲县| 治多县| 兴和县| 长沙县| 瑞安市| 年辖:市辖区| 苏尼特右旗| 宝山区| 贵南县| 南汇区| 兰考县| 元氏县| 渑池县| 聂拉木县| 柞水县| 金坛市| 禄丰县| 墨江| 台东县| 桂阳县| 海淀区| 富源县| 乌苏市| 庄浪县| 龙陵县| 凌云县|