开发日记——手机安全卫士 Day08 2016-7-27 完成软件管家功能

Day08 2016-7-27 完成软件管家功能

public class AppInfoParser {

    public static List<AppInfo> getAppInfos(Context context){
        //得到一个包管理器。
        PackageManager pm = context.getPackageManager();
        //获取到所有安装了的应用程序的信息
        List<PackageInfo> packInfos = pm.getInstalledPackages(0);
        //实体类列表
        List<AppInfo> appinfos = new ArrayList<AppInfo>();
        for(PackageInfo packInfo:packInfos){
            AppInfo appinfo = new AppInfo();
            //包名
            String packname = packInfo.packageName;
            appinfo.packageName = packname;
            //图标
            Drawable icon = packInfo.applicationInfo.loadIcon(pm);
            appinfo. icon = icon;
            //程序名
            String appname = packInfo.applicationInfo.loadLabel(pm).toString();
            appinfo.appName = appname;
            //应用程序apk包的路径
            String apkpath = packInfo.applicationInfo.sourceDir;
            appinfo.apkPath = apkpath;
            //文明大小
            File file = new File(apkpath);
            long appSize = file.length();
            appinfo.appSize = appSize;
            //应用程序安装的位置。
            int flags = packInfo.applicationInfo.flags;
            if((ApplicationInfo.FLAG_EXTERNAL_STORAGE & flags)!=0){
                //外部存储
                appinfo.isInRoom = false;
            }else{
                //手机内存
                appinfo.isInRoom = true;
            }
            if((ApplicationInfo.FLAG_SYSTEM & flags)!=0){
                //系统应用
                appinfo.isUserApp = false;
            }else{
                //用户应用
                appinfo.isUserApp = true;
            }
            appinfos.add(appinfo);
            appinfo = null;
        }
        return appinfos;
    }
}

PackageManager的用法参见:http://www.cnblogs.com/xingfuzzhd/p/3374504.html

flag判断的原因参见:http://blog.csdn.net/Amo_te_ama_me/article/details/51082561

public class EngineUtils {

    //分享应用
    public static void shareApplication(Context context, AppInfo appInfo) {
        Intent intent = new Intent("android.intent.action.SEND");
        intent.addCategory("android.intent.category.DEFAULT");
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT, "Hi~推荐您使用一款软件,名称:" + appInfo.appName);
        context.startActivity(intent);
    }

    //开启应用
    public static void startApplication(Context context,AppInfo appInfo) {
        // 打开这个应用程序的入口activity。
        PackageManager pm = context.getPackageManager();
        Intent intent = pm.getLaunchIntentForPackage(appInfo.packageName);
        if (intent != null) {
            context.startActivity(intent);
        } else {
            Toast.makeText(context, "该应用没有启动界面", Toast.LENGTH_SHORT).show();
        }
    }

    //打开设置
    public static  void SettingAppDetail(Context context,AppInfo appInfo) {
        Intent intent = new Intent();
        intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        // dat=package:com.itheima.mobileguard
        intent.setData(Uri.parse("package:" + appInfo.packageName));
        context.startActivity(intent);
    }

    //卸载应用
    public static  void uninstallApplication(Context context,AppInfo appInfo) {
        if (appInfo.isUserApp) {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_DELETE);
            intent.setData(Uri.parse("package:" + appInfo.packageName));
            context.startActivity(intent);
        }else{
            //系统应用
            Toast.makeText(context,"您没有权限卸载此应用!",Toast.LENGTH_SHORT).show();
        }
    }
}

/**拿到手机和SD卡剩余内存*/
    private void getMemoryFromPhone() {
        long avail_sd = Environment.getExternalStorageDirectory().getFreeSpace();
        long avail_rom = Environment.getDataDirectory().getFreeSpace();
        //格式化内存
        String str_avail_sd = Formatter.formatFileSize(this, avail_sd);
        String str_avail_rom = Formatter.formatFileSize(this, avail_rom);
        mPhoneMemoryTV.setText("剩余手机内存:" + str_avail_rom);
        mSDMemoryTV.setText("剩余SD卡内存:" + str_avail_sd);
    }

应用程序管理参见:

http://blog.csdn.net/android_dong/article/details/9312813#

http://blog.csdn.net/pi9nc/article/details/12419365



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值