当我更改某些权限以拒绝 Android 中的设置时,应用程序重新启动并且语言发生了变化

App restarted and the language changed when I change some permission to deny from setting in Android

我正在开发一个具有两种语言(英语-阿拉伯语)的 Android 应用程序,我的应用程序是一个包含 FragmentsActivity 我正在正确处理跨应用程序的语言更改,但是伙计们,当应用程序语言为 Arabic 然后更改任何权限以拒绝设置并再次打开应用程序时,我的应用程序正在重新启动并且应用程序语言转换为 English

我已经在 Sharedpreferences 中保存了语言,语言正确保存为阿拉伯语并且应用程序在所有情况下都运行良好,但是当将权限从设置更改为拒绝时,所有字符串都转换为英语并查看说明改变。

我试图更改 onRestart() 中的本地,但它不起作用,那么有什么解决这个问题的建议吗?

如果有帮助,我正在根据从 sharedpreference

保存的值更改 Splash screen 中的语言
 public void setLocal(String lang) {


        Resources res = this.getResources();
        Configuration conf = res.getConfiguration();
        conf.locale = new Locale(lang);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            conf.setLayoutDirection(new Locale(lang));
        }
        res.updateConfiguration(conf, res.getDisplayMetrics());
        Consts.first_lang_choose = true;
        

    }

即使在应用程序重新启动时,您也需要检查是否正确保存了语言更改。

如果您从 android 设置中撤消权限,应用会重新启动是正常的。

I'm changing the language in Splash screen

您需要在所有活动中覆盖区域设置。 Android 框架可以终止您的活动(甚至您的应用程序),然后将其恢复到 activity 原来的位置,而不是通过您的入口点 activity,例如启动画面。