【问题标题】:Launcher chooser in intent is not working意图中的启动器选择器不起作用
【发布时间】:2018-10-22 01:27:44
【问题描述】:

我可以使用以下代码触发启动器选择器弹出窗口,我可以从中选择我的启动器。但在华为平板电脑中,此代码不起作用

Intent selector = new Intent(Intent.ACTION_MAIN);
selector.addCategory(Intent.CATEGORY_HOME); 
selector.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(selector);

请帮帮我!!

【问题讨论】:

  • 请查看我更新的解决方案。

标签: android launcher android-launcher


【解决方案1】:

解决方案:

这实际上可以通过一些解决方法来实现:

创建一个空的Activity,充当名为FakeLauncherActivity 的启动器。将其作为 disabled 组件添加到您的清单中:

<activity
    android:name="com.path.to.your.FakeLauncherActivity"
    android:enabled="false">
    <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>

检查您想要的启动器活动是否是默认活动..

如果没有,请让用户选择喜欢的启动器活动,如下所示:

public static void resetPreferredLauncherAndOpenChooser(Context context) {
    PackageManager packageManager = context.getPackageManager();
    ComponentName componentName = new ComponentName(context, com.path.to.your.FakeLauncherActivity.class);
    packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

    Intent selector = new Intent(Intent.ACTION_MAIN);
    selector.addCategory(Intent.CATEGORY_HOME);
    selector.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(selector);

    packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, PackageManager.DONT_KILL_APP);
}

此方法暂时启用FakeLauncherActivity,这会导致可用启动器活动集发生变化,从而迫使Android忘记其默认启动器。你会看到类似...

521-735/system_process I/PackageManager﹕ Result set changed, dropping preferred activity for Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 } type null

...在您的日志中。

然后该方法只需打开一个启动器意图,您可以在其中查看所有已安装的启动器和“始终”/“仅一次”按钮。 最后,该方法再次禁用FakeLauncherActivity,使其不再显示在列表中。

您可以根据需要多次重复此操作,并且只有在您所需的启动器活动设置为默认设置时才让用户继续操作。

来源:Got It From Here

【讨论】:

  • 嗨 Umang,感谢重播。上面的代码不起作用。它只会显示选择器弹出窗口。但是我需要带有“始终”和“仅一次”选项的本地启动器选择器弹出窗口,以使我的启动器成为默认值。 :(
猜你喜欢
  • 2013-08-02
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
相关资源
最近更新 更多