最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年02月04日 08:46:45   作者:snowyeti  
這篇文章主要介紹了Android如何讓APP無法在指定的系統(tǒng)版本上運(yùn)行(實(shí)現(xiàn)方法),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

隨著市面上越來越多三方APP的出現(xiàn),某些手機(jī)廠商也開始對這些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,則會覆蓋 AndroidManifest中的值,源碼中有說明:

3、效果圖如下:

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

可以看到:

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

最后再賦值給 applicationInfo對象的:

pkg.applicationInfo.targetSdkVersion = targetSdkVersion

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

相關(guān)文章

最新評論

来宾市| 阜阳市| 冷水江市| 武隆县| 大丰市| 田阳县| 凯里市| 绿春县| 嘉义县| 游戏| 太和县| 新泰市| 井研县| 昆明市| 泌阳县| 东海县| 津南区| 新源县| 城市| 西充县| 嘉兴市| 连江县| 平阳县| 育儿| 赞皇县| 竹北市| 康马县| 蚌埠市| 洞口县| 石台县| 外汇| 龙海市| 金堂县| 五家渠市| 郁南县| 通州市| 岫岩| 柘城县| 南皮县| 漳平市| 闽侯县|