桌面开发,只考虑主要功能,如下敲上就可以完成简陋版本
主界面:
<intent-filter>
<action android:name="" />
<category android:name="" />
<category android:name="" />
<category android:name="" />
</intent-filter>
获取应用列表
/**
* 获取APP列表
*
* @param context 继承context
* @return
*/
public static List<AppInfo> GetAppList(Context context) {
List<AppInfo> list = new ArrayList<AppInfo>();
PackageManager pm = context.getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> activities = pm.queryIntentActivities(mainIntent, 0);
for (ResolveInfo info : activities) {
String packName = info.activityInfo.packageName;
//去掉桌面应用
if (packName.equals(context.getPackageName())) {
continue;
}
//自定义对象,包含了App的4个属性
AppInfo mInfo = new AppInfo();
mInfo.setIco(drawableToBitmap(info.activityInfo.applicationInfo.loadIcon(pm)));
mInfo.setName(info.activityInfo.applicationInfo.loadLabel(pm)
.toString());
mInfo.setPackageName(packName);
Intent launchIntent = new Intent();
launchIntent.setComponent(new ComponentName(packName,
info.activityInfo.name));
mInfo.setIntent(launchIntent);
list.add(mInfo);
}
//todo 添加自定义Activity入口
return list;
}
长按app图标应具有功能:
卸载、隐藏、更换图标、名字、打开设置详情
/**
* 唤起系统的卸载apk功能
*/
public static void UninstallApk(Context context, Activity activity, String pakename) {
try {
Uri packageURI = Uri.parse("package:" + pakename);
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
activity.startActivityForResult(uninstallIntent, 1);
} catch (Exception e) {
DeBugDialog.debug_show_dialog(context, e.toString(), TAG);
}
}
打开应用
Intent intent = getPackageManager().getLaunchIntentForPackage(appInfos.get(position).getPackageName());
if (intent != null) {
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
打开应用设置界面
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.fromParts("package", appInfos.get(position).getPackageName(), null));
startActivity(intent);