Android 判断包名判断是否为系统应用的方法

一、在PackageManagerService中对是否是system app的判断,具有ApplicationInfo.FLAG_SYSTEM标记的,被视为System app。

 二、测试app

package com.giada.android_demo;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {
    Context context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context = getApplicationContext();


        Log.v("android_demo","is com.giada.android_demo system app? "+isSystemApplication(context,"com.giada.android_demo"));

        Log.v("android_demo","is com.android.phone system app? "+isSystemApplication(context,"com.android.phone"));
    }

    public static boolean isSystemApplication(Context context, String packageName){
        PackageManager mPackageManager = context.getPackageManager();
        try {
            final PackageInfo packageInfo = mPackageManager.getPackageInfo(packageName, PackageManager.GET_CONFIGURATIONS);
            if((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)!=0){
                return true;
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return false;
    }
    
}

三、运行效果,可以根据包名判断是否为system app。

猜你喜欢

转载自blog.csdn.net/qq_37858386/article/details/124501617