一、在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;
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。