av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

Android如何讓APP無法在指定的系統(tǒng)版本上運(yùn)行(實(shí)現(xiàn)方法)

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

隨著市面上越來越多三方APP的出現(xiàn),某些手機(jī)廠商也開始對(duì)這些APP進(jìn)行了安裝限制或者運(yùn)行限制,或者三方APP自身的版本過低,無法被特定的系統(tǒng)版本所支持。

今天我將要模擬實(shí)現(xiàn)一個(gè)“由于APP自身版本過低、導(dǎo)致無法在當(dāng)前的系統(tǒng)版本上運(yùn)行”的功能效果。

實(shí)現(xiàn)思路如下:

要獲得APP的目標(biāo)運(yùn)行版本,也要知道系統(tǒng)的編譯版本 通過版本比較,在進(jìn)入該APP時(shí),給用戶做出“不支持運(yùn)行”的提示 用戶確認(rèn)提示后,直接退出該APP

關(guān)鍵點(diǎn)是 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);// 我們假設(shè)這個(gè)APP的目標(biāo)運(yùn)行版本不高于 API Level 26 if (appTargetSdkVersion <= Build.VERSION_CODES.O) { showNotSupportDialog(appTargetSdkVersion); } } private void showNotSupportDialog(int version) { new AlertDialog.Builder(this).setMessage('該APP的目標(biāo)運(yùn)行版本是 ' + version + ',低于手機(jī)當(dāng)前的版本,不支持運(yùn)行!').setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 退出程序 finish(); }}).create().show(); }}

2、在AndroidManifest.xml中需要定義 uses-sdk 這個(gè)標(biāo)簽的 targetSdkVersion 屬性:

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

注意:

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

Android如何讓APP無法在指定的系統(tǒng)版本上運(yùn)行(實(shí)現(xiàn)方法)

3、效果圖如下:

Android如何讓APP無法在指定的系統(tǒng)版本上運(yùn)行(實(shí)現(xiàn)方法)

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

Android如何讓APP無法在指定的系統(tǒng)版本上運(yùn)行(實(shí)現(xiàn)方法)

可以看到:

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

最后再賦值給 applicationInfo對(duì)象的:

pkg.applicationInfo.targetSdkVersion = targetSdkVersion

到此這篇關(guān)于Android如何讓APP無法在指定的系統(tǒng)版本上運(yùn)行的文章就介紹到這了,更多相關(guān)android app無法運(yùn)行內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 国产精品黄| 乱色av| 国产亚洲一区二区三区 | 在线成人免费视频 | 水蜜桃一区二区 | 精品一二区 | 国产伦理一区二区 | 一级毛片在线免费观看 | 日本在线视频一区二区 | 欧美亚洲 | 中文字幕有码在线 | 视频在线观看一区 | 美女网站视频在线观看 | 国产日产av | 日本一区二区高清 | 亚洲激情五月 | 国产中文字幕视频 | 亚洲第一毛片 | www.99热 | 久草久草| 操出白浆视频 | 日韩视频在线观看免费 | 91久久国产综合久久91精品网站 | 国产视频在线观看视频 | 久久黄色录像 | 午夜亚洲精品 | 视频爱爱免费视频爱爱太爽 | 午夜aaa | 六月激情| 精品久久网站 | 成人不卡 | 不卡av网站| 中文字幕黄色 | 成人免费毛片嘿嘿连载视频 | 九九天堂 | www.色网| 亚洲成人一区 | 黄色一级视频免费看 | 2014天堂网 | 狠狠网| 高清国产mv在线观看 |