99import android .content .pm .Signature ;
1010import android .graphics .drawable .Drawable ;
1111
12- import java .security .MessageDigest ;
13- import java .security .NoSuchAlgorithmException ;
14- import java .io .BufferedReader ;
1512import java .io .File ;
16- import java .io .IOException ;
17- import java .io .InputStreamReader ;
18- import java .io .OutputStream ;
1913import java .util .ArrayList ;
2014import java .util .Arrays ;
2115import java .util .List ;
@@ -342,6 +336,35 @@ public static int getAppVersionCode(Context context, String packageName) {
342336 }
343337 }
344338
339+ /**
340+ * 判断App是否是系统应用
341+ *
342+ * @param context 上下文
343+ * @return {@code true}: 是<br>{@code false}: 否
344+ */
345+ public static boolean isSystemApp (Context context ) {
346+ return isSystemApp (context , context .getPackageName ());
347+ }
348+
349+ /**
350+ * 判断App是否是系统应用
351+ *
352+ * @param context 上下文
353+ * @param packageName 包名
354+ * @return {@code true}: 是<br>{@code false}: 否
355+ */
356+ public static boolean isSystemApp (Context context , String packageName ) {
357+ if (StringUtils .isSpace (packageName )) return false ;
358+ try {
359+ PackageManager pm = context .getPackageManager ();
360+ ApplicationInfo ai = pm .getApplicationInfo (packageName , 0 );
361+ return ai != null && (ai .flags & ApplicationInfo .FLAG_SYSTEM ) != 0 ;
362+ } catch (PackageManager .NameNotFoundException e ) {
363+ e .printStackTrace ();
364+ }
365+ return false ;
366+ }
367+
345368 /**
346369 * 获取App签名
347370 *
@@ -397,35 +420,6 @@ public static String getAppSignatureSHA1(Context context, String packageName) {
397420 replaceAll ("(?<=[0-9A-F]{2})[0-9A-F]{2}" , ":$0" );
398421 }
399422
400- /**
401- * 判断App是否是系统应用
402- *
403- * @param context 上下文
404- * @return {@code true}: 是<br>{@code false}: 否
405- */
406- public static boolean isSystemApp (Context context ) {
407- return isSystemApp (context , context .getPackageName ());
408- }
409-
410- /**
411- * 判断App是否是系统应用
412- *
413- * @param context 上下文
414- * @param packageName 包名
415- * @return {@code true}: 是<br>{@code false}: 否
416- */
417- public static boolean isSystemApp (Context context , String packageName ) {
418- if (StringUtils .isSpace (packageName )) return false ;
419- try {
420- PackageManager pm = context .getPackageManager ();
421- ApplicationInfo ai = pm .getApplicationInfo (packageName , 0 );
422- return ai != null && (ai .flags & ApplicationInfo .FLAG_SYSTEM ) != 0 ;
423- } catch (PackageManager .NameNotFoundException e ) {
424- e .printStackTrace ();
425- }
426- return false ;
427- }
428-
429423 /**
430424 * 判断App是否处于前台
431425 *
@@ -467,13 +461,13 @@ public String getForegroundApp(Context context) {
467461 */
468462 public static class AppInfo {
469463
470- private String name ;
464+ private String name ;
471465 private Drawable icon ;
472- private String packageName ;
473- private String packagePath ;
474- private String versionName ;
475- private int versionCode ;
476- private boolean isSystem ;
466+ private String packageName ;
467+ private String packagePath ;
468+ private String versionName ;
469+ private int versionCode ;
470+ private boolean isSystem ;
477471
478472 public Drawable getIcon () {
479473 return icon ;
@@ -537,10 +531,10 @@ public void setVersionName(String versionName) {
537531 * @param packageName 包名
538532 * @param packagePath 包路径
539533 * @param versionName 版本号
540- * @param versionCode 版本Code
534+ * @param versionCode 版本码
541535 * @param isSystem 是否系统应用
542536 */
543- public AppInfo (String name , Drawable icon , String packageName , String packagePath ,
537+ public AppInfo (String packageName , String name , Drawable icon , String packagePath ,
544538 String versionName , int versionCode , boolean isSystem ) {
545539 this .setName (name );
546540 this .setIcon (icon );
@@ -551,16 +545,16 @@ public AppInfo(String name, Drawable icon, String packageName, String packagePat
551545 this .setSystem (isSystem );
552546 }
553547
554- // @Override
555- // public String toString() {
556- // return getName () + "\n"
557- // + getIcon () + "\n"
558- // + getPackageName () + "\n"
559- // + getPackagePath() + "\n"
560- // + getVersionName() + "\n"
561- // + getVersionCode() + "\n"
562- // + isSystem() + "\n"
563- // }
548+ @ Override
549+ public String toString () {
550+ return "App包名:" + getPackageName () + "\n " +
551+ "App名称:" + getName () + "\n " +
552+ "App图标:" + getIcon () + "\n " +
553+ "App路径:" + getPackagePath () + "\n " +
554+ "App版本号:" + getVersionName () + "\n " +
555+ "App版本码:" + getVersionCode () + "\n " +
556+ "是否系统App:" + isSystem () + "\n " ;
557+ }
564558 }
565559
566560 /**
@@ -603,14 +597,14 @@ public static AppInfo getAppInfo(Context context, String packageName) {
603597 private static AppInfo getBean (PackageManager pm , PackageInfo pi ) {
604598 if (pm == null || pi == null ) return null ;
605599 ApplicationInfo ai = pi .applicationInfo ;
600+ String packageName = pi .packageName ;
606601 String name = ai .loadLabel (pm ).toString ();
607602 Drawable icon = ai .loadIcon (pm );
608- String packageName = pi .packageName ;
609603 String packagePath = ai .sourceDir ;
610604 String versionName = pi .versionName ;
611605 int versionCode = pi .versionCode ;
612606 boolean isSystem = (ApplicationInfo .FLAG_SYSTEM & ai .flags ) != 0 ;
613- return new AppInfo (name , icon , packageName , packagePath , versionName , versionCode , isSystem );
607+ return new AppInfo (packageName , name , icon , packagePath , versionName , versionCode , isSystem );
614608 }
615609
616610 /**
0 commit comments