您的位置:首页 > 移动开发 > Android开发

Android获取所有安装的应用

2014-11-17 20:39 387 查看
这两天在看一个桌面应用的源码,主要就是焦点动画,其次就是对已安装的应用进行管理。

<span style="font-size:18px;"><span style="white-space:pre"> </span>PackageManager packageManager = getPackageManager();
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);//通过</span><span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif;">Intent.ACTION_MAIN过滤出应用</span><span style="font-size:18px;">
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> allApps = packageManager.queryIntentActivities(mainIntent, 0);

Collections.sort(allApps, new Comparator<ResolveInfo>() {
@Override
public int compare(ResolveInfo lhs, ResolveInfo rhs) {
return lhs.activityInfo.name.compareToIgnoreCase(rhs.activityInfo.name);//通过应用名排序
}
});

for (int i = 0; i < allApps.size(); i++) {
System.out.println(allApps.get(i).activityInfo.packageName);
}</span>

这个仅仅是获取已安装的,还需要对正在安装或卸载的程序进行监听
// 注册广播事件
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
intentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED);
intentFilter.addAction(Intent.ACTION_PACKAGE_FULLY_REMOVED);
intentFilter.addDataScheme("package");
registerReceiver(broadcastRec, intentFilter);// 注册监听函数
public final BroadcastReceiver broadcastRec = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)
|| intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)) {

synchronized (lock) {
// 从新获取应用列表,并刷新grid界面
mHandler.sendEmptyMessage(CMD_HANDLER_LOAD_DATA);
}
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  桌面应用 应用 管理
相关文章推荐