当前位置: 首页 > 面试题库 >

如何重置默认启动器/主屏幕替换?

崔宇
2023-03-14
问题内容

用户单击“主页”时,可以选择启动器,还可以选择是否将其设置为默认值。问题在于,之后很难再次更改它。

为了解决这个问题,我添加了一个“重置首选启动器”来触发:

getPackageManager().clearPackagePreferredActivities(getPackageName());

但是,此行仅在首选启动器选择了我的启动器后重置。我需要一个片段来清除首选的启动程序,因此,下次用户单击主页时,将再次获得选项。


问题答案:

这不是直接可能的,Android开发人员已声明他们不希望任何应用程序更改用户的偏好。但是,有一个基于Android如何维护这些首选项的解决方法。

使清单如下所示:

    <activity
        android:name="MyLauncherActivity"
        android:exported="true" />

    <activity-alias
        android:name="LauncherAlias1"
        android:targetActivity="MyLauncherActivity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity-alias>

    <activity-alias
        android:name="LauncherAlias2"
        android:enabled="false"
        android:targetActivity="MyLauncherActivity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity-alias>

为了简单起见,我省略了与手头任务无关的其他属性。

无论如何,清单文件如下所示,您可以使用以下代码清除默认启动器:

    PackageManager pm = getPackageManager();
    ComponentName cn1 = new ComponentName("com.mypackage", "com.mypackage.LauncherAlias1");
    ComponentName cn2 = new ComponentName("com.mypackage", "com.mypackage.LauncherAlias2");
    int dis = PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
    if(pm.getComponentEnabledSetting(cn1) == dis) dis = 3 - dis;
    pm.setComponentEnabledSetting(cn1, dis, PackageManager.DONT_KILL_APP);
    pm.setComponentEnabledSetting(cn2, 3 - dis, PackageManager.DONT_KILL_APP);

通过启用一个别名并禁用另一个别名,您会使Android感知用户的选项已更改,就好像您安装了一个启动器并卸载了另一个启动器一样。因此,将在下次他们按下主页按钮时要求用户再次选择。无论谁的启动器是当前默认启动器,此方法都有效。



 类似资料:
  • 我使用一个空活动为我的应用程序创建了一个启动屏幕,该活动在背景图像中保持可见3秒钟。通常,应用程序在背景图像变为可见之前以白色屏幕启动,然而,有些应用程序已经以“真实”的初始屏幕图像启动。如何实现这一点?

  • 安装应用程序时,如何默认启用屏幕覆盖权限。 现在我面临一些问题,当捕获图像询问运行时权限时,一些设备不允许它打开屏幕覆盖设置对话框的权限。在用户看来,他们不知道为什么对话框显示以及他们做了什么。 当打开覆盖设置屏幕时,一些应用程序会自动启用屏幕覆盖权限。 下面我使用代码。 此代码直接打开覆盖设置屏幕。所有应用程序的显示列表。 我的要求是显示权限特定的应用程序或启用覆盖权限而无需用户交互。 做需要.

  • 我已经本地化了,通过它将LaunchScreen分成两部分。

  • 问题内容: 我已经创建了自己的应用程序,并且希望该应用程序成为我的启动器。这是一个简单的应用程序,但可以运行。 是否可以用我的应用程序替换默认启动器,以便在启动后默认情况下始终启动我的应用程序? 问题答案: 在清单中设置正确的意图过滤器将提示您将其用作替换: 请参阅Google 的“ 意图和意图过滤器”文档。

  • 我想在设备重新启动后与启动通知(如消息、Viber通知、Whatsapp等)并排启动锁定屏幕活动。如何做到这一点??.我已经制作了一个广播接收器,它接收引导完成操作,然后启动一个服务,该服务再次用intent.action_screen_off和intent.action_screen_on意图过滤器注册相同的接收器,该接收器启动锁定屏幕活动。以下是我的代码: AndroidManifest.xm

  • 我必须在每节课中不断点击nvm使用v.0.11.13: -