android - tarde - Error al cargar el mapa Error al contactar a los servidores de Google. Este es probablemente un problema de autenticación
se ha producido un error al establecer comunicacion con los servidores de google 2018 (25)
Busco todos los días y no puedo encontrar la respuesta ...
todo está listo, pero el mapa de Google todavía no se puede mostrar en el fragmento con pestaña
Compruebo que ya activo google map android v2 y right API_KEY
¡No tengo idea de que pasó!
MainActivity.java:
public class MainActivity extends FragmentActivity implements
ActionBar.TabListener {
SectionsPagerAdapter mSectionsPagerAdapter;
ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String titles[] = { this.getString(R.string.title_around),
this.getString(R.string.title_map),
this.getString(R.string.title_favorite),
this.getString(R.string.title_achievement), };
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mSectionsPagerAdapter = new SectionsPagerAdapter(
getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager
.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
for (int i = 0; i < titles.length; i++) {
actionBar.addTab(actionBar.newTab().setText(titles[i])
.setTabListener(this));
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction fragmentTransaction) {
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction) {
}
@Override
public void onTabReselected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction) {
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// TODO 在這邊決定哪個位置要給什麼 View(Fragment)
Fragment fragment = null;
// TODO 建議先在之前就初始化好 4 個 Fragment
switch (position) {
case 0:
fragment = new AroundFragment();
break;
case 1:
fragment = new MapsFragment();
break;
case 2:
fragment = new FavoriteFragment();
break;
case 3:
fragment = new AchievementFragment();
break;
default:
break;
}
return fragment;
}
@Override
public int getCount() {
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
// TODO 在這邊決定每一個 View 的 title
switch (position) {
case 0:
return getString(R.string.title_around);
case 1:
return getString(R.string.title_map);
case 2:
return getString(R.string.title_favorite);
case 3:
return getString(R.string.title_achievement);
}
return null;
}
}
}
MapsFragment.java:
public class MapsFragment extends Fragment{
static final LatLng NKUT = new LatLng(23.979548, 120.696745);
private GoogleMap map;
SupportMapFragment mMapFragment;
public MapsFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.map_fragment,container, false);
map = ((SupportMapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
mMapFragment = SupportMapFragment.newInstance();
FragmentTransaction fragmentTransaction =
getFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.map,mMapFragment);
fragmentTransaction.commit();
return rootView;
}
}
Map_fragment.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
</RelativeLayout>
Manifest.xml:
<!-- Google Map -->
<permission
android:name="com.jertt.yummymap.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.jertt.yummymap.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<!-- The following two permissions are not required to use
Google Maps Android API v2, but are recommended. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- end -->
<!-- Google Map API Key -->
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="key" />
<!-- end -->
Solución:
¡Encontré la solución!
Si usa keystore privado para aplicar API_KEY. No puede cargar e instalar la aplicación con eclipse.
¡Debe cargar el archivo .apk en su dispositivo e instalarlo!
Gracias Tarsem y srikanth gr ayuda !!
Al depurar, necesitaba agregar una clave API adicional para ~/.android/debug.keystore
¿Este almacén de claves está configurado automáticamente para usted y la contraseña es "android"?
Después de hacer todo lo que la gente decía, como verificar mi manifiesto, agregar permisos, crear una nueva clave con el sha1 en eclipse, etc. y todavía no funcionaba, lo hice:
adb uninstall com.example.hellomap
y luego corriendo a través del eclipse nuevamente. Parecía que el dispositivo no estaba obteniendo datos completamente nuevos. Espero que esto ayude.
Después de revisar una gran cantidad de casos y ejecutar con éxito los mapas, estas cosas son importantes para tener en cuenta:
- Utilice Android api 17, emulador de stand y proyecto
- Referencia los servicios de google
- Usa el soporte de Android si es necesario
- Utilice el siguiente orden en las bibliotecas: src, gen, google apis, soporte android, dependencias y bibliotecas privadas
- Usa una clave api correcta
- Borrar datos, reinstalar la aplicación.
El error para mí fue que estaba ejecutando la configuración de depuración cuando acabo de agregar la configuración de lanzamiento a Google Developers Console. Entonces, seguí estos pasos:
Obtenga el sha1 para su almacén de claves de depuración usando:
keytool -list -v -keystore ~ / .android / debug.keystore -alias androiddebugkey -storepass android -keypass android
Vaya a https://console.developers.google.com y agregue el paquete sha1 +.
Agregue su API_KEY a su archivo AndroidManifest.xml.
En IntelliJ .. si está seguro de que su clave SHA1
es correcta, no falta la API key
,
Permission
y cualquier configuración en Manifest
es correcto.
Tal vez tenga que hacer clic derecho en su Google-Play-Services-lib y compilarlo de nuevo
He hecho todas las cosas y esto funciona bien para mí.
En caso de que, si nada (arriba indicado) funciona, existe una buena posibilidad de que esté utilizando el archivo de depuración incorrecto para generar la huella dactilar. Si tiene varios archivos debug.keystore en su máquina, asegúrese de estar utilizando el debug.keystore correcto para generar la huella digital SHA1.
En mi caso, lo que funcionó es que tuve que instalarlo a través de la línea de comandos:
adb install /path/to/app/MyApp.apk
Estaba enfrentando el mismo problema en Android Studio. Los mapas de Google no se mostrarían cuando estén conectados al depurador de Android.
Lo arreglé agregando la huella digital SHA1 para el almacén de claves de depuración ubicado en ~/.android/debug.keystore
. Creo que este almacén de claves se genera por defecto (aunque no estoy seguro).
El siguiente comando en Terminal funcionó para obtener la huella digital SHA1:
keytool -list -v -keystore ~/.android/debug.keystore
Cuando solicite una contraseña, no escriba nada, solo presione intro. (Funcionó en mi caso)
Agregue esta huella digital a su clave API para aplicaciones de Android en la consola de desarrollador.
¡Aclamaciones!
Estaba enfrentando el mismo problema. He intentado varias soluciones, ninguna funcionó para mí. Lo que funcionó para mí fue generar una nueva clave API y LIMPIAR los datos del servicio Google Play en mi dispositivo.
Estuve atascado en esta pregunta durante aproximadamente una semana. Entonces comencé a usar un dispositivo real. Pero un día trato de configurar el almacén de claves de depuración de Custon (Eclipse, Ventana -> Preferencias -> Android -> Crear -> depuración de claves de Cusom) al mismo valor predeterminado. Y todos se vuelven a trabajar. Por supuesto, primero tengo una clave en la consola de Google.
Espero que esto ayude!
Había configurado muchos servicios, incluido Google Maps API v2 (no Google Maps Android API v2), que era conflictivo. Después de eliminar el servicio no deseado y generar una nueva clave, incluido en el manifiesto, instalación limpia, apareció el mapa en el dispositivo.
He solucionado el problema dando el permiso en el manifiesto
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
Lista de verificación: 1. Verifique el permiso en el Manifiesto de Android para READ_GSERVICES
<uses-permission android: name = "com.google.android.providers.gsf.permission.READ_GSERVICES" />
Borre los datos de la aplicación si ha realizado algunos cambios en el manifiesto.
Verifique debug.keystore en su carpeta .android.
Mi problema se resolvió simplemente reemplazando debug.keystore ubicado en la carpeta .android por debug.keystore de su aplicación.
Me enfrenté al mismo problema. Tengo una solución para esto, traté de crear la clave de API de depuración de diferentes cuentas de Google con el mismo nombre de paquete. Paso para eliminar el error: 1. Elimine la clave de la API no deseada con el mismo nombre de paquete en diferentes cuentas de Google. 2. Por favor, mantenga la generación de la clave Api en una sola cuenta para resolver este problema. Gracias. Prueba esto.
Mi error más extraño que he hecho hasta ahora fue obtener el código SHA1 de debug.keystore.
Pensé que no tenía contraseña, pero la contraseña era android
No estoy seguro si ayuda a alguien, pero me ayudó. Además, use un nombre de paquete completo, puede encontrarlo en el archivo de código fuente de Java. Por ejemplo, existe el mío: com.example.erikas.mapsdemo (se parece a: package com.example.erikas.mapsdemo;)
Entonces, cuando intente obtener una clave API, use una entrada como esta:
XX:XX:XX:XX:XX:17:C9:22:BB:BD:7C:87:12:83:2D:XX:XX:XX:XX:XX;com.example.erikas.mapsdemo
Así que mi propio error fue un código SHA1 incorrecto y un paquete incorrecto. Pero, afortunadamente, ¡lo descubrí después de 2 días de dolor de cabeza! :RE
Mi problema fue resuelto agregando permiso al manifiesto:
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
Muchos de estos me ayudaron, pero el problema principal fue que no tenía la firma correcta. Estoy usando Xamarin y, por lo tanto, no está integrado en el IDE, así que cuando generaba la clave usando keytool, nunca entraba en la aplicación. Tuve que agregar lo siguiente en mi archivo .csproj:
<PropertyGroup>
<AndroidKeyStore>True</AndroidKeyStore>
<AndroidSigningKeyStore>maps.keystore</AndroidSigningKeyStore>
<AndroidSigningStorePass>android</AndroidSigningStorePass>
<AndroidSigningKeyAlias>androiddebugkey</AndroidSigningKeyAlias>
<AndroidSigningKeyPass>android</AndroidSigningKeyPass>
</PropertyGroup>
Parece que tienes un problema con tu API_KEY
que se obtiene de Google API Access , así que verifica tu API_KEY
, las huellas dactilares de los certificados y el nombre del paquete.
también use esto dentro de <manifest>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" >
</uses-feature>
y también verificar: <meta-data .... >
debe estar dentro de la etiqueta <application>
PD.
1. También intente agregando el siguiente permiso
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
2. After changing API key
en AndroidManifest.xml
debe Clear Application Data
Para borrar datos de la aplicación:
Vaya a Settings>Application Manager>Select Your Application > Click on Clear Data
¡O Must Uninstall The Application
antes de installing it !
Nota No Re-install
menos que Completely Uninstall the Application
para clear its Data completely
Pasé tanto tiempo, hay demasiadas preguntas similares.
Intenté agregar mi propio permiso, el permiso WIFI_STATE, pero el problema real estaba en los datos de la aplicación.
Después de cambiar la clave de la API en manifiesto, DEBE "Borrar datos" de su aplicación (o reinstalarla por completo).
Esto me ayuda y espero que esta publicación ayude a alguien.
Pude usar la clave de depuración y cargar desde eclipse. Me faltaba el siguiente permiso en mi AndroidManifest.xml
uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"
Si tienes un problema con la autenticación, marca Logcat el nombre de tu paquete. Si usa Android Studio, consulte su build.gradle . Cuando el archivo contiene applicationIdSuffix ''.dev''
. Debería agregar .dev
al nombre de su paquete.
El nombre del paquete ei es:
com.company.main
En la consola de API escribe
... 9S.ME.DA.FE; com.company.main.dev
También me enfrenté al mismo problema, al usar Android Studio
.
He referido todas las soluciones, pero todavía no estaba funcionando.
El problema fue que changed
el package name
mi package name
después de la configuración inicial del proyecto. El cambio del nombre del paquete se reflejó en Manifest
, pero en el archivo build.gradle
, el nombre del paquete antiguo estaba allí.
Tan pronto como, he changed package name
en build.gradle, Map comienza a funcionar.
Espero que ayude a alguien.
Tengo el mismo problema, y mi problema fue que no activé el servicio en la consola:
- Vaya a la consola: https://code.google.com/apis/console/
- Ir a la sección de servicios
- Habilitar Android API de Google Maps v2
- Sigue todos los pasos en la documentacion
Todo lo que tienes que hacer es: usar la clave de depuración en tu código; desinstalar la aplicación; instala la nueva aplicación con la clave de depuración.
Yo tuve el mismo problema. Revisé los registros y se dijo "La autenticación falló en el servidor". Entonces, revisé www.console.developers.google.com y descubrí que el nombre del paquete era incorrecto. (Este nombre de paquete se escribió automáticamente) Lo escribí correctamente y todo funciona bien.