Локаль не меняется в подписанном apk - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть приложение для Android, которое содержит 4 языка: английский, хинди, гуджрати и маратхи.У меня есть 4 строки файла в моей папке res, и когда я запускаю код в режиме отладки непосредственно на моем устройстве, он прекрасно работает.Но когда я подписываю apk и публикую его в playstore и пытаюсь скачать, он не работает.

Это мой код для установки локали:

public class BaseActivity extends AppCompatActivity {
    public SharedPreferences sharedpreferences;
    public static final String MyPREFERENCES = "MyPrefs";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
        String lang = sharedpreferences.getString("lang","en");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! : "+lang);

        Locale locale = new Locale(lang);
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        getBaseContext().getResources().updateConfiguration(config,
                getBaseContext().getResources().getDisplayMetrics());
    }
}

Я расширяю эту BaseActivity на все виды деятельности, которые я использую.Поэтому я не могу понять, почему он работает нормально в отладке, а не в подписанном apk.

1 Ответ

0 голосов
/ 23 ноября 2018

Использовать

 getApplicationContext().getResources().updateConfiguration(config,
              getApplicationContext().getResources().getDisplayMetrics());

вместо

 getBaseContext().getResources().updateConfiguration(config,
            getBaseContext().getResources().getDisplayMetrics());

Потому что

getApplicationContext () - возвращает контекст для всех действий, запущенных в приложении.

и

getBaseContext () - если вы хотите получить доступ к контексту из другого контекста в приложении, вы можете получить к нему доступ.

...