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