针对某些特定要求 我需要更改 Android 默认主页应用程序 使用我自定义的 Home 应用程序(我的应用程序内的设置将切换默认主页 = 我的应用程序或以前的主页)
我不希望用户使用非常复杂的安卓设置。
任何人都可以帮我看看它在哪里注册launcher.apk作为默认值 家庭应用程序或如何更改它
我唯一能找到的就是那个老问题:How to change default Android's Desktop application?
但根本没有答案。
我在市场上看到过 HomeSwitcher 可以解决问题,但对于可能肯定很忙的开发人员没有答案。
编辑
我在网上找到了这个 http://www.mail-archive.com/android-developers@googlegroups.com/msg74167.html
但我遇到了同样的问题:
这是我的代码:
private void makePreferred() {
PackageManager pm = getPackageManager();
IntentFilter f = new IntentFilter("android.intent.action.MAIN");
f.addCategory("android.intent.category.HOME");
f.addCategory("android.intent.category.DEFAULT");
ComponentName cn = new ComponentName("com.example.android.home", "com.example.android.home.Home");
pm.addPreferredActivity(f, IntentFilter.MATCH_CATEGORY_EMPTY, null, cn);
我在 android.permission.SET_PREFERRED_APPLICATIONS
中设置了
显现。执行上面的代码后,日志声称事情有
已按预期添加(与我勾选“设为默认值”时的日志相同)
来自 IntentResolver 的列表)。但是,当我点击主页继续时,
列表仍然显示,日志显示:
INFO/PackageManager(52): Result set changed, dropping preferred
activity for Intent { act=android.intent.action.MAIN cat=
[android.intent.category.HOME] flg=0x10200000 } type null
因此,解析器似乎删除了默认条目。我在做吗 出了什么问题,或者这是一种安全措施?有什么想法 这背后?
最佳答案
我对此进行了广泛的研究,从 2.2 开始,没有办法做到这一点。唯一的方法是使用幼儿锁应用程序所做的一些黑客行为,但该应用程序最近将三星手机置于无限循环中,因此这是一种冒险的方法。
如果您查看 froyo 源代码 here packagemanager 类的,你会在 addPreferredActivity 方法中看到这个小条件:
if (getUidTargetSdkVersionLockedLP(Binder.getCallingUid())
< Build.VERSION_CODES.FROYO) {
Slog.w(TAG, "Ignoring addPreferredActivity() from uid"
+ Binder.getCallingUid());
return;
}
HomeSwitcher 在 2.2 上无法正常工作,因为它使用了这种方法,开发人员在应用页面上发表了评论“不支持 Froyo(2.2) 由于 API 更改"
关于Android:更改默认家庭应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3836215/