問題タブ [android-chrome]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android - Android 7.0 以降で WebView 言語が突然変更される
第一言語が英語で第二言語がアラビア語の多言語アプリがあります。
ドキュメントに記載されているように、
android:supportsRtl="true"
マニフェストに追加しました。left
およびright
属性を持つすべての xml プロパティをそれぞれ および に変更しstart
ましend
た。- アラビア語の文字列を追加しました
strings-ar
(他のリソースについても同様です)。
上記のセットアップは正常に機能します。を に変更するLocale
とar-AE
、アクティビティにアラビア語のテキストとリソースが正しく表示されます。
ただし、および/または
Activity
を使用してに移動するたびに、ロケール、テキスト、およびレイアウトの方向が突然デバイスのデフォルトに戻ります。WebView
WebViewClient
さらなるヒント:
- これは、 Android 7.0を搭載した Nexus 6P でのみ発生します。Android 6.0.1 以下ではすべて正常に動作します。
- ロケールの突然のシフトは、および/またはを含む に移動した場合にのみ発生します(そして、いくつかあります)。他のアクティビティでは発生しません。
Activity
WebView
WebViewClient
Android 7.0 ではマルチロケールがサポートされているため、ユーザーは複数のデフォルト ロケールを設定できます。したがって、プライマリロケールを次のように設定するとLocale.UK
:
次に に移動すると
WebView
、ロケールが からar-AE
に変わりますen-GB
。
Android 7.0 API の変更:
API 変更のリスト に示されているように、ロケールに関連する新しいメソッドが API 24 の次のクラスに追加されました。
Locale
:
Configuration
:
ただし、API 23 を使用してアプリを構築しており、これらの新しいメソッドは使用していません。
さらに ...
この問題は、Nexus 6P エミュレーターでも発生します。
デフォルトのロケールを取得するために、私は
Locale.getDefault()
.デフォルトのロケールを設定するために、次のコードを使用しています。
/li>
以前にこの問題に遭遇した人はいますか? その理由は何ですか?どうすれば解決できますか?
参考文献:
javascript - ユーザーが Android のネイティブ セレクターをキャンセルすると、navigator.share が解決または拒否されない
そのため、Ionic v3 PWA でnavigator.share()
( https://developers.google.com/web/updates/2016/09/navigator-share )を実装しています。
それは機能しますが、修正方法がわからない小さな問題が発生しました: navite 共有セレクターがポップアップし (ユーザーは受信トレイ、gmail、twitter などを選択できます)、ユーザーは Android の戻るボタンを押します。 (出てきたネイティブモーダルを却下する)、関数は約束の応答をトリガーしません。成功ではなく、エラーではありません。
ここでの問題は、navigator.share 関数を呼び出す前にローディング スピナーを表示し、ユーザーがその正確な瞬間に戻るボタンを押した場合、ローディング スピナーを非表示にする関数をトリガーできないことです。
これは、機能を実装するコードの一部です。
この実装では、ネイティブ共有モーダルが表示されたときにユーザーが戻るボタンを押しても、成功またはエラーはスローされません。このコードに何か問題がありますか?
.then()
次のように、関数内に別のコールバック関数を追加することも試みました.then(successFn, errorFn)
。も呼び出されることはerrorFn
ありません。
御時間ありがとうございます。-