获取android设备中全部app名称和应用包名
/**
* 获取android设备中全部app名称和应用包名
* */
public void getAllAppNames(){
ArrayList customApps = new ArrayList<PackageInfo>(); // 普通应用程序列表
ArrayList systemApps = new ArrayList<PackageInfo>(); // 系统应用程序列表
// 得到PackageManager对象
PackageManager pm=getPackageManager();
获取到所有安装了的应用程序的信息,包括那些卸载了的,但没有清除数据的应用程序
List<PackageInfo> appList=pm.getInstalledPackages(PackageManager.MATCH_UNINSTALLED_PACKAGES);
int j=0;
for (PackageInfo packageInfo : appList) {
// 列出普通应用
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {
customApps.add(packageInfo);
}
// 列出系统应用,总是感觉这里设计的有问题,希望高手指点
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) > 0) {
systemApps.add(packageInfo);
}
//得到手机上已经安装的应用的名字,即在AndriodMainfest.xml中的app_name。
String appName=packageInfo.applicationInfo.loadLabel(getPackageManager()).toString();
//得到手机上已经安装的应用的图标,即在AndriodMainfest.xml中的icon。
Drawable drawable = packageInfo.applicationInfo.loadIcon(getPackageManager());
//得到应用所在包的名字,即在AndriodMainfest.xml中的package的值。
String packageName=packageInfo.packageName;
Log.e("=======aaa", "应用的名字:"+appName);
Log.e("=======bbbb", "应用的包名字:"+packageName);
// 禁用
// pm.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0);
j++;
}
Log.e("========cccccc", "应用的总个数:"+j);
Log.e("========eeeeee", "普通应用总个数:"+customApps.size());
Log.e("========dddddd", "系统应用总个数:"+systemApps.size());
}
权限:
<uses-permission android:name="android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE"
android:protectionLevel="signatureOrSystem"/>
对App进行操作
/**
*
* 不可用状态:COMPONENT_ENABLED_STATE_DISABLED
* 可用状态:COMPONENT_ENABLED_STATE_ENABLED
* 默认状态:COMPONENT_ENABLED_STATE_DEFAULT
*
* */
private void hidenApp(){
PackageManager packageManager = getPackageManager();
ComponentName componentName = new ComponentName(this, MainActivity.class);
int res = packageManager.getComponentEnabledSetting(componentName);
if (res == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
|| res == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
// 隐藏应用图标
packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}
}
/**
*
* 不可用状态:COMPONENT_ENABLED_STATE_DISABLED
* 可用状态:COMPONENT_ENABLED_STATE_ENABLED
* 默认状态:COMPONENT_ENABLED_STATE_DEFAULT
*
* */
private void showApp(){
PackageManager packageManager = getPackageManager();
ComponentName componentName = new ComponentName(this, MainActivity.class);
int res = packageManager.getComponentEnabledSetting(componentName);
if (res == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
// 显示应用图标
packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
}