setDefaultLauncher();
private void setDefaultLauncher() {
// get default component
boolean mFirstLaunch = false;
String packageName = "com.cyanogenmod.trebuchet";// 默认launcher包名
String className = "com.cyanogenmod.trebuchet.Launcher";// //默认launcher入口
Log.d("MyTag", "defautl packageName = " + packageName
+ ", default className = " + className);
if ((packageName != null && packageName.trim().length() > 1)
&& (className != null && className.trim().length() > 0)) {
boolean firstLaunch = SystemProperties.getBoolean(
"persist.sys.sw.firstLaunch", true); // 只做一次
// 可以注意这几个变量firstLaunch
// mFirstLaunch
Log.d("MyTag", "firstLaunch = " + firstLaunch);
if (firstLaunch) {
mFirstLaunch = true;
// do this only for the first boot
SystemProperties.set("persist.sys.sw.firstLaunch", "false");
}
Log.d("MyTag", "firstLaunch = " + firstLaunch);
if (true) {
IPackageManager pm = ActivityThread.getPackageManager();
// 清除当前默认launcher
ArrayList<IntentFilter> intentList = new ArrayList<IntentFilter>();
ArrayList<ComponentName> cnList = new ArrayList<ComponentName>();
getPackageManager().getPreferredActivities(intentList, cnList,
null);
IntentFilter dhIF;
for (int i = 0; i < cnList.size(); i++) {
dhIF = intentList.get(i);
if (dhIF.hasAction(Intent.ACTION_MAIN)
&& dhIF.hasCategory(Intent.CATEGORY_HOME)) {
getPackageManager().clearPackagePreferredActivities(
cnList.get(i).getPackageName());
}
}
// 获取所有launcher activity
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
List<ResolveInfo> list = new ArrayList<ResolveInfo>();
try {
list = pm.queryIntentActivities(intent,
intent.resolveTypeIfNeeded(getContentResolver()),
PackageManager.MATCH_DEFAULT_ONLY,
UserHandle.getCallingUserId());
} catch (RemoteException e) {
throw new RuntimeException("Package manager has died", e);
}
// get all components and the best match
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MAIN);
filter.addCategory(Intent.CATEGORY_HOME);
filter.addCategory(Intent.CATEGORY_DEFAULT);
final int N = list.size();
Log.d("MyTag", "N:::::hyhyhyhy:::: = " + N);
ComponentName[] set = new ComponentName[N];
int bestMatch = 0;
for (int i = 0; i < N; i++) {
ResolveInfo r = list.get(i);
set[i] = new ComponentName(r.activityInfo.packageName,
r.activityInfo.name);
Log.d("MyTag",
"r.activityInfo.packageName:::::hyhyhyhy:::: = "
+ r.activityInfo.packageName);
Log.d("MyTag", "r.activityInfo.name:::::hyhyhyhy:::: = "
+ r.activityInfo.name);
if (r.match > bestMatch)
bestMatch = r.match;
}
// 设置默认launcher
ComponentName launcher = new ComponentName(packageName,
className);
try {
pm.addPreferredActivity(filter, bestMatch, set, launcher,
UserHandle.getCallingUserId());
} catch (RemoteException e) {
throw new RuntimeException("Package manager has died", e);
}
}
}
}
需要 android:sharedUserId="android.uid.system"和系统签名
<uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
编译时出错误,把android源码下的系统jar包导入即可
相关推荐
win7系统设置默认网站的应用程序文档说明
大家好 今天教大家“如何设置软件的默认打开应用程序” 看我操作就行 图片也是一样 我这里没有安装其他的图片软件就不演示了 大家都学会了吧 教程结束 感谢大家的观看
主要为大家详细介绍了android Launcher3设置默认桌面应用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
C#语言编写一个软件,然后绑定对应类型的数据用当前编写的软件打开。比如写一个视频播放器OPEN.EXE,指定 的视频类型为.video。通过此方法可以绑定电脑上的.video类型文件都使用OPEN.EXE这个程序打开。
7.1 8.1 9.0 10.0 两个launcher之间切换,设置默认launcher
教你给华为手机设置第三方的默认应用,简单又好用,快来学学.mp4
Win10如何将传统照片查看器设置为默认应用?.docx
Win10正式版将传统照片查看器设置为默认应用的方法详解.docx
将win7不小心用照片查看器打开之后,修改为默认程序
《Iphone开发基础教程》第十章 应用程序设置和用户默认设置,源代码下载!具体的讲解在我的blog上面,blog.sina.com.cn/wanmeiguanjun.欢迎指点!
IE浏览器重置默认设置失败的解决办法 IE FIX 修复工具
9.0 10.0修改系统默认语言为中文,开机默认中文显示
Win8.1系统应用菜单如何设置修改默认排序-.docx
设置更改及取消默认浏览器的注册表文件,方便设置修改默认浏览器
C#设置和获取输入法一例 一个简单的C#小程序,用于设置和获取你电脑里安装的输入法,并可以更改系统默认的选项,设置输入法的启动顺序以及删除输入法等,运行截图如上所示。
用途:用于将意外设置默认应用的未知文件类型恢复至无打开方式的状态。 使用方法:https://blog.csdn.net/NXY666/article/details/121108760 注意:中途需同意获取管理员权限以及注册表导入,否则无法正常运行。
然后,将这些YAML文件添加到默认的,基于类的配置管理方案中,以简化开发过程。 完整的文档可以在这里找到: : 特征 YAML中的配置文件 分层配置搜索 基于类的应用程序默认值 从环境中提取设置 用法示例 创建一个...
7.0/8.0/9.0/10.0app在运行时都需要申请运行时权限 默认给与app所要申请的权限 不会弹出授权的申请框
Android,首次开机默认进入客户要求的桌面,代码patch