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

标签 android default android-homebutton

针对某些特定要求 我需要更改 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/

相关文章:

android - 在 RxJava2 中使用 flatMapIterable()

android - 在没有设备的情况下测试 cordova 插件

android - 如何在限制特定位置的android中使用google places api?

显示传递和默认 kwargs 的 python 装饰器

oracle - 如何在创建新表时默认具有其他表列值的列?

android-actionbar - 动态更改 homeAsUpIndicator

android - 在 3 个选项卡上添加图像

java - 是否有系统变量保存 Android 设备特定的低电量阈值?

android - 如何禁用我的 Android 应用程序的导航栏

Android 启动器在启动器中按主页以转到默认屏幕