获取所有已安装程序列表
PackageManager pm =ctx.getPackageManager();
List<PackageInfo> packages = pm.getInstalledPackages(0); //获取已安装的app的基本信息
- 主要属性:
-
info = package.applicationInfo :应用信息对象
-
info.packageName :应用程序包名
-
info.applicationInfo.loadLabel(new PackageManager()).toString() :应用程序名称
-
info.sourceDir :安装路径
-
Drawable icon = info.loadIcon(pm)//图标对象
-
int flags = applicationInfo.flags//标记,也称为
状态机
,可以记录当前app的一些特性if ((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) > 0) //就认为当前app具备FLAG_EXTERNAL_STORAGE特性 if ((flags & ApplicationInfo.FLAG_SYSTEM) > 0) { //当前app具备FLAG_SYSTEM属性.就是系统程序
-
通过包名卸载应用程序
Uri packageUri = Uri.parse("package:" + currentApp.packageName);//包名,指定该应用
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageUri);
startActivityForResult(uninstallIntent, 0);
- 不能卸载系统程序,容易报错
通过包名打开一个应用程序
Intent intent = new Intent();
PackageManager pm = getPackageManager();
intent = pm.getLaunchIntentForPackage(currentApp.packageName);
startActivity(intent);
- 如果应用程序没有启动页面,例如个别系统程序,service,receiver等,此时
intent
为空,所以需要判断intent
是否为空.
调用系统分享功能
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");//分享内容的类型, 纯文本
intent.putExtra(Intent.EXTRA_TEXT, "发现一个非常不错的应用, 赶紧下载哦! 下载地址:https://play.google" +
".com/store/apps/details?id=" + currentApp.packageName);//设置分享的文本内容
startActivity(intent);
打开程序的详细信息页面
Intent infoIntent = new Intent();
infoIntent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); //设置动作过滤器,导向应用程序界面
Uri uri = Uri.fromParts("package", currentApp.packageName, null); //设置包名,需要打开的程序
infoIntent.setData(uri); //设置数据
startActivity(infoIntent);
网友评论