Android:更改默认家庭应用程序

2024-03-24

对于某些特定要求 我需要更改 Android 默认主页应用程序 使用我的自定义主页应用程序(我的应用程序内的一个设置,将切换默认主页=我的应用程序或以前的主页)

我不希望用户进行非常复杂的 Android 设置。

任何人都可以帮我解决一下它在哪里注册 launcher.apk 默认情况吗 家庭应用程序或如何更改它

我唯一能找到的是那个老问题:如何更改默认的 Android 桌面应用程序? https://stackoverflow.com/questions/3204369/how-to-change-default-android-desktop-application

但根本没有答案。

我在市场上看到 HomeSwitcher 可以做到这一点,但对于可能很忙的开发人员来说没有答案。

EDIT

我在网上找到了这个http://www.mail-archive.com/[电子邮件受保护]/msg74167.html 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 http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=services/java/com/android/server/PackageManagerService.java;h=d23c16abde6e0488baffa3fd34403d0ae20394a8;hb=fdb39feedd34087c9a5c7492ca31a38ec46bc2ed在 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 更改"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:更改默认家庭应用程序 的相关文章

随机推荐