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);
    }

更多工具:

猜你喜欢

转载自blog.csdn.net/jinshitou2012/article/details/103993176
app
今日推荐