アプリ内のボタンをクリックするだけで電話の設定を変更できるようにしたいと考えています。正確には、電話の言語を変更したいのですが。これまでのところ、値/文字列と値-iw/文字列 (ヘブライ文字列) を作成し、ボタンをクリックするだけで次のように構成を変更しました。
if (myLocale != null) {
Locale.setDefault(myLocale);
Configuration config = new Configuration();
config.locale = myLocale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
}
このコードはロケールを変更します (ロケールと言語の違いについてはよくわかりません) が、すべてのアクティビティに影響するわけではありません。したがって、アプリから電話の言語設定を直接変更しようとしましたが、うまくいきませんでした。このコードをすべてのアクティビティに影響させる方法を知っている人はいますか? または代わりに-電話の言語を変更する方法(反射??)...
明確にするために、アクティビティ B を呼び出すアクティビティ A があります (
AndroidManifest で android:launchMode="singleInstance" を使用するアクティビティがさらに多くあります)。アクティビティ BI でロケール言語を変更し、次の行でアクティビティ A に戻りました。
final Intent intent2 = new Intent(this, MainActivity.class);
startActivity(intent2.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
finish();
ロケールの変更は、アクティビティ A には影響しません (ただし、アクティビティ B を含む他のすべてのアクティビティに影響します)。アクティビティ A に影響しない理由は、アクティビティ A がまだスタックにあるためだと思います。ロケールを変更するときに、アクティビティ A に影響を与えることができませんでした。アクティビティ A にも影響を与える方法を知っている人はいますか?