zoukankan      html  css  js  c++  java
  • Android中对已安装应用的管理实现

    获取、管理手机中已安装的所有应用信息

    1、创建应用的实体类AppInfo,属性有应用的名称、包名、图标、第一次安装时间和版本名称

    public class AppInfo {
    
        private String name ;//应用名称
        private String packageName ;//应用包名
        private Drawable icon ;//应用图标
        private long firstInstallTime ;//应用第一次安装的时间
        private String versionName ;//应用的版本名称
    
        public String getName() {
            return name;
        }
    
        public String getPackageName() {
            return packageName;
        }
    
        public Drawable getIcon() {
            return icon;
        }
    
        public long getFirstInstallTime() {
            return firstInstallTime;
        }
    
        public String getVersionName() {
            return versionName;
        }
    
        public AppInfo(String name, String packageName, Drawable icon, long firstInstallTime, String versionName) {
    
            this.name = name;
            this.packageName = packageName;
            this.icon = icon;
            this.firstInstallTime = firstInstallTime;
            this.versionName = versionName;
        }
    }
    View Code

    2、获取所有应用信息的方法

    public static List<AppInfo> getAppInfos(Context context){
            List<AppInfo> appInfoList = new ArrayList<>() ;
    
            //获取包管理器
            PackageManager pm = context.getPackageManager();
            //获取已安装的包信息
            List<PackageInfo> packageInfos = pm.getInstalledPackages(0);
    
            for(PackageInfo packageInfo : packageInfos){
                //获取包名
                String packageName = packageInfo.packageName;
                //获取应用图标
                Drawable icon = packageInfo.applicationInfo.loadIcon(pm);
                //获取应用的名称
                String name = packageInfo.applicationInfo.loadLabel(pm).toString();
                //获取第一次安装的时间
                long firstInstallTime = packageInfo.firstInstallTime;
                //获取版本号
                int versionCode = packageInfo.versionCode;
                //获取版本名称
                String versionName = packageInfo.versionName;
    
                AppInfo appInfo = new AppInfo(name,packageName,icon,firstInstallTime,versionName);
                appInfoList.add(appInfo);
            }
            return appInfoList ;
        }
    View Code

    3、打开应用方法

    public static void openApplication(Context context,String packageName) {
            Intent intent=isexit(context,packageName);
            if(intent==null){
                System.out.println("APP not found!....:"+packageName);
            }
            context.startActivity(intent);
        }
    
        /**
         * 通过packagename判断应用是否安装
         * @param context
         *
         * @return 跳转的应用主activity Intent
         * */
    
        public static Intent isexit(Context context,String pk_name){
            //获取包管理器
            PackageManager packageManager = context.getPackageManager();
            //通过包名获取Intent
            Intent it= packageManager.getLaunchIntentForPackage(pk_name);
            return it;
        }
    View Code

    4、进入应用详情页面

    public static void showInstalledAppDetails(Context context, String packageName) {
            Intent intent = new Intent();
            final int apiLevel = Build.VERSION.SDK_INT;
            if (apiLevel >= 9) { // 2.3(ApiLevel 9)以上,使用SDK提供的接口
                intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                Uri uri = Uri.fromParts("package", packageName, null);
                intent.setData(uri);
            } else { // 2.3以下,使用非公开的接口(查看InstalledAppDetails源码)
                // 2.2和2.1中,InstalledAppDetails使用的APP_PKG_NAME不同。
                final String appPkgName = (apiLevel == 8 ? "pkg"
                        : "com.android.settings.ApplicationPkgName");
                intent.setAction(Intent.ACTION_VIEW);
                intent.setClassName("com.android.settings",
                        "com.android.settings.InstalledAppDetails");
                intent.putExtra(appPkgName, packageName);
            }
            context.startActivity(intent);
        }
    View Code

    5、卸载应用

    public static void uninstallApplication(Context context,String packageName){
            Intent intent = new Intent() ;
            intent.setAction("android.intent.action.DELETE");
            intent.addCategory("android.intent.category.DEFAULT");
            intent.setData(Uri.parse("package:"+packageName));
            context.startActivity(intent);
        }
    View Code
  • 相关阅读:
    hdu 3507 Print Article —— 斜率优化DP
    bzoj 1096 仓库建设 —— 斜率优化DP
    ORDER BY 高级用法之CASE WHEN
    union和union all 的区别
    Ubuntu 链接ln的使用:创建和删除符号链接
    python中set和frozenset方法和区别
    python之sys模块详解
    odoo 8.0 多核启用
    Odoo 中的widget
    Odoo 在 Ubuntu 环境下性能调优
  • 原文地址:https://www.cnblogs.com/happy-warmth/p/10526705.html
Copyright © 2011-2022 走看看