Пусковая программа в намерении не работает - PullRequest
0 голосов
/ 22 октября 2018

Я могу вызвать всплывающее окно средства выбора программы запуска с кодом ниже, из которого я могу выбрать свой модуль запуска.Но в планшете huawei этот код не работает

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

Пожалуйста, помогите мне !!

1 Ответ

0 голосов
/ 22 октября 2018

Решение:

Это на самом деле возможно с небольшим обходным путем:

Создайте пустой Activity, который действует как средство запуска, называемое FakeLauncherActivity.Добавьте его в свой манифест в качестве отключенного компонента:

<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, чтобы он не отображался в списке.

Вы можете повторять это столько раз, сколько захотите, и разрешать пользователю продолжать работу только в том случае, если желаемое действие программы запуска установлено по умолчанию..

Источник: Получил Отсюда

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...