android下判断一个应用app是否是系统rom集成的方法

来源:互联网 发布:对网络教育行业的看法 编辑:程序博客网 时间:2024/06/06 09:31

android下判断一个应用app是否是系统rom集成的方法:

[java] view plaincopy
  1. import android.app.Activity;  
  2. import android.content.pm.ApplicationInfo;  
  3. import android.content.pm.PackageInfo;  
  4. import android.content.pm.PackageManager.NameNotFoundException;  
  5. import android.os.Bundle;  
  6. import android.widget.TextView;  
  7.   
  8. public class AppTypeActivity extends Activity {  
  9.       
  10.     //软件类型判断软件  
  11.     //未知软件类型  
  12.     public static final int UNKNOW_APP = 0;  
  13.     //用户软件类型  
  14.     public static final int USER_APP = 1;  
  15.     //系统软件  
  16.     public static final int SYSTEM_APP = 2;  
  17.     //系统升级软件  
  18.     public static final int SYSTEM_UPDATE_APP = 4;  
  19.     //系统+升级软件  
  20.     public static final int SYSTEM_REF_APP = SYSTEM_APP | SYSTEM_UPDATE_APP;  
  21.       
  22.       
  23.     /** Called when the activity is first created. */  
  24.     @Override  
  25.     public void onCreate(Bundle savedInstanceState) {  
  26.         super.onCreate(savedInstanceState);  
  27.         setContentView(R.layout.main);  
  28.           
  29.         //要判断的包名  
  30.         String pname = "com.hiapk.marketpho";  
  31.         //在text输出的文字  
  32.         StringBuffer sb = new StringBuffer();  
  33.         sb.append(pname).append(" is: ");  
  34.           
  35.         switch (checkAppType(pname)) {  
  36.         case SYSTEM_REF_APP:  
  37.             //是系统rom集成软件  
  38.             sb.append("SYSTEM_REF_APP");  
  39.             break;  
  40.               
  41.         case USER_APP:  
  42.             //是用户安装软件  
  43.             sb.append("USER_APP");  
  44.             break;  
  45.   
  46.         default:  
  47.             //未知软件  
  48.             sb.append("UNKNOW_APP");  
  49.             break;  
  50.         }  
  51.           
  52.         TextView tv = (TextView)findViewById(R.id.textView);  
  53.         tv.setText(sb.toString());  
  54.           
  55.     }  
  56.       
  57.     /** 
  58.      * 检查app是否是系统rom集成的 
  59.      * @param pname 
  60.      * @return 
  61.      */  
  62.     private int checkAppType(String pname) {  
  63.         try {  
  64.             PackageInfo pInfo = getPackageManager().getPackageInfo(pname, 0);  
  65.             // 是系统软件或者是系统软件更新  
  66.             if (isSystemApp(pInfo) || isSystemUpdateApp(pInfo)) {  
  67.                 return SYSTEM_REF_APP;  
  68.             } else {  
  69.                 return USER_APP;  
  70.             }  
  71.   
  72.         } catch (NameNotFoundException e) {  
  73.             e.printStackTrace();  
  74.         }  
  75.         return UNKNOW_APP;  
  76.     }  
  77.       
  78.     /** 
  79.      * 是否是系统软件或者是系统软件的更新软件 
  80.      * @return 
  81.      */  
  82.     public boolean isSystemApp(PackageInfo pInfo) {  
  83.         return ((pInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);  
  84.     }  
  85.   
  86.     public boolean isSystemUpdateApp(PackageInfo pInfo) {  
  87.         return ((pInfo.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0);  
  88.     }  
  89.   
  90.     public boolean isUserApp(PackageInfo pInfo) {  
  91.         return (!isSystemApp(pInfo) && !isSystemUpdateApp(pInfo));  
  92.     }  
  93.       
  94. }  

0 0