Комментарии 42
> Каким еще способом можно закрыть приложение полностью (включая Application), кроме System.exit()?
Можно просто завершить все активити и сервисы, но тогда процесс всё равно останется висеть. Когда-то гуглил на эту тему, ничего кроме «в андроиде нельзя закрывать приложения, а если и можно, то не нужно» не нашел.
Ещё можно попробовать вот так:
Сам не пробовал, может работает.
Можно просто завершить все активити и сервисы, но тогда процесс всё равно останется висеть. Когда-то гуглил на эту тему, ничего кроме «в андроиде нельзя закрывать приложения, а если и можно, то не нужно» не нашел.
Ещё можно попробовать вот так:
android.os.Process.killProcess(android.os.Process.myPid());
Сам не пробовал, может работает.
Ну да, так и советуют делать выход-завершать активити и сервисы, но приложение остается в памяти до тех пор, пока не выгрузит его система, но в данном случае необходим полный перезапуск приложения.
Данный код вроде тоже работает, какой из них лучше использовать-не знаю…
Данный код вроде тоже работает, какой из них лучше использовать-не знаю…
Своего рода перезагрузка приложения:
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
Жалко, что в самой ОС нельзя для избранных приложений менять язык. Инерфейсы, переведенные на русский с помощью google translate, увы, не редкость.
Насчет перевода через Google Translate верно, уж лучше использовать на английском языке приложение, чем на таком «русском».
А насчет выбора в самой ОС — честно ни в одной системе такого функционала не встречал, хотя за то, что бы был такой функционал.
А насчет выбора в самой ОС — честно ни в одной системе такого функционала не встречал, хотя за то, что бы был такой функционал.
Про мобильные не в курсе, а в «большом» линуксе это не проблема:
$ LANG=«en» ran_bedli_locilaizet_app
$ LANG=«en» ran_bedli_locilaizet_app
Касательно перевода: большинство разработчиков, я думаю, примут ваши исправления в переводе и всячески будут сотрудничать для создания более качественного продукта.
Ну если им прислать перевод, то да, хотя я перевел одну игру на Андроид, подобие SimCity, но видать этот проект мертв, что ответов никаких нету на перевод…
А так верно, надо помогать переводить. «Кто, если не ты!»
А так верно, надо помогать переводить. «Кто, если не ты!»
Вслепую переводить — тоже обидно, если нет реакции. Я, например, участвую в переводе Plume с помощью сервиса crowdin.net (выбран разработчиками). Кажется вполне удобным, но минус в том, что не видно, где именно используется переводимая фраза — надо переключать телефон на английский и искать название стринги по оригинальному значению локали.
Кто ещё какие сервисы и способы локализации может посоветовать, кроме банального обмена файлами strings.xml?
Кто ещё какие сервисы и способы локализации может посоветовать, кроме банального обмена файлами strings.xml?
А нельзя разве сделать приложение которое запускает другое приложение?
Там, конечно, отдельная виртуалка под каждое приложение, и отдельный линукс процесс…
Но неужто совсем нельзя сделать такой финт, откуда-нибудь из-под рута?
Там, конечно, отдельная виртуалка под каждое приложение, и отдельный линукс процесс…
Но неужто совсем нельзя сделать такой финт, откуда-нибудь из-под рута?
Даже без рута можно запускать другие приложения через Intent, а так же брать ресурсы из других приложений.
В intent можно явно указать какое именно приолжение запустить?
Так ведь можно сделать «универсальный запускатель», который бы, например, менял системную локаль в дефолт, запускал приложение, и потом менял обратно.
Или тут есть какие-то тонкости?
Так ведь можно сделать «универсальный запускатель», который бы, например, менял системную локаль в дефолт, запускал приложение, и потом менял обратно.
Или тут есть какие-то тонкости?
Ну да, через имя пакета, например как в примере «com.example.boom.lang». насчет смены системного языка-не знаю, но это не удобно, так как Андроид-многозадачная система, а язык поменяется во всех запущенных приложениях и во всем меню, а не только в данном. Лучше все-таки в отдельно взятом приложении делать выбор языка, хотя может и есть какой хак, который позволит изменить конфигурацию приложения.
Вы описали работу с preferences screen по сути, добавив сохранение/чтение локали из своего объекта Application. Подобные вещи делаются быстро и без сложностей, а тут целая статья на эту тему. Хм.
Сохраняется настройка в xml, которая живет в папке /data/data/app_name/prefs_name.xml и редактируется по мере необходимости. На отдельную статью не тянет, ИМХО.
Если бы добавить материал какой-нибудь по теме, то да. Было бы приятно почитать, ибо по стилю написано неплохо, ну а так получилось, что получилось.
Давайте писать интересные статьи(сам грешен, но исправлюсь)
p.s. критику нужно воспринимать правильно:)
Сохраняется настройка в xml, которая живет в папке /data/data/app_name/prefs_name.xml и редактируется по мере необходимости. На отдельную статью не тянет, ИМХО.
Если бы добавить материал какой-нибудь по теме, то да. Было бы приятно почитать, ибо по стилю написано неплохо, ну а так получилось, что получилось.
Давайте писать интересные статьи(сам грешен, но исправлюсь)
p.s. критику нужно воспринимать правильно:)
Действительно получилось, что больше описано создание настроек, чем смысла темы, в следующих статьях исправлюсь.
п.с. и не буду писать по ночам..)
п.с. и не буду писать по ночам..)
Было бы хорошо, если бы в Андроиде можно было выставлять приоритет языков, по типу ua->ru->en, в соответствии с которым загружались бы локализации.
Мне кажется такое не надо, если приложение направлено на весь мир-никогда не предскажешь на каком языке будет запущено приложение, поэтому система и выбирает стандартный язык, если нет текущего, хотя стандартным в праве сделать любой язык, хотя все-таки лучше Английский.
А вот если приложение направлено например на СНГ, тогда бы неплохо выставлять приоритет русскому языку, хотя опять же его можно сделать стандартным.
А вот если приложение направлено например на СНГ, тогда бы неплохо выставлять приоритет русскому языку, хотя опять же его можно сделать стандартным.
Но, с другой стороны, я смогу выставить приоритет для языков, которые я знаю лучше. Например, я свободно владею украинским и русским, не очень — английским. Приложения предпочитаю видеть на украинском, при его отсутствии — на русском, в крайнем случае — на английском. В настройках KDE у меня на десктопе именно такой порядок языков и стоит. Если бы можно было так же сделать в Андроиде, я был бы за. И, думаю. не только я. Т.к. есть люди которые владеют 4-5+ языками.
Возможно меня неправильно поняли, я имею ввиду системную настройку, а не настройку в отдельно взятом приложении.
Тут думаю сделали получше. Есть файл с дефолтовым переводом и есть файл с русскими переводом. Если система на русском берется соответственно файл с русским переводом, иначе дефолтовый. Языков может быть много
НЛО прилетело и опубликовало эту надпись здесь
А какие официальные приложения используют самостоятельную смену языка? Если у вас аудитория — страны СНГ, имеет смысл сделать по умолчанию русский, отдельно английский и все остальные.
BP приложений на Андроид вспомню пока только приложения от Go team, например Go SMS, там есть выбор языки и они устанавливаются отдельными пакетами, а так мало приложений используют функцию смены языка, полагаясь на систему.
Пользователи даже некоторых качественных приложений (соответственно, с качественными переводами) хотят иметь возможность настройки языка, как, например, выбор языка в PowerAmp.
Но это стоит делать лишь для действительно более-менее серьёзных программ, имеющих сотни строк переводов, иначе настройка лишь будет грузить пользователя своим наличием, который наверняка ничего не выиграет от смены надписей нескольких полей и двух кнопок.
Но это стоит делать лишь для действительно более-менее серьёзных программ, имеющих сотни строк переводов, иначе настройка лишь будет грузить пользователя своим наличием, который наверняка ничего не выиграет от смены надписей нескольких полей и двух кнопок.
Честно говоря, не понимаю зачем нужно делать ручной выбор языка и ручной перезапуск. Да, конечно для некоторый приложений это может и выход, но в основной своей части можно все автоматизировать, закрепив за странами, в которых русский язык один из основных, по умолчанию русский. А остальным в свою очередь оставить английский язык. И уже в настройках программы сделать пункт «Язык», причем приложение чтобы само перезапускалось. Мы в своем приложении делали именно так.
В принципе интересный вариант, и даже лучше наверно такой, но в статье рассмотрен простейший пример, да и нагляднее так. А способ с автоматическим выбором языка уже более продвинутый, но все равно тот же метод используется.
На счет автоматического перезапуска приложения-не всегда хорошо это, например если сетевое приложение, и, допустим, идет отправка или загрузка каких-либо данных, она прервется.
п.с. А каким способом у Вас реализован полный выход из приложения? System.exit()? По идее должен быть более элегантный способ завершить полностью приложение, что бы и onTerminate() в application классе вызывался, чего не происходит при System.exit().
На счет автоматического перезапуска приложения-не всегда хорошо это, например если сетевое приложение, и, допустим, идет отправка или загрузка каких-либо данных, она прервется.
п.с. А каким способом у Вас реализован полный выход из приложения? System.exit()? По идее должен быть более элегантный способ завершить полностью приложение, что бы и onTerminate() в application классе вызывался, чего не происходит при System.exit().
С перезапуском — согласен с Вами, все зависит от самого приложения. Мы использовали System.exit() и как-то не задавались этим вопросом.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Смена языка приложения в настройках