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