界面的分析
应用图标
应用名称
应用的存储路径(内存 还是sd卡)
应用类型(用户应用还是系统应用)
应用包名
数据进行封装如javabean
package com.example.administrator.mobilephonehousekeeper.Utils;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageInstaller;
import android.content.pm.PackageManager;
import android.widget.ListView;
import com.example.administrator.mobilephonehousekeeper.Beans.AppPackageInfo;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2017/12/24.
* 获得安装在手机上的应用的相关信息
* 图标 应用包名 应用名称 是否为系统应用 是否为sd卡应用
*/
public class ProvideAppInfos {
// 返回集合对象
public static List<AppPackageInfo> getAppInfos(Context context) {
List<AppPackageInfo> mList = null;
AppPackageInfo appPackageInfo = null;
//1 获得包管理者对象
PackageManager pm = context.getPackageManager();
//2 获得安装在手机上的应用包 返回 ListView集合 泛型 PackageInfo
List<PackageInfo> PInfos = pm.getInstalledPackages(0);
// 3 循环遍历集合 取出相关的信息 进行封装
mList = new ArrayList<>();
for (PackageInfo packageInfo : PInfos) {
appPackageInfo = new AppPackageInfo();//声明对象
appPackageInfo.setAppPacksgeName(packageInfo.packageName);// 应用包名
// 获取应用图标先调用 对象的内部类对象 在调用图标 图标与名字都在applacation节点上
appPackageInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(pm));
appPackageInfo.setAppName(packageInfo.applicationInfo.loadLabel(pm).toString());
// 系统应用 与sd卡应用的判断(用到了状态机的概念) 也是在applacation节点上
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) ==
ApplicationInfo.FLAG_SYSTEM) {
appPackageInfo.setInstalledInSystem(true);
} else {
appPackageInfo.setInstalledInSystem(false);
}
// sd卡应用的判断
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) ==
ApplicationInfo.FLAG_EXTERNAL_STORAGE) {
appPackageInfo.setInstalledInSDCard(true);
} else {
appPackageInfo.setInstalledInSDCard(true);
}
mList.add(appPackageInfo);
}
return mList;
}
}
补充:状态机
背景产生:
// 是否为系统应用(用到状态机的概念)
if ((packageInfo.applicationInfo.flags& ApplicationInfo.FLAG_SYSTEM)==ApplicationInfo.FLAG_SYSTEM){
// 与出结果 为true 判定为系统应用
}
举例:
假如在游戏中
加血 对应数字 0001
加魔法 0010
加速度 0100
加防御 1000
假如至尊钻戒 1111 四种属性都加(1111与上面的每个属性数字进行&操作得到的结果为原来的数字)
所以 魔法&至尊钻戒得到魔法
安装应用
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 问题产生背景 下载了某应用的最新版本到本地,在准备安装应用的时候,提示“应用未安装”(如图1),刚碰到时真是一脸懵...
- 很多用户发现,在安装好Win10系统后总是会自动安装一些APP应用,而这些用户本身没有操作,这是由于微软的应用推广...
- 1. Yeoman 的介绍 参考链接:http://yeoman.io/ 官网THE WEB'S SCAFFOL...
- Android应用开发中,app 卸载,有时会让用户给一些反馈意见,获取用户卸载app的原因,方便以后完善自己的产...
- 将apk上传到手机adb push /{path}/{app_name}.apk /data/local/tmp/...