如何动态检测我的应用程序是系统还是正常?

Vin*_*oth 10 android

如何区分系统应用程序和普通应用程序?我浏览了android PackageManager并找不到任何东西.

编辑:我想通过代码区分.

if(system app) {
  //do something
}
else{
   //do nothing
}
Run Code Online (Sandbox Code Playgroud)

小智 15

您可以尝试使用ApplicationInfo类(android.conent.pm)中提供的标志.例如:

...
PackageManager pm = getPackageManager();
List<ApplicationInfo> installedApps = pm.getInstalledApplications(0);

for (ApplicationInfo ai: installedApps) {

    if ((ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
        // System app - do something here
        ...
    } else {
        // User installed app?
    }
}
Run Code Online (Sandbox Code Playgroud)


gb9*_*b96 12

忘记PackageManager!您只询问了自己的应用程序.在Activity#onCreate(Bundle)中,您可以调用getApplicationInfo()并测试其标志,如下所示:

boolean isSystemApp = (getApplicationInfo().flags
  & (ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)) != 0;
Run Code Online (Sandbox Code Playgroud)

  • 这比接受的答案要好得多 (2认同)