studio - porque no puedo activar webview en android
Android Nougat 7.1 restablece la configuración regional después de iniciar WebView (1)
Aquí está mi solución alternativa.
Resolvimos ese problema al imponer la configuración regional de nuevo después de inicializar webView y antes de cargar contenido:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
MyApp.getApplication().switchToCzLocale();
}
Por ejemplo en WebActivity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
mWebView = (WebView) findViewById(R.id.webview);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
MyApp.getApplication().switchToCzLocale();
}
mWebView.loadData(getString(R.string.web_content), "text/html", "charset=UTF-8");
}
MyApp:
import android.app.Application;
import android.content.res.Configuration;
import java.util.Locale;
public class MyApp extends Application {
private static MyApp sApplication;
@Override
public void onCreate() {
super.onCreate();
switchToCzLocale();
sApplication = this;
}
public static MyApp getApplication() {
return sApplication;
}
public void switchToCzLocale() {
Locale mLocale = new Locale("cs","CZ");
Configuration config = getBaseContext().getResources()
.getConfiguration();
Locale.setDefault(mLocale);
config.setLocale(mLocale);
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
}
Espero que eso pueda ayudar, ''.
Todavía estoy buscando una mejor solución.
Obtuvimos un comportamiento extraño con Android N 7.1 (API-25) que después del lanzamiento de WebView, el sistema impone restablecer el entorno local a la configuración regional del dispositivo. Eso anula la configuración regional utilizada (para localización) en la aplicación. Una forma sencilla de reproducir eso es obtener una localización en la aplicación. y lanza un WebView. Entonces ya no verás contenido localizado hasta que reinicies la aplicación nuevamente. Eso sucede solo en Android-7.1 (API-25)
Así es como cambio la configuración regional que funciona en todas las API:
public void switchToCzLocale() {
Locale mLocale = new Locale("cs","CZ");// it can be any other Locale
Configuration config = getBaseContext().getResources()
.getConfiguration();
Locale.setDefault(mLocale);
config.setLocale(mLocale);
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
He cargado una muestra para reproducir ese problema con más detalles sobre:
https://github.com/mabuthraa/WebView-android7-issue
Por favor, tengan alguna idea de si este comportamiento es un error o probablemente una mala implantación del cambio de configuración regional.
Aquí está el enlace para emitir ticket en el grupo de Android: Issue 218310: [preview de desarrollador] La creación de una WebView restablece la configuración regional a los valores predeterminados del usuario