常用APP的工具类,包含版本号、版本名称、安装的应用程序ICON

public class AppUtils {

    private AppUtils(){}

    /**
* 设置状态栏的颜色
* @param activity
* @param colorResId
*/
public static void setWindowStatusBarColor(Activity activity, int colorResId) {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(activity.getResources().getColor(colorResId)); //底部导航栏
//window.setNavigationBarColor(activity.getResources().getColor(colorResId));
}
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 设置Dialog状态颜色
* @param dialog
* @param colorResId
*/
public static void setWindowStatusBarColor(Dialog dialog, int colorResId) {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = dialog.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(dialog.getContext().getResources().getColor(colorResId)); //底部导航栏
//window.setNavigationBarColor(activity.getResources().getColor(colorResId));
}
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 获取包名
* @param context
* @return
*/
public static String getPackageName(Context context){
return context.getPackageName();
} /**
* 获取VersionName(版本名称)
* @param context
* @return
* 失败时返回""
*/
public static String getVersionName(Context context){
PackageManager packageManager = getPackageManager(context);
try {
PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(context), 0);
return packageInfo.versionName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return "";
} /**
* 获取VersionCode(版本号)
* @param context
* @return
* 失败时返回-1
*/
public static int getVersionCode(Context context){
PackageManager packageManager = getPackageManager(context);
try {
PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(context), 0);
return packageInfo.versionCode;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return -1;
} /**
* 获取所有安装的应用程序,不包含系统应用
* @param context
* @return
*/
public static List<PackageInfo> getInstalledPackages(Context context){
PackageManager packageManager = getPackageManager(context);
List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
List<PackageInfo> packageInfoList = new ArrayList<>();
for(int i=0; i < packageInfos.size();i++){
if ((packageInfos.get(i).applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
packageInfoList.add(packageInfos.get(i));
}
}
return packageInfoList;
} /**
* 获取应用程序的icon图标
* @param context
* @return
* 当包名错误时,返回null
*/
public static Drawable getApplicationIcon(Context context){
PackageManager packageManager = getPackageManager(context);
try {
PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(context), 0);
return packageInfo.applicationInfo.loadIcon(packageManager);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return null;
} /**
* 启动安装应用程序
* @param activity
* @param path 应用程序路径
*/
public static void installApk(Activity activity, String path){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(path)),
"application/vnd.android.package-archive");
activity.startActivity(intent);
} /**
* 获取PackageManager对象
* @param context
* @return
*/
private static PackageManager getPackageManager(Context context){
return context.getPackageManager();
}
}

最新文章

  1. OpenCv haar+SVM训练的xml检测人头位置
  2. 关于python装饰器(Decorators)最底层理解的一句话
  3. 移动API-restful的设计原则和参考
  4. Python 初学(一) 标识符
  5. python学习进阶一
  6. C# 添加,修改,删除文件夹/文件集合
  7. IKVM - 0.42.0.3 .NET平台上的Java实现
  8. 使用EndNote在Word中插入参考文献的格式设置
  9. web服务器学习4---httpd-2.4.29优化
  10. Fisher–Yates shuffle 洗牌算法
  11. Python内置函数之classmetho staticmethod
  12. 多个.txt文件合并到一个.txt文件中
  13. HBase API 基础操作
  14. Drools+springboot
  15. vue数据双向绑定
  16. 异类查询要求为连接设置ANSI_NULLS和ANSI_WARNINGS选项
  17. django时区设置 media配置 日期截断函数 上传图片管理设计方案
  18. 二、求水仙花数,打印出100-999之间所有的&quot;水仙花数&quot;
  19. 信号滤波模块verilog代码---UNLOCK,LOCK状态机方式
  20. dev-client.js-配合dev-server.js监听html文件改动也能够触发自动刷新

热门文章

  1. 如何快速实现一个command
  2. 重新认识trim,ltrim,rtrim,trailing和leading。
  3. Windows phone自定义控件(无外观控件)——FlipPanel
  4. JavaScript对象继续总结
  5. tell me one of your favorite project-练习英语
  6. 128. Longest Consecutive Sequence最长连续序列
  7. session以及分布式服务器session共享
  8. php Pthread 多线程 (一) 基本介绍
  9. 有关于mfc webbrowser插件的使用
  10. Photoshop和Halcon中的极坐标变换