Android如何讓APP無(wú)法在指定的系統(tǒng)版本上運(yùn)行(實(shí)現(xiàn)方法)
隨著市面上越來(lái)越多三方APP的出現(xiàn),某些手機(jī)廠商也開(kāi)始對(duì)這些APP進(jìn)行了安裝限制或者運(yùn)行限制,或者三方APP自身的版本過(guò)低,無(wú)法被特定的系統(tǒng)版本所支持。
今天我將要模擬實(shí)現(xiàn)一個(gè)“由于APP自身版本過(guò)低、導(dǎo)致無(wú)法在當(dāng)前的系統(tǒng)版本上運(yùn)行”的功能效果。
實(shí)現(xiàn)思路如下:
- 要獲得APP的目標(biāo)運(yùn)行版本,也要知道系統(tǒng)的編譯版本
- 通過(guò)版本比較,在進(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中的值,源碼中有說(shuō)明:

3、效果圖如下:

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

可以看到:
- 先解析 TAG_USES_SDK(uses-sdk)
- 再解析屬性名 targetSdkVersion 以及 minSdkVersion 的值
最后再賦值給 applicationInfo對(duì)象的:
pkg.applicationInfo.targetSdkVersion = targetSdkVersion
到此這篇關(guān)于Android如何讓APP無(wú)法在指定的系統(tǒng)版本上運(yùn)行的文章就介紹到這了,更多相關(guān)android app無(wú)法運(yùn)行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android 簡(jiǎn)單的圖片查看器源碼實(shí)現(xiàn)
本篇文章主要介紹了Android 簡(jiǎn)單的圖片查看器源碼實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
Android中微信搶紅包插件原理解析及開(kāi)發(fā)思路
本文給大家介紹Android中微信搶紅包插件原理解析及開(kāi)發(fā)思路,對(duì)微信搶紅包插件原理相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-02-02
Android實(shí)現(xiàn)自定義滑動(dòng)式抽屜菜單效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)自定義滑動(dòng)式抽屜效果菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05
Android自定義實(shí)現(xiàn)羅盤(pán)視圖詳解
在開(kāi)發(fā)Android應(yīng)用時(shí),自定義視圖是一個(gè)非常重要的技能,本文將介紹如何創(chuàng)建一個(gè)自定義的羅盤(pán)視圖,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02
Android編程實(shí)現(xiàn)自定義系統(tǒng)菜單背景的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)自定義系統(tǒng)菜單背景的方法,涉及Android菜單menu的實(shí)現(xiàn)及背景圖片的相關(guān)操作技巧,需要的朋友可以參考下2016-01-01
Android 判斷網(wǎng)絡(luò)狀態(tài)實(shí)例詳解
這篇文章主要介紹了Android 判斷網(wǎng)絡(luò)狀態(tài)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04
android開(kāi)發(fā)設(shè)計(jì)模式之——單例模式詳解
本篇文章主要介紹了android開(kāi)發(fā)設(shè)計(jì)模式之——單例模式詳解,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11
Android開(kāi)發(fā)實(shí)現(xiàn)TextView顯示豐富的文本
這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)TextView顯示豐富的文本,涉及Android中TextView的使用技巧,需要的朋友可以參考下2015-12-12

