System APP 與普通 APP 不同點

在 Android 系統裏,有兩種類型的 App 存在:

一種是系統級 App ,比如打電話,發短信,拍照等等,這些 App 最明顯的特點就是 普通方法不可以卸載。

另一種是普通 App ,用戶從應用市場上下載主動安裝的 App ,這樣的 APP 可以卸載。

系統 App 和普通 App 還有很多其他重要的區別,主要體現在一下幾個方面:

1、廣播接受權限
什麼是廣播接受權限?簡單來說,在 Android 3.0 之後,Google 採取一些安全措施,對於沒有被用戶主動打開的 App 處於靜默狀態,收不到系統發送的廣播信息(各種廣播信息,開機,鎖屏,網絡變化等)。這樣防止一些病毒類的 App 主動下載後自動打開運行。在 Android 2.3 以及之前的版本沒有這個措施。
BTW,這個限制是針對普通 App 的 ,對於系統 App,即使沒有被用戶打開過,也還是可以收到各種廣播信息。

2、安裝位置的標記值
Android SDK 有開放接口獲取APP 安裝位置,系統 APP 和普通 APP 返回值不同 ,以此可以判斷 APP 是系統 APP 還是普通 APP 

獲取 安裝位置的方法


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String packageName = getPackageName();
        PackageInfo packageInfo = null;
        try {
            packageInfo = getPackageManager().getPackageInfo(packageName, 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        Log.d("isSystemApp:",isSystemApp(packageInfo)+"");
    }


    public boolean isSystemApp(PackageInfo pInfo) {
        //判斷是否是系統軟件
        return ((pInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
    }

    public boolean isUserApp(PackageInfo pInfo) {
        //是否是系統軟件或者是系統軟件正在更新
        return (!isSystemApp(pInfo) && !isSystemUpdateApp(pInfo));
    }

    public boolean isSystemUpdateApp(PackageInfo pInfo) {
        //判斷是否是軟件更新..
        return ((pInfo.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0);
    }

 

更多工具:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章