#android #android-intent #launcher #homescreen
#Android #android-намерение #лаунчер #рабочий стол
Вопрос:
Я хочу иметь возможность запускать определенную страницу на главном экране в моем приложении, есть ли какой-либо способ сделать это?
Ниже приведен типичный метод запуска главного экрана, но я ничего не вижу о добавлении экранной страницы или значения индекса.
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
Ответ №1:
Не с домашним экраном по умолчанию.
Спрятано в Launcher
источнике активности (в https://android.googlesource.com/platform/packages/apps/Launcher/ /master/src/com/android/launcher/Launcher.java#822 ) является ли этот фрагмент кода (см. строку 822):
if (!mWorkspace.isDefaultScreenShowing()) {
mWorkspace.moveToDefaultScreen();
}
Таким образом, невозможно указать конкретную страницу.
Комментарии:
1. Да, это примерно то, что я подумал из некоторых других сообщений, которые я нашел позже. Мне пришлось бы создать свой собственный лаунчер, чтобы добавить эту простую функцию. Обходной путь, о котором я подумал, заключался в том, чтобы изменить экран по умолчанию, возможно ли это? Пока я тоже не нашел никакой информации об этом. Но что я мог бы сделать, это изменить экран по умолчанию, запустить home, а затем установить его обратно. Слабое решение, но оно сделало бы то, что я хотел, я думаю
2. Ну, глядя на android.git.kernel.org/?p=platform/packages/apps / … вы заметите, что экран по умолчанию является встроенным:
mDefaultScreen = a.getInt(R.styleable.Workspace_defaultScreen, 1);
(см. строку 131). Так что вам, вероятно, не повезло, насколько это возможно. СуществуетsnapToScreen
метод, но он является закрытым для пакета, и вам, вероятно, потребуется чертовски много времени, чтобы выяснить, как отправить ему сообщение. И да, это будет работать, только если пользователь не использует пользовательское приложение для домашнего экрана.
Ответ №2:
Я не знаю способа запустить определенную «страницу» на главном экране. Я хотел ответить на это, хотя, я думаю, есть кое-что, что вы не учитываете: у пользователя может быть другое приложение, установленное в качестве домашнего. Например, я использую приложение SlideScreen в качестве своего домашнего приложения, в котором нет разных «страниц».
Я бы посоветовал поискать другой способ выполнить то, что вы хотите, если только вы не собираетесь просто использовать приложение на своем собственном устройстве и не чувствуете, что когда-либо будете использовать другое приложение в качестве домашнего.